From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id B42341B977 for ; Thu, 10 May 2018 10:07:59 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 10 May 2018 01:07:59 -0700 Message-Id: <0590c7$1k5akf@orsmga001.jf.intel.com> Date: 10 May 2018 01:07:57 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,384,1520924400"; d="scan'208";a="54700697" Received: from unknown (HELO [127.0.1.1]) ([10.240.176.154]) by orsmga001.jf.intel.com with ESMTP; 10 May 2018 01:07:57 -0700 Content-Type: multipart/alternative; boundary="===============2705843532454590656==" MIME-Version: 1.0 From: sys_stv@intel.com To: test-report@dpdk.org Cc: xinfengx.zhao@intel.com, zhaoyan.chen@intel.com, peipeix.lu@intel.com Subject: [dpdk-test-report] |FAILURE| pw37175[dpdk-dev, v1, 08/16] ethdev: flatten RSS configuration in flow API X-BeenThere: test-report@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: automatic DPDK test reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 May 2018 08:08:01 -0000 --===============2705843532454590656== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 VGVzdC1MYWJlbDogSW50ZWwtY29tcGlsYXRpb24KVGVzdC1TdGF0dXM6IEZBSUxVUkUKaHR0cDov L2RwZGsub3JnL3BhdGNoLzM3MTc1CgpfYXBwbHkgaXNzdWVzXwoKU3VibWl0dGVyOiBBZHJpZW4g TWF6YXJndWlsIDxhZHJpZW4ubWF6YXJndWlsQDZ3aW5kLmNvbT4KRGF0ZTogMjAxOC0wNC0wNCAx NTo1Njo0MwpEUERLIGdpdCBiYXNlbGluZToKCVJlcG86ZHBkay1tYXN0ZXIsIENvbW1pdElEOiA4 ZWE0MTQzODgzMmEzNjBhZWQyYjdiYTQ5ZmI3NWUzMTBhMmZmMWRjCglSZXBvOmRwZGstbmV4dC1l dmVudGRldiwgQ29tbWl0SUQ6IDY0MGIwZDFlNTEwZTExMTY5NGMyNTE0NTQ2NmYzNzg2NzQ1Mzgz N2YKCVJlcG86ZHBkay1uZXh0LW5ldCwgQ29tbWl0SUQ6IDc3NGMxODkyYzQzNGRiYTA5OTk4Y2Nj NzZiOTU2ZmViNzIyMjQ1NzEKCVJlcG86ZHBkay1uZXh0LWNyeXB0bywgQ29tbWl0SUQ6IDcyOGNh OWIwZDVhYmVhODJjZDAxZGVlNjY0NTQ1NmE5ZDU2MjE1ZjcKCVJlcG86ZHBkay1uZXh0LXZpcnRp bywgQ29tbWl0SUQ6IDAzN2MwOTk2YmM5MjczNDJmMTU3NDI2NzM5ZTBjYjYzZjJkYjg2ODkKCipS ZXBvOiBkcGRrLW1hc3RlcgpDaGVja2luZyBwYXRjaCBhcHAvdGVzdC1wbWQvY21kbGluZV9mbG93 LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Ci8qKiBTdG9yYWdlIGZvciBzdHJ1Y3Qg cnRlX2Zsb3dfYWN0aW9uX3JzcyBpbmNsdWRpbmcgZXh0ZXJuYWwgZGF0YS4gKi8Kc3RydWN0IGFj dGlvbl9yc3NfZGF0YSB7CglzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyBjb25mOwoJdWludDE2 X3QgcXVldWVbQUNUSU9OX1JTU19RVUVVRV9OVU1dOwoJc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYg cnNzX2NvbmY7Cgl1aW50OF90IHJzc19rZXlbUlNTX0hBU0hfS0VZX0xFTkdUSF07Cn07CgovKiog TWF4aW11bSBudW1iZXIgb2Ygc3Vic2VxdWVudCB0b2tlbnMgYW5kIGFyZ3VtZW50cyBvbiB0aGUg c3RhY2suICovCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBhcHAvdGVzdC1wbWQvY21kbGluZV9mbG93 LmM6MTkyCmVycm9yOiBhcHAvdGVzdC1wbWQvY21kbGluZV9mbG93LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGFwcC90ZXN0LXBtZC9jb25maWcuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCQlvZmYgPSAwOwoJCWlmIChkc3QucnNzKQoJCQkqZHN0LnJzcyA9 IChzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Jzcyl7CgkJCQkubnVtID0gc3JjLnJzcy0+bnVtLAoJ CQl9OwotLQoJCQl9CgkJCW9mZiArPSBzaXplOwoJCX0KCQlzaXplID0gb2ZmOwoKZXJyb3I6IHBh dGNoIGZhaWxlZDogYXBwL3Rlc3QtcG1kL2NvbmZpZy5jOjEwODQKZXJyb3I6IGFwcC90ZXN0LXBt ZC9jb25maWcuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZG9jL2d1aWRl cy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK Ci4uIHRhYmxlOjogUlNTCgogICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCiAgIHwgRmllbGQgICAgICAgIHwgVmFsdWUgICAgICAgICAgICAgICAgICAg ICAgICAgIHwKLS0KICAgKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tKwoKQWN0aW9uOiBgYFBGYGAKXl5eXl5eXl5eXl5eXl4KCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRvYy9ndWlkZXMvcHJvZ19ndWlkZS9ydGVfZmxvdy5yc3Q6MTMwOAplcnJvcjogZG9jL2d1 aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2LmguLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CgojaWZuZGVmIF9FMTAwMF9FVEhERVZfSF8KI2RlZmluZSBfRTEwMDBf RVRIREVWX0hfCiNpbmNsdWRlIDxydGVfdGltZS5oPgojaW5jbHVkZSA8cnRlX3BjaS5oPgoKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aGRldi5oOjQKZXJy b3I6IGRyaXZlcnMvbmV0L2UxMDAwL2UxMDAwX2V0aGRldi5oOiBwYXRjaCBkb2VzIG5vdCBhcHBs eQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZXRoZGV2LmMuLi4KZXJyb3I6 IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNkZWZpbmUgSUdCX0RFRkFVTFRfVFhfSFRIUkVTSCAgICAg IDEKI2RlZmluZSBJR0JfREVGQVVMVF9UWF9XVEhSRVNIICAgICAgKChody0+bWFjLnR5cGUgPT0g ZTEwMDBfODI1NzYpID8gMSA6IDE2KQoKI2RlZmluZSBJR0JfSEtFWV9NQVhfSU5ERVggMTAKCi8q IEJpdCBzaGlmdCBhbmQgbWFzayAqLwojZGVmaW5lIElHQl80X0JJVF9XSURUSCAgKENIQVJfQklU IC8gMikKI2RlZmluZSBJR0JfNF9CSVRfTUFTSyAgIFJURV9MRU4yTUFTSyhJR0JfNF9CSVRfV0lE VEgsIHVpbnQ4X3QpCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2Jf ZXRoZGV2LmM6NDEKZXJyb3I6IGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYzogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZTEwMDAvaWdiX2Zsb3cu Yy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglyc3MgPSAoY29uc3Qgc3RydWN0IHJ0 ZV9mbG93X2FjdGlvbl9yc3MgKilhY3QtPmNvbmY7CgoJaWYgKCFyc3MgfHwgIXJzcy0+bnVtKSB7 CgkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUwsCgkJCQlSVEVfRkxPV19FUlJPUl9U WVBFX0FDVElPTiwKCQkJCWFjdCwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2Ux MDAwL2lnYl9mbG93LmM6MTI5MgplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2Zsb3cuYzog cGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvZTEwMDAvaWdi X3J4dHguYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfQoKaW50CmlnYl9jb25maWdf cnNzX2ZpbHRlcihzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCQlzdHJ1Y3QgaWdiX3J0ZV9mbG93 X3Jzc19jb25mICpjb25mLCBib29sIGFkZCkKLS0KCXN0cnVjdCBydGVfZXRoX3Jzc19jb25mIHJz c19jb25mID0gY29uZi0+cnNzX2NvbmY7CglzdHJ1Y3QgZTEwMDBfZmlsdGVyX2luZm8gKmZpbHRl cl9pbmZvID0KCQlFMTAwMF9ERVZfUFJJVkFURV9UT19GSUxURVJfSU5GTyhkZXYtPmRhdGEtPmRl dl9wcml2YXRlKTsKCXN0cnVjdCBlMTAwMF9odyAqaHcgPSBFMTAwMF9ERVZfUFJJVkFURV9UT19I VyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L2UxMDAwL2lnYl9yeHR4LmM6Mjc1OQplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvaWdiX3J4 dHguYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaTQw ZS9pNDBlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgojaW5jbHVkZSA8 aW50dHlwZXMuaD4KI2luY2x1ZGUgPGFzc2VydC5oPgoKI2luY2x1ZGUgPHJ0ZV9lYWwuaD4KI2lu Y2x1ZGUgPHJ0ZV9zdHJpbmdfZm5zLmg+CiNpbmNsdWRlIDxydGVfcGNpLmg+CgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmM6MTEKZXJyb3I6IGRyaXZl cnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgojaWZuZGVmIF9JNDBFX0VUSERFVl9IXwojZGVmaW5lIF9JNDBFX0VUSERFVl9I XwoKI2luY2x1ZGUgPHJ0ZV9ldGhfY3RybC5oPgojaW5jbHVkZSA8cnRlX3RpbWUuaD4KLS0KCiNk ZWZpbmUgSTQwRV9WTEFOX1RBR19TSVpFICAgICAgICA0CgojZGVmaW5lIEk0MEVfQVFfTEVOICAg ICAgICAgICAgICAgMzIKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2k0MGUvaTQw ZV9ldGhkZXYuaDo1CmVycm9yOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2Lmg6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9mbG93 LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgoJaWYgKGFjdGlvbl9mbGFnKSB7CgkJ Zm9yIChuID0gMDsgbiA8IDY0OyBuKyspIHsKCQkJaWYgKHJzcy0+cnNzX2NvbmYtPnJzc19oZiAm IChoZl9iaXQgPDwgbikpIHsKCQkJCWNvbmZfaW5mby0+cmVnaW9uWzBdLmh3X2Zsb3d0eXBlWzBd ID0gbjsKCQkJCWNvbmZfaW5mby0+cmVnaW9uWzBdLmZsb3d0eXBlX251bSA9IDE7CgkJCQljb25m X2luZm8tPnF1ZXVlX3JlZ2lvbl9udW1iZXIgPSAxOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvaTQwZS9pNDBlX2Zsb3cuYzo0MjA1CmVycm9yOiBkcml2ZXJzL25ldC9pNDBlL2k0 MGVfZmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9peGdiZS9peGdiZV9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNk ZWZpbmUgSVhHQkVfUVVFVUVfU1RBVF9DT1VOVEVSUyAoc2l6ZW9mKGh3X3N0YXRzLT5xcHJjKSAv IHNpemVvZihod19zdGF0cy0+cXByY1swXSkpCgojZGVmaW5lIElYR0JFX0hLRVlfTUFYX0lOREVY IDEwCgovKiBBZGRpdGlvbmFsIHRpbWVzeW5jIHZhbHVlcy4gKi8KI2RlZmluZSBOU0VDX1BFUl9T RUMgICAgICAgICAgICAgMTAwMDAwMDAwMEwKI2RlZmluZSBJWEdCRV9JTkNWQUxfMTBHQiAgICAg ICAgMHg2NjY2NjY2NgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaXhnYmUvaXhn YmVfZXRoZGV2LmM6MTAwCmVycm9yOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzog cGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhn YmVfZXRoZGV2LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgojaWZuZGVmIF9JWEdC RV9FVEhERVZfSF8KI2RlZmluZSBfSVhHQkVfRVRIREVWX0hfCiNpbmNsdWRlICJiYXNlL2l4Z2Jl X3R5cGUuaCIKI2luY2x1ZGUgImJhc2UvaXhnYmVfZGNiLmgiCiNpbmNsdWRlICJiYXNlL2l4Z2Jl X2RjYl84MjU5OS5oIgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaXhnYmUvaXhn YmVfZXRoZGV2Lmg6NAplcnJvcjogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZXRoZGV2Lmg6IHBh dGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2Jl X2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglyc3MgPSAoY29uc3Qgc3Ry dWN0IHJ0ZV9mbG93X2FjdGlvbl9yc3MgKilhY3QtPmNvbmY7CgoJaWYgKCFyc3MgfHwgIXJzcy0+ bnVtKSB7CgkJcnRlX2Zsb3dfZXJyb3Jfc2V0KGVycm9yLCBFSU5WQUwsCgkJCQlSVEVfRkxPV19F UlJPUl9UWVBFX0FDVElPTiwKCQkJCWFjdCwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L2l4Z2JlL2l4Z2JlX2Zsb3cuYzoyNzYxCmVycm9yOiBkcml2ZXJzL25ldC9peGdiZS9peGdi ZV9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0 L2l4Z2JlL2l4Z2JlX3J4dHguYy4uLgpIdW5rICMxIHN1Y2NlZWRlZCBhdCA1NzEwIChvZmZzZXQg MTg4IGxpbmVzKS4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6Cgl1aW50MTZfdCBqOwoJdWlu dDE2X3Qgc3BfcmV0YV9zaXplOwoJdWludDMyX3QgcmV0YV9yZWc7CglzdHJ1Y3QgcnRlX2V0aF9y c3NfY29uZiByc3NfY29uZiA9IGNvbmYtPnJzc19jb25mOwoJc3RydWN0IGl4Z2JlX2ZpbHRlcl9p bmZvICpmaWx0ZXJfaW5mbyA9CgkJSVhHQkVfREVWX1BSSVZBVEVfVE9fRklMVEVSX0lORk8oZGV2 LT5kYXRhLT5kZXZfcHJpdmF0ZSk7CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv aXhnYmUvaXhnYmVfcnh0eC5jOjU1MzEKZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX3J4 dHguYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4 NC9tbHg0LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCSAgICAgIiBmb3IgVURQ IFJTUyBhbmQgaW5uZXIgVlhMQU4gUlNTIik7CgkJCS8qIEZha2Ugc3VwcG9ydCBmb3IgYWxsIHBv c3NpYmxlIFJTUyBoYXNoIGZpZWxkcy4gKi8KCQkJcHJpdi0+aHdfcnNzX3N1cCA9IH5VSU5UNjRf QygwKTsKCQkJcHJpdi0+aHdfcnNzX3N1cCA9IG1seDRfY29udl9yc3NfaGYocHJpdiwgLTEpOwoJ CQkvKiBGaWx0ZXIgb3V0IGtub3duIHVuc3VwcG9ydGVkIGZpZWxkcy4gKi8KCQkJcHJpdi0+aHdf cnNzX3N1cCAmPQoJCQkJfih1aW50NjRfdCkoSUJWX1JYX0hBU0hfU1JDX1BPUlRfVURQIHwKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NC5jOjU2OQplcnJvcjogZHJp dmVycy9uZXQvbWx4NC9tbHg0LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNo IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6Cn07CgovKioKICogQ29udmVydCBEUERLIFJTUyBoYXNoIGZpZWxkcyB0byB0aGVpciBWZXJi cyBlcXVpdmFsZW50LgogKgotLQptbHg0X2NvbnZfcnNzX2hmKHN0cnVjdCBwcml2ICpwcml2LCB1 aW50NjRfdCByc3NfaGYpCnsKCWVudW0geyBJUFY0LCBJUFY2LCBUQ1AsIFVEUCwgfTsKCWNvbnN0 IHVpbnQ2NF90IGluW10gPSB7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg0 L21seDRfZmxvdy5jOjc2CmVycm9yOiBkcml2ZXJzL25ldC9tbHg0L21seDRfZmxvdy5jOiBwYXRj aCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0L21seDRfZmxv dy5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKLyogbWx4NF9mbG93LmMgKi8KCnVp bnQ2NF90IG1seDRfY29udl9yc3NfaGYoc3RydWN0IHByaXYgKnByaXYsIHVpbnQ2NF90IHJzc19o Zik7CmludCBtbHg0X2Zsb3dfc3luYyhzdHJ1Y3QgcHJpdiAqcHJpdiwgc3RydWN0IHJ0ZV9mbG93 X2Vycm9yICplcnJvcik7CnZvaWQgbWx4NF9mbG93X2NsZWFuKHN0cnVjdCBwcml2ICpwcml2KTsK aW50IG1seDRfZmlsdGVyX2N0cmwoc3RydWN0IHJ0ZV9ldGhfZGV2ICpkZXYsCgplcnJvcjogcGF0 Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg0L21seDRfZmxvdy5oOjQ3CmVycm9yOiBkcml2ZXJz L25ldC9tbHg0L21seDRfZmxvdy5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9tbHg0L21seDRfcnhxLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBm b3I6CiAqLwpzdHJ1Y3QgbWx4NF9yc3MgKgptbHg0X3Jzc19nZXQoc3RydWN0IHByaXYgKnByaXYs IHVpbnQ2NF90IGZpZWxkcywKCSAgICAgdWludDhfdCBrZXlbTUxYNF9SU1NfSEFTSF9LRVlfU0la RV0sCgkgICAgIHVpbnQxNl90IHF1ZXVlcywgY29uc3QgdWludDE2X3QgcXVldWVfaWRbXSkKewoJ c3RydWN0IG1seDRfcnNzICpyc3M7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9t bHg0L21seDRfcnhxLmM6ODgKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHEuYzogcGF0 Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NC9tbHg0X3J4 dHguaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKaW50IG1seDRfcnNzX2luaXQoc3Ry dWN0IHByaXYgKnByaXYpOwp2b2lkIG1seDRfcnNzX2RlaW5pdChzdHJ1Y3QgcHJpdiAqcHJpdik7 CnN0cnVjdCBtbHg0X3JzcyAqbWx4NF9yc3NfZ2V0KHN0cnVjdCBwcml2ICpwcml2LCB1aW50NjRf dCBmaWVsZHMsCgkJCSAgICAgIHVpbnQ4X3Qga2V5W01MWDRfUlNTX0hBU0hfS0VZX1NJWkVdLAoJ CQkgICAgICB1aW50MTZfdCBxdWV1ZXMsIGNvbnN0IHVpbnQxNl90IHF1ZXVlX2lkW10pOwp2b2lk IG1seDRfcnNzX3B1dChzdHJ1Y3QgbWx4NF9yc3MgKnJzcyk7CmludCBtbHg0X3Jzc19hdHRhY2go c3RydWN0IG1seDRfcnNzICpyc3MpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv bWx4NC9tbHg0X3J4dHguaDoxMjYKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHR4Lmg6 IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDUvbWx4 NV9mbG93LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglUQUlMUV9FTlRSWShydGVf ZmxvdykgbmV4dDsgLyoqPCBQb2ludGVyIHRvIHRoZSBuZXh0IGZsb3cgc3RydWN0dXJlLiAqLwoJ dWludDMyX3QgbWFyazoxOyAvKio8IFNldCBpZiB0aGUgZmxvdyBpcyBtYXJrZWQuICovCgl1aW50 MzJfdCBkcm9wOjE7IC8qKjwgRHJvcCBxdWV1ZS4gKi8KCXVpbnQxNl90IHF1ZXVlc19uOyAvKio8 IE51bWJlciBvZiBlbnRyaWVzIGluIHF1ZXVlW10uICovCgl1aW50MTZfdCAoKnF1ZXVlcylbXTsg LyoqPCBRdWV1ZXMgaW5kZXhlcyB0byB1c2UuICovCglzdHJ1Y3QgcnRlX2V0aF9yc3NfY29uZiBy c3NfY29uZjsgLyoqPCBSU1MgY29uZmlndXJhdGlvbiAqLwoJdWludDhfdCByc3Nfa2V5WzQwXTsg LyoqPCBjb3B5IG9mIHRoZSBSU1Mga2V5LiAqLwoJc3RydWN0IGlidl9jb3VudGVyX3NldCAqY3M7 IC8qKjwgSG9sZHMgdGhlIGNvdW50ZXJzIGZvciB0aGUgcnVsZS4gKi8KCXN0cnVjdCBtbHg1X2Zs b3dfY291bnRlcl9zdGF0cyBjb3VudGVyX3N0YXRzOy8qKjxUaGUgY291bnRlciBzdGF0cy4gKi8K CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmM6MjE0CmVy cm9yOiBkcml2ZXJzL25ldC9tbHg1L21seDVfZmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg1L21seDVfcnhxLmMuLi4KZXJyb3I6IHdoaWxl IHNlYXJjaGluZyBmb3I6CiAqICAgVGhlIFZlcmJzIG9iamVjdCBpbml0aWFsaXNlZCwgTlVMTCBv dGhlcndpc2UgYW5kIHJ0ZV9lcnJubyBpcyBzZXQuCiAqLwpzdHJ1Y3QgbWx4NV9pbmRfdGFibGVf aWJ2ICoKbWx4NV9pbmRfdGFibGVfaWJ2X25ldyhzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwgdWlu dDE2X3QgcXVldWVzW10sCgkJICAgICAgIHVpbnQxNl90IHF1ZXVlc19uKQp7CglzdHJ1Y3QgcHJp diAqcHJpdiA9IGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGU7CglzdHJ1Y3QgbWx4NV9pbmRfdGFibGVf aWJ2ICppbmRfdGJsOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NS9tbHg1 X3J4cS5jOjEyMTgKZXJyb3I6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYzogcGF0Y2ggZG9l cyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4dHguaC4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCUxJU1RfRU5UUlkobWx4NV9pbmRfdGFibGVf aWJ2KSBuZXh0OyAvKiBQb2ludGVyIHRvIHRoZSBuZXh0IGVsZW1lbnQuICovCglydGVfYXRvbWlj MzJfdCByZWZjbnQ7IC8qIFJlZmVyZW5jZSBjb3VudGVyLiAqLwoJc3RydWN0IGlidl9yd3FfaW5k X3RhYmxlICppbmRfdGFibGU7IC8qKjwgSW5kaXJlY3Rpb24gdGFibGUuICovCgl1aW50MTZfdCBx dWV1ZXNfbjsgLyoqPCBOdW1iZXIgb2YgcXVldWVzIGluIHRoZSBsaXN0LiAqLwoJdWludDE2X3Qg cXVldWVzW107IC8qKjwgUXVldWUgbGlzdC4gKi8KfTsKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBk cml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oOjEzNAplcnJvcjogZHJpdmVycy9uZXQvbWx4NS9t bHg1X3J4dHguaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvc2ZjL3NmY19mbG93LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CglzdHJ1Y3Qg c2ZjX3J4cSAqcnhxOwoJdW5zaWduZWQgaW50IHJ4cV9od19pbmRleF9taW47Cgl1bnNpZ25lZCBp bnQgcnhxX2h3X2luZGV4X21heDsKCWNvbnN0IHN0cnVjdCBydGVfZXRoX3Jzc19jb25mICpyc3Nf Y29uZiA9IHJzcy0+cnNzX2NvbmY7Cgl1aW50NjRfdCByc3NfaGY7Ci0tCglpZiAocnNzLT5udW0g PT0gMCkKCQlyZXR1cm4gLUVJTlZBTDsKCglyeHFfc3dfaW5kZXggPSBzYS0+cnhxX2NvdW50IC0g MTsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3NmYy9zZmNfZmxvdy5jOjEyMzUK ZXJyb3I6IGRyaXZlcnMvbmV0L3NmYy9zZmNfZmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC90YXAvdGFwX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUg c2VhcmNoaW5nIGZvcjoKCQkJCWlmIChlcnIpCgkJCQkJZ290byBleGl0X2FjdGlvbl9ub3Rfc3Vw cG9ydGVkOwoJCQl9CgkJCWlmIChmbG93ICYmIHJzcykKCQkJCWVyciA9IHJzc19hZGRfYWN0aW9u cyhmbG93LCBwbWQsIHJzcywgZXJyb3IpOwoJCX0gZWxzZSB7CgkJCWdvdG8gZXhpdF9hY3Rpb25f bm90X3N1cHBvcnRlZDsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L3RhcC90YXBf Zmxvdy5jOjEyMTUKZXJyb3I6IGRyaXZlcnMvbmV0L3RhcC90YXBfZmxvdy5jOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBleGFtcGxlcy9pcHNlYy1zZWNndy9pcHNlYy5jLi4u CmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJICAgICBpIDwgZXRoX2Rldi0+ZGF0YS0+ bmJfcnhfcXVldWVzOyArK2kpCgkJCQkJaWYgKGV0aF9kZXYtPmRhdGEtPnJ4X3F1ZXVlc1tpXSkK CQkJCQkJcXVldWVbaisrXSA9IGk7CgkJCQlhY3Rpb25fcnNzLnJzc19jb25mID0gJnJzc19jb25m OwoJCQkJYWN0aW9uX3Jzcy5udW0gPSBqOwoJCQkJYWN0aW9uX3Jzcy5xdWV1ZSA9IHF1ZXVlOwoJ CQkJcmV0ID0gcnRlX2Zsb3dfdmFsaWRhdGUoc2EtPnBvcnRpZCwgJnNhLT5hdHRyLAoJCQkJCQkJ c2EtPnBhdHRlcm4sIHNhLT5hY3Rpb24sCgkJCQkJCQkmZXJyKTsKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmM6MjAyCmVycm9yOiBleGFtcGxlcy9pcHNl Yy1zZWNndy9pcHNlYy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBsaWIv bGlicnRlX2V0aGVyL3J0ZV9mbG93LmMuLi4KZXJyb3I6IGxpYi9saWJydGVfZXRoZXIvcnRlX2Zs b3cuYzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQpDaGVja2luZyBwYXRjaCBsaWIvbGlicnRl X2V0aGVyL3J0ZV9mbG93LmguLi4KZXJyb3I6IGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cuaDog Tm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQoqUmVwbzogZHBkay1uZXh0LWV2ZW50ZGV2CkNoZWNr aW5nIHBhdGNoIGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKLyoqIFN0b3JhZ2UgZm9yIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzIGlu Y2x1ZGluZyBleHRlcm5hbCBkYXRhLiAqLwpzdHJ1Y3QgYWN0aW9uX3Jzc19kYXRhIHsKCXN0cnVj dCBydGVfZmxvd19hY3Rpb25fcnNzIGNvbmY7Cgl1aW50MTZfdCBxdWV1ZVtBQ1RJT05fUlNTX1FV RVVFX05VTV07CglzdHJ1Y3QgcnRlX2V0aF9yc3NfY29uZiByc3NfY29uZjsKCXVpbnQ4X3QgcnNz X2tleVtSU1NfSEFTSF9LRVlfTEVOR1RIXTsKfTsKCi8qKiBNYXhpbXVtIG51bWJlciBvZiBzdWJz ZXF1ZW50IHRva2VucyBhbmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4gKi8KCmVycm9yOiBwYXRj aCBmYWlsZWQ6IGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYzoxOTIKZXJyb3I6IGFwcC90ZXN0 LXBtZC9jbWRsaW5lX2Zsb3cuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2gg YXBwL3Rlc3QtcG1kL2NvbmZpZy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCW9m ZiA9IDA7CgkJaWYgKGRzdC5yc3MpCgkJCSpkc3QucnNzID0gKHN0cnVjdCBydGVfZmxvd19hY3Rp b25fcnNzKXsKCQkJCS5udW0gPSBzcmMucnNzLT5udW0sCgkJCX07Ci0tCgkJCX0KCQkJb2ZmICs9 IHNpemU7CgkJfQoJCXNpemUgPSBvZmY7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBhcHAvdGVzdC1w bWQvY29uZmlnLmM6MTA4NAplcnJvcjogYXBwL3Rlc3QtcG1kL2NvbmZpZy5jOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cu cnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKLi4gdGFibGU6OiBSU1MKCiAgICst LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBGaWVs ZCAgICAgICAgfCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfAotLQogICArLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgpBY3Rpb246IGBgUEZg YApeXl5eXl5eXl5eXl5eXgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9wcm9nX2d1 aWRlL3J0ZV9mbG93LnJzdDoxMzA4CmVycm9yOiBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zs b3cucnN0OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9l MTAwMC9lMTAwMF9ldGhkZXYuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNpZm5k ZWYgX0UxMDAwX0VUSERFVl9IXwojZGVmaW5lIF9FMTAwMF9FVEhERVZfSF8KI2luY2x1ZGUgPHJ0 ZV90aW1lLmg+CiNpbmNsdWRlIDxydGVfcGNpLmg+CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2Lmg6NAplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAv ZTEwMDBfZXRoZGV2Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZl cnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK I2RlZmluZSBJR0JfREVGQVVMVF9UWF9IVEhSRVNIICAgICAgMQojZGVmaW5lIElHQl9ERUZBVUxU X1RYX1dUSFJFU0ggICAgICAoKGh3LT5tYWMudHlwZSA9PSBlMTAwMF84MjU3NikgPyAxIDogMTYp CgojZGVmaW5lIElHQl9IS0VZX01BWF9JTkRFWCAxMAoKLyogQml0IHNoaWZ0IGFuZCBtYXNrICov CiNkZWZpbmUgSUdCXzRfQklUX1dJRFRIICAoQ0hBUl9CSVQgLyAyKQojZGVmaW5lIElHQl80X0JJ VF9NQVNLICAgUlRFX0xFTjJNQVNLKElHQl80X0JJVF9XSURUSCwgdWludDhfdCkKCmVycm9yOiBw YXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYzo0MQplcnJvcjogZHJp dmVycy9uZXQvZTEwMDAvaWdiX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFy Y2hpbmcgZm9yOgoKCXJzcyA9IChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyAqKWFj dC0+Y29uZjsKCglpZiAoIXJzcyB8fCAhcnNzLT5udW0pIHsKCQlydGVfZmxvd19lcnJvcl9zZXQo ZXJyb3IsIEVJTlZBTCwKCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJYWN0LAoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2Zsb3cuYzoxMjkyCmVy cm9yOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgp9CgppbnQKaWdiX2NvbmZpZ19yc3NfZmlsdGVyKHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LAoJCXN0cnVjdCBpZ2JfcnRlX2Zsb3dfcnNzX2NvbmYgKmNvbmYsIGJvb2wg YWRkKQotLQoJc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgcnNzX2NvbmYgPSBjb25mLT5yc3NfY29u ZjsKCXN0cnVjdCBlMTAwMF9maWx0ZXJfaW5mbyAqZmlsdGVyX2luZm8gPQoJCUUxMDAwX0RFVl9Q UklWQVRFX1RPX0ZJTFRFUl9JTkZPKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwoJc3RydWN0IGUx MDAwX2h3ICpodyA9IEUxMDAwX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZh dGUpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX3J4dHguYzoy NzU5CmVycm9yOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmMuLi4KZXJy b3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8 YXNzZXJ0Lmg+CgojaW5jbHVkZSA8cnRlX2VhbC5oPgojaW5jbHVkZSA8cnRlX3N0cmluZ19mbnMu aD4KI2luY2x1ZGUgPHJ0ZV9wY2kuaD4KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L2k0MGUvaTQwZV9ldGhkZXYuYzoxMQplcnJvcjogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRl di5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBl L2k0MGVfZXRoZGV2LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpZm5kZWYgX0k0 MEVfRVRIREVWX0hfCiNkZWZpbmUgX0k0MEVfRVRIREVWX0hfCgojaW5jbHVkZSA8cnRlX2V0aF9j dHJsLmg+CiNpbmNsdWRlIDxydGVfdGltZS5oPgotLQoKI2RlZmluZSBJNDBFX1ZMQU5fVEFHX1NJ WkUgICAgICAgIDQKCiNkZWZpbmUgSTQwRV9BUV9MRU4gICAgICAgICAgICAgICAzMgoKZXJyb3I6 IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oOjUKZXJyb3I6IGRy aXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvaTQwZS9pNDBlX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKCglpZiAoYWN0aW9uX2ZsYWcpIHsKCQlmb3IgKG4gPSAwOyBuIDwgNjQ7IG4r KykgewoJCQlpZiAocnNzLT5yc3NfY29uZi0+cnNzX2hmICYgKGhmX2JpdCA8PCBuKSkgewoJCQkJ Y29uZl9pbmZvLT5yZWdpb25bMF0uaHdfZmxvd3R5cGVbMF0gPSBuOwoJCQkJY29uZl9pbmZvLT5y ZWdpb25bMF0uZmxvd3R5cGVfbnVtID0gMTsKCQkJCWNvbmZfaW5mby0+cXVldWVfcmVnaW9uX251 bWJlciA9IDE7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZmxv dy5jOjQyMDUKZXJyb3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9mbG93LmM6IHBhdGNoIGRvZXMg bm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5j Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKI2RlZmluZSBJWEdCRV9RVUVVRV9TVEFU X0NPVU5URVJTIChzaXplb2YoaHdfc3RhdHMtPnFwcmMpIC8gc2l6ZW9mKGh3X3N0YXRzLT5xcHJj WzBdKSkKCiNkZWZpbmUgSVhHQkVfSEtFWV9NQVhfSU5ERVggMTAKCi8qIEFkZGl0aW9uYWwgdGlt ZXN5bmMgdmFsdWVzLiAqLwojZGVmaW5lIE5TRUNfUEVSX1NFQyAgICAgICAgICAgICAxMDAwMDAw MDAwTAojZGVmaW5lIElYR0JFX0lOQ1ZBTF8xMEdCICAgICAgICAweDY2NjY2NjY2CgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzoxMDAKZXJyb3I6 IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaC4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNpZm5kZWYgX0lYR0JFX0VUSERFVl9IXwojZGVmaW5lIF9J WEdCRV9FVEhERVZfSF8KI2luY2x1ZGUgImJhc2UvaXhnYmVfdHlwZS5oIgojaW5jbHVkZSAiYmFz ZS9peGdiZV9kY2IuaCIKI2luY2x1ZGUgImJhc2UvaXhnYmVfZGNiXzgyNTk5LmgiCgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaDo0CmVycm9yOiBk cml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hl Y2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZmxvdy5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoKCXJzcyA9IChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Jz cyAqKWFjdC0+Y29uZjsKCglpZiAoIXJzcyB8fCAhcnNzLT5udW0pIHsKCQlydGVfZmxvd19lcnJv cl9zZXQoZXJyb3IsIEVJTlZBTCwKCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJ YWN0LAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZmxvdy5j OjI3NjEKZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2Zsb3cuYzogcGF0Y2ggZG9lcyBu b3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcnh0eC5jLi4u Ckh1bmsgIzEgc3VjY2VlZGVkIGF0IDU3MTAgKG9mZnNldCAxODggbGluZXMpLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCXVpbnQxNl90IGo7Cgl1aW50MTZfdCBzcF9yZXRhX3NpemU7Cgl1 aW50MzJfdCByZXRhX3JlZzsKCXN0cnVjdCBydGVfZXRoX3Jzc19jb25mIHJzc19jb25mID0gY29u Zi0+cnNzX2NvbmY7CglzdHJ1Y3QgaXhnYmVfZmlsdGVyX2luZm8gKmZpbHRlcl9pbmZvID0KCQlJ WEdCRV9ERVZfUFJJVkFURV9UT19GSUxURVJfSU5GTyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsK CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9yeHR4LmM6NTUz MQplcnJvcjogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcnh0eC5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0L21seDQuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCQkJICAgICAiIGZvciBVRFAgUlNTIGFuZCBpbm5lciBWWExBTiBS U1MiKTsKCQkJLyogRmFrZSBzdXBwb3J0IGZvciBhbGwgcG9zc2libGUgUlNTIGhhc2ggZmllbGRz LiAqLwoJCQlwcml2LT5od19yc3Nfc3VwID0gflVJTlQ2NF9DKDApOwoJCQlwcml2LT5od19yc3Nf c3VwID0gbWx4NF9jb252X3Jzc19oZihwcml2LCAtMSk7CgkJCS8qIEZpbHRlciBvdXQga25vd24g dW5zdXBwb3J0ZWQgZmllbGRzLiAqLwoJCQlwcml2LT5od19yc3Nfc3VwICY9CgkJCQl+KHVpbnQ2 NF90KShJQlZfUlhfSEFTSF9TUkNfUE9SVF9VRFAgfAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvbWx4NC9tbHg0LmM6NTY5CmVycm9yOiBkcml2ZXJzL25ldC9tbHg0L21seDQuYzog cGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NC9tbHg0 X2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfTsKCi8qKgogKiBDb252ZXJ0 IERQREsgUlNTIGhhc2ggZmllbGRzIHRvIHRoZWlyIFZlcmJzIGVxdWl2YWxlbnQuCiAqCi0tCm1s eDRfY29udl9yc3NfaGYoc3RydWN0IHByaXYgKnByaXYsIHVpbnQ2NF90IHJzc19oZikKewoJZW51 bSB7IElQVjQsIElQVjYsIFRDUCwgVURQLCB9OwoJY29uc3QgdWludDY0X3QgaW5bXSA9IHsKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmM6NzYKZXJyb3I6 IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmguLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgovKiBtbHg0X2Zsb3cuYyAqLwoKdWludDY0X3QgbWx4NF9jb252X3Jzc19o ZihzdHJ1Y3QgcHJpdiAqcHJpdiwgdWludDY0X3QgcnNzX2hmKTsKaW50IG1seDRfZmxvd19zeW5j KHN0cnVjdCBwcml2ICpwcml2LCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsKdm9pZCBt bHg0X2Zsb3dfY2xlYW4oc3RydWN0IHByaXYgKnByaXYpOwppbnQgbWx4NF9maWx0ZXJfY3RybChz dHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0 L21seDQvbWx4NF9mbG93Lmg6NDcKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93Lmg6 IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4 NF9yeHEuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICovCnN0cnVjdCBtbHg0X3Jz cyAqCm1seDRfcnNzX2dldChzdHJ1Y3QgcHJpdiAqcHJpdiwgdWludDY0X3QgZmllbGRzLAoJICAg ICB1aW50OF90IGtleVtNTFg0X1JTU19IQVNIX0tFWV9TSVpFXSwKCSAgICAgdWludDE2X3QgcXVl dWVzLCBjb25zdCB1aW50MTZfdCBxdWV1ZV9pZFtdKQp7CglzdHJ1Y3QgbWx4NF9yc3MgKnJzczsK CmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHEuYzo4OAplcnJv cjogZHJpdmVycy9uZXQvbWx4NC9tbHg0X3J4cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVj a2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0L21seDRfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgppbnQgbWx4NF9yc3NfaW5pdChzdHJ1Y3QgcHJpdiAqcHJpdik7CnZvaWQg bWx4NF9yc3NfZGVpbml0KHN0cnVjdCBwcml2ICpwcml2KTsKc3RydWN0IG1seDRfcnNzICptbHg0 X3Jzc19nZXQoc3RydWN0IHByaXYgKnByaXYsIHVpbnQ2NF90IGZpZWxkcywKCQkJICAgICAgdWlu dDhfdCBrZXlbTUxYNF9SU1NfSEFTSF9LRVlfU0laRV0sCgkJCSAgICAgIHVpbnQxNl90IHF1ZXVl cywgY29uc3QgdWludDE2X3QgcXVldWVfaWRbXSk7CnZvaWQgbWx4NF9yc3NfcHV0KHN0cnVjdCBt bHg0X3JzcyAqcnNzKTsKaW50IG1seDRfcnNzX2F0dGFjaChzdHJ1Y3QgbWx4NF9yc3MgKnJzcyk7 CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg0L21seDRfcnh0eC5oOjEyNgpl cnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0X3J4dHguaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCVRBSUxRX0VOVFJZKHJ0ZV9mbG93KSBuZXh0OyAvKio8IFBvaW50 ZXIgdG8gdGhlIG5leHQgZmxvdyBzdHJ1Y3R1cmUuICovCgl1aW50MzJfdCBtYXJrOjE7IC8qKjwg U2V0IGlmIHRoZSBmbG93IGlzIG1hcmtlZC4gKi8KCXVpbnQzMl90IGRyb3A6MTsgLyoqPCBEcm9w IHF1ZXVlLiAqLwoJdWludDE2X3QgcXVldWVzX247IC8qKjwgTnVtYmVyIG9mIGVudHJpZXMgaW4g cXVldWVbXS4gKi8KCXVpbnQxNl90ICgqcXVldWVzKVtdOyAvKio8IFF1ZXVlcyBpbmRleGVzIHRv IHVzZS4gKi8KCXN0cnVjdCBydGVfZXRoX3Jzc19jb25mIHJzc19jb25mOyAvKio8IFJTUyBjb25m aWd1cmF0aW9uICovCgl1aW50OF90IHJzc19rZXlbNDBdOyAvKio8IGNvcHkgb2YgdGhlIFJTUyBr ZXkuICovCglzdHJ1Y3QgaWJ2X2NvdW50ZXJfc2V0ICpjczsgLyoqPCBIb2xkcyB0aGUgY291bnRl cnMgZm9yIHRoZSBydWxlLiAqLwoJc3RydWN0IG1seDVfZmxvd19jb3VudGVyX3N0YXRzIGNvdW50 ZXJfc3RhdHM7LyoqPFRoZSBjb3VudGVyIHN0YXRzLiAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYzoyMTQKZXJyb3I6IGRyaXZlcnMvbmV0L21seDUv bWx4NV9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L21seDUvbWx4NV9yeHEuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogICBU aGUgVmVyYnMgb2JqZWN0IGluaXRpYWxpc2VkLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5v IGlzIHNldC4KICovCnN0cnVjdCBtbHg1X2luZF90YWJsZV9pYnYgKgptbHg1X2luZF90YWJsZV9p YnZfbmV3KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZXNbXSwKCQkgICAg ICAgdWludDE2X3QgcXVldWVzX24pCnsKCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5k ZXZfcHJpdmF0ZTsKCXN0cnVjdCBtbHg1X2luZF90YWJsZV9pYnYgKmluZF90Ymw7CgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg1L21seDVfcnhxLmM6MTIxOAplcnJvcjogZHJp dmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBw YXRjaCBkcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgoJTElTVF9FTlRSWShtbHg1X2luZF90YWJsZV9pYnYpIG5leHQ7IC8qIFBvaW50ZXIg dG8gdGhlIG5leHQgZWxlbWVudC4gKi8KCXJ0ZV9hdG9taWMzMl90IHJlZmNudDsgLyogUmVmZXJl bmNlIGNvdW50ZXIuICovCglzdHJ1Y3QgaWJ2X3J3cV9pbmRfdGFibGUgKmluZF90YWJsZTsgLyoq PCBJbmRpcmVjdGlvbiB0YWJsZS4gKi8KCXVpbnQxNl90IHF1ZXVlc19uOyAvKio8IE51bWJlciBv ZiBxdWV1ZXMgaW4gdGhlIGxpc3QuICovCgl1aW50MTZfdCBxdWV1ZXNbXTsgLyoqPCBRdWV1ZSBs aXN0LiAqLwp9OwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9y eHR4Lmg6MTM0CmVycm9yOiBkcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9zZmMvc2ZjX2Zsb3cuYy4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXN0cnVjdCBzZmNfcnhxICpyeHE7Cgl1bnNpZ25l ZCBpbnQgcnhxX2h3X2luZGV4X21pbjsKCXVuc2lnbmVkIGludCByeHFfaHdfaW5kZXhfbWF4OwoJ Y29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mID0gcnNzLT5yc3NfY29uZjsK CXVpbnQ2NF90IHJzc19oZjsKLS0KCWlmIChyc3MtPm51bSA9PSAwKQoJCXJldHVybiAtRUlOVkFM OwoKCXJ4cV9zd19pbmRleCA9IHNhLT5yeHFfY291bnQgLSAxOwoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvc2ZjL3NmY19mbG93LmM6MTIzNQplcnJvcjogZHJpdmVycy9uZXQvc2Zj L3NmY19mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L3RhcC90YXBfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJaWYg KGVycikKCQkJCQlnb3RvIGV4aXRfYWN0aW9uX25vdF9zdXBwb3J0ZWQ7CgkJCX0KCQkJaWYgKGZs b3cgJiYgcnNzKQoJCQkJZXJyID0gcnNzX2FkZF9hY3Rpb25zKGZsb3csIHBtZCwgcnNzLCBlcnJv cik7CgkJfSBlbHNlIHsKCQkJZ290byBleGl0X2FjdGlvbl9ub3Rfc3VwcG9ydGVkOwoKZXJyb3I6 IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvdGFwL3RhcF9mbG93LmM6MTIxNQplcnJvcjogZHJp dmVycy9uZXQvdGFwL3RhcF9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CgkJCQkgICAgIGkgPCBldGhfZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXM7ICsraSkKCQkJ CQlpZiAoZXRoX2Rldi0+ZGF0YS0+cnhfcXVldWVzW2ldKQoJCQkJCQlxdWV1ZVtqKytdID0gaTsK CQkJCWFjdGlvbl9yc3MucnNzX2NvbmYgPSAmcnNzX2NvbmY7CgkJCQlhY3Rpb25fcnNzLm51bSA9 IGo7CgkJCQlhY3Rpb25fcnNzLnF1ZXVlID0gcXVldWU7CgkJCQlyZXQgPSBydGVfZmxvd192YWxp ZGF0ZShzYS0+cG9ydGlkLCAmc2EtPmF0dHIsCgkJCQkJCQlzYS0+cGF0dGVybiwgc2EtPmFjdGlv biwKCQkJCQkJCSZlcnIpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZXhhbXBsZXMvaXBzZWMtc2Vj Z3cvaXBzZWMuYzoyMDIKZXJyb3I6IGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmM6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cu Yy4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZmxvdy5jOiBObyBzdWNoIGZpbGUgb3Ig ZGlyZWN0b3J5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cuaC4uLgpl cnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZmxvdy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0 b3J5CipSZXBvOiBkcGRrLW5leHQtbmV0CkNoZWNraW5nIHBhdGNoIGFwcC90ZXN0LXBtZC9jbWRs aW5lX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKLyoqIFN0b3JhZ2UgZm9y IHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzIGluY2x1ZGluZyBleHRlcm5hbCBkYXRhLiAqLwpz dHJ1Y3QgYWN0aW9uX3Jzc19kYXRhIHsKCXN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzIGNvbmY7 Cgl1aW50MTZfdCBxdWV1ZVtBQ1RJT05fUlNTX1FVRVVFX05VTV07CglzdHJ1Y3QgcnRlX2V0aF9y c3NfY29uZiByc3NfY29uZjsKCXVpbnQ4X3QgcnNzX2tleVtSU1NfSEFTSF9LRVlfTEVOR1RIXTsK fTsKCi8qKiBNYXhpbXVtIG51bWJlciBvZiBzdWJzZXF1ZW50IHRva2VucyBhbmQgYXJndW1lbnRz IG9uIHRoZSBzdGFjay4gKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGFwcC90ZXN0LXBtZC9jbWRs aW5lX2Zsb3cuYzoxOTIKZXJyb3I6IGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYzogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggYXBwL3Rlc3QtcG1kL2NvbmZpZy5jLi4uCmVy cm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCW9mZiA9IDA7CgkJaWYgKGRzdC5yc3MpCgkJCSpk c3QucnNzID0gKHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzKXsKCQkJCS5udW0gPSBzcmMucnNz LT5udW0sCgkJCX07Ci0tCgkJCX0KCQkJb2ZmICs9IHNpemU7CgkJfQoJCXNpemUgPSBvZmY7Cgpl cnJvcjogcGF0Y2ggZmFpbGVkOiBhcHAvdGVzdC1wbWQvY29uZmlnLmM6MTA4NAplcnJvcjogYXBw L3Rlc3QtcG1kL2NvbmZpZy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBk b2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hp bmcgZm9yOgoKLi4gdGFibGU6OiBSU1MKCiAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBGaWVsZCAgICAgICAgfCBWYWx1ZSAgICAgICAgICAg ICAgICAgICAgICAgICAgfAotLQogICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0rCgpBY3Rpb246IGBgUEZgYApeXl5eXl5eXl5eXl5eXgoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdDoxMzA4CmVycm9y OiBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0OiBwYXRjaCBkb2VzIG5vdCBhcHBs eQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGhkZXYuaC4uLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNpZm5kZWYgX0UxMDAwX0VUSERFVl9IXwojZGVmaW5l IF9FMTAwMF9FVEhERVZfSF8KI2luY2x1ZGUgPHJ0ZV90aW1lLmg+CiNpbmNsdWRlIDxydGVfcGNp Lmg+CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2 Lmg6NAplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2Lmg6IHBhdGNoIGRvZXMg bm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYy4u LgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKI2RlZmluZSBJR0JfREVGQVVMVF9UWF9IVEhS RVNIICAgICAgMQojZGVmaW5lIElHQl9ERUZBVUxUX1RYX1dUSFJFU0ggICAgICAoKGh3LT5tYWMu dHlwZSA9PSBlMTAwMF84MjU3NikgPyAxIDogMTYpCgojZGVmaW5lIElHQl9IS0VZX01BWF9JTkRF WCAxMAoKLyogQml0IHNoaWZ0IGFuZCBtYXNrICovCiNkZWZpbmUgSUdCXzRfQklUX1dJRFRIICAo Q0hBUl9CSVQgLyAyKQojZGVmaW5lIElHQl80X0JJVF9NQVNLICAgUlRFX0xFTjJNQVNLKElHQl80 X0JJVF9XSURUSCwgdWludDhfdCkKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2Ux MDAwL2lnYl9ldGhkZXYuYzo0MQplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2V0aGRldi5j OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9p Z2JfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCXJzcyA9IChjb25zdCBz dHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyAqKWFjdC0+Y29uZjsKCglpZiAoIXJzcyB8fCAhcnNz LT5udW0pIHsKCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwKCQkJCVJURV9GTE9X X0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJYWN0LAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVy cy9uZXQvZTEwMDAvaWdiX2Zsb3cuYzoxMjkyCmVycm9yOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2Jf Zmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9l MTAwMC9pZ2Jfcnh0eC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp9CgppbnQKaWdi X2NvbmZpZ19yc3NfZmlsdGVyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCXN0cnVjdCBpZ2Jf cnRlX2Zsb3dfcnNzX2NvbmYgKmNvbmYsIGJvb2wgYWRkKQotLQoJc3RydWN0IHJ0ZV9ldGhfcnNz X2NvbmYgcnNzX2NvbmYgPSBjb25mLT5yc3NfY29uZjsKCXN0cnVjdCBlMTAwMF9maWx0ZXJfaW5m byAqZmlsdGVyX2luZm8gPQoJCUUxMDAwX0RFVl9QUklWQVRFX1RPX0ZJTFRFUl9JTkZPKGRldi0+ ZGF0YS0+ZGV2X3ByaXZhdGUpOwoJc3RydWN0IGUxMDAwX2h3ICpodyA9IEUxMDAwX0RFVl9QUklW QVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvZTEwMDAvaWdiX3J4dHguYzoyNzU5CmVycm9yOiBkcml2ZXJzL25ldC9lMTAw MC9pZ2Jfcnh0eC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9pNDBlL2k0MGVfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNp bmNsdWRlIDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+CgojaW5jbHVkZSA8cnRlX2Vh bC5oPgojaW5jbHVkZSA8cnRlX3N0cmluZ19mbnMuaD4KI2luY2x1ZGUgPHJ0ZV9wY2kuaD4KCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYzoxMQplcnJv cjogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmguLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CiNpZm5kZWYgX0k0MEVfRVRIREVWX0hfCiNkZWZpbmUgX0k0MEVf RVRIREVWX0hfCgojaW5jbHVkZSA8cnRlX2V0aF9jdHJsLmg+CiNpbmNsdWRlIDxydGVfdGltZS5o PgotLQoKI2RlZmluZSBJNDBFX1ZMQU5fVEFHX1NJWkUgICAgICAgIDQKCiNkZWZpbmUgSTQwRV9B UV9MRU4gICAgICAgICAgICAgICAzMgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv aTQwZS9pNDBlX2V0aGRldi5oOjUKZXJyb3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYu aDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaTQwZS9p NDBlX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglpZiAoYWN0aW9uX2Zs YWcpIHsKCQlmb3IgKG4gPSAwOyBuIDwgNjQ7IG4rKykgewoJCQlpZiAocnNzLT5yc3NfY29uZi0+ cnNzX2hmICYgKGhmX2JpdCA8PCBuKSkgewoJCQkJY29uZl9pbmZvLT5yZWdpb25bMF0uaHdfZmxv d3R5cGVbMF0gPSBuOwoJCQkJY29uZl9pbmZvLT5yZWdpb25bMF0uZmxvd3R5cGVfbnVtID0gMTsK CQkJCWNvbmZfaW5mby0+cXVldWVfcmVnaW9uX251bWJlciA9IDE7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZmxvdy5jOjQyMDUKZXJyb3I6IGRyaXZlcnMvbmV0 L2k0MGUvaTQwZV9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcg Zm9yOgoKI2RlZmluZSBJWEdCRV9RVUVVRV9TVEFUX0NPVU5URVJTIChzaXplb2YoaHdfc3RhdHMt PnFwcmMpIC8gc2l6ZW9mKGh3X3N0YXRzLT5xcHJjWzBdKSkKCiNkZWZpbmUgSVhHQkVfSEtFWV9N QVhfSU5ERVggMTAKCi8qIEFkZGl0aW9uYWwgdGltZXN5bmMgdmFsdWVzLiAqLwojZGVmaW5lIE5T RUNfUEVSX1NFQyAgICAgICAgICAgICAxMDAwMDAwMDAwTAojZGVmaW5lIElYR0JFX0lOQ1ZBTF8x MEdCICAgICAgICAweDY2NjY2NjY2CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9p eGdiZS9peGdiZV9ldGhkZXYuYzoxMDAKZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0 aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9p eGdiZS9peGdiZV9ldGhkZXYuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNpZm5k ZWYgX0lYR0JFX0VUSERFVl9IXwojZGVmaW5lIF9JWEdCRV9FVEhERVZfSF8KI2luY2x1ZGUgImJh c2UvaXhnYmVfdHlwZS5oIgojaW5jbHVkZSAiYmFzZS9peGdiZV9kY2IuaCIKI2luY2x1ZGUgImJh c2UvaXhnYmVfZGNiXzgyNTk5LmgiCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9p eGdiZS9peGdiZV9ldGhkZXYuaDo0CmVycm9yOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhk ZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhn YmUvaXhnYmVfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCXJzcyA9IChj b25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyAqKWFjdC0+Y29uZjsKCglpZiAoIXJzcyB8 fCAhcnNzLT5udW0pIHsKCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwKCQkJCVJU RV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJYWN0LAoKZXJyb3I6IHBhdGNoIGZhaWxlZDog ZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZmxvdy5jOjI3NjEKZXJyb3I6IGRyaXZlcnMvbmV0L2l4 Z2JlL2l4Z2JlX2Zsb3cuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvaXhnYmUvaXhnYmVfcnh0eC5jLi4uCkh1bmsgIzEgc3VjY2VlZGVkIGF0IDU2NTUg KG9mZnNldCAxMzMgbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXVpbnQxNl90 IGo7Cgl1aW50MTZfdCBzcF9yZXRhX3NpemU7Cgl1aW50MzJfdCByZXRhX3JlZzsKCXN0cnVjdCBy dGVfZXRoX3Jzc19jb25mIHJzc19jb25mID0gY29uZi0+cnNzX2NvbmY7CglzdHJ1Y3QgaXhnYmVf ZmlsdGVyX2luZm8gKmZpbHRlcl9pbmZvID0KCQlJWEdCRV9ERVZfUFJJVkFURV9UT19GSUxURVJf SU5GTyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9peGdiZS9peGdiZV9yeHR4LmM6NTUzMQplcnJvcjogZHJpdmVycy9uZXQvaXhnYmUv aXhnYmVfcnh0eC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9tbHg0L21seDQuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJICAgICAi IGZvciBVRFAgUlNTIGFuZCBpbm5lciBWWExBTiBSU1MiKTsKCQkJLyogRmFrZSBzdXBwb3J0IGZv ciBhbGwgcG9zc2libGUgUlNTIGhhc2ggZmllbGRzLiAqLwoJCQlwcml2LT5od19yc3Nfc3VwID0g flVJTlQ2NF9DKDApOwoJCQlwcml2LT5od19yc3Nfc3VwID0gbWx4NF9jb252X3Jzc19oZihwcml2 LCAtMSk7CgkJCS8qIEZpbHRlciBvdXQga25vd24gdW5zdXBwb3J0ZWQgZmllbGRzLiAqLwoJCQlw cml2LT5od19yc3Nfc3VwICY9CgkJCQl+KHVpbnQ2NF90KShJQlZfUlhfSEFTSF9TUkNfUE9SVF9V RFAgfAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NC9tbHg0LmM6NTY5CmVy cm9yOiBkcml2ZXJzL25ldC9tbHg0L21seDQuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tp bmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NC9tbHg0X2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKfTsKCi8qKgogKiBDb252ZXJ0IERQREsgUlNTIGhhc2ggZmllbGRzIHRvIHRo ZWlyIFZlcmJzIGVxdWl2YWxlbnQuCiAqCi0tCm1seDRfY29udl9yc3NfaGYoc3RydWN0IHByaXYg KnByaXYsIHVpbnQ2NF90IHJzc19oZikKewoJZW51bSB7IElQVjQsIElQVjYsIFRDUCwgVURQLCB9 OwoJY29uc3QgdWludDY0X3QgaW5bXSA9IHsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMv bmV0L21seDQvbWx4NF9mbG93LmM6NzYKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93 LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQv bWx4NF9mbG93LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgovKiBtbHg0X2Zsb3cu YyAqLwoKdWludDY0X3QgbWx4NF9jb252X3Jzc19oZihzdHJ1Y3QgcHJpdiAqcHJpdiwgdWludDY0 X3QgcnNzX2hmKTsKaW50IG1seDRfZmxvd19zeW5jKHN0cnVjdCBwcml2ICpwcml2LCBzdHJ1Y3Qg cnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsKdm9pZCBtbHg0X2Zsb3dfY2xlYW4oc3RydWN0IHByaXYg KnByaXYpOwppbnQgbWx4NF9maWx0ZXJfY3RybChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93Lmg6NDcKZXJyb3I6 IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNr aW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHEuYy4uLgplcnJvcjogd2hpbGUgc2Vh cmNoaW5nIGZvcjoKICovCnN0cnVjdCBtbHg0X3JzcyAqCm1seDRfcnNzX2dldChzdHJ1Y3QgcHJp diAqcHJpdiwgdWludDY0X3QgZmllbGRzLAoJICAgICB1aW50OF90IGtleVtNTFg0X1JTU19IQVNI X0tFWV9TSVpFXSwKCSAgICAgdWludDE2X3QgcXVldWVzLCBjb25zdCB1aW50MTZfdCBxdWV1ZV9p ZFtdKQp7CglzdHJ1Y3QgbWx4NF9yc3MgKnJzczsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L21seDQvbWx4NF9yeHEuYzo4OAplcnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0X3J4 cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0 L21seDRfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgppbnQgbWx4NF9yc3Nf aW5pdChzdHJ1Y3QgcHJpdiAqcHJpdik7CnZvaWQgbWx4NF9yc3NfZGVpbml0KHN0cnVjdCBwcml2 ICpwcml2KTsKc3RydWN0IG1seDRfcnNzICptbHg0X3Jzc19nZXQoc3RydWN0IHByaXYgKnByaXYs IHVpbnQ2NF90IGZpZWxkcywKCQkJICAgICAgdWludDhfdCBrZXlbTUxYNF9SU1NfSEFTSF9LRVlf U0laRV0sCgkJCSAgICAgIHVpbnQxNl90IHF1ZXVlcywgY29uc3QgdWludDE2X3QgcXVldWVfaWRb XSk7CnZvaWQgbWx4NF9yc3NfcHV0KHN0cnVjdCBtbHg0X3JzcyAqcnNzKTsKaW50IG1seDRfcnNz X2F0dGFjaChzdHJ1Y3QgbWx4NF9yc3MgKnJzcyk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9tbHg0L21seDRfcnh0eC5oOjEyNgplcnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0 X3J4dHguaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQv bWx4NS9tbHg1X2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVRBSUxRX0VO VFJZKHJ0ZV9mbG93KSBuZXh0OyAvKio8IFBvaW50ZXIgdG8gdGhlIG5leHQgZmxvdyBzdHJ1Y3R1 cmUuICovCgl1aW50MzJfdCBtYXJrOjE7IC8qKjwgU2V0IGlmIHRoZSBmbG93IGlzIG1hcmtlZC4g Ki8KCXVpbnQzMl90IGRyb3A6MTsgLyoqPCBEcm9wIHF1ZXVlLiAqLwoJdWludDE2X3QgcXVldWVz X247IC8qKjwgTnVtYmVyIG9mIGVudHJpZXMgaW4gcXVldWVbXS4gKi8KCXVpbnQxNl90ICgqcXVl dWVzKVtdOyAvKio8IFF1ZXVlcyBpbmRleGVzIHRvIHVzZS4gKi8KCXN0cnVjdCBydGVfZXRoX3Jz c19jb25mIHJzc19jb25mOyAvKio8IFJTUyBjb25maWd1cmF0aW9uICovCgl1aW50OF90IHJzc19r ZXlbNDBdOyAvKio8IGNvcHkgb2YgdGhlIFJTUyBrZXkuICovCglzdHJ1Y3QgaWJ2X2NvdW50ZXJf c2V0ICpjczsgLyoqPCBIb2xkcyB0aGUgY291bnRlcnMgZm9yIHRoZSBydWxlLiAqLwoJc3RydWN0 IG1seDVfZmxvd19jb3VudGVyX3N0YXRzIGNvdW50ZXJfc3RhdHM7LyoqPFRoZSBjb3VudGVyIHN0 YXRzLiAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cu YzoyMTQKZXJyb3I6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYy4uLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogICBUaGUgVmVyYnMgb2JqZWN0IGluaXRpYWxpc2Vk LCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4KICovCnN0cnVjdCBtbHg1X2lu ZF90YWJsZV9pYnYgKgptbHg1X2luZF90YWJsZV9pYnZfbmV3KHN0cnVjdCBydGVfZXRoX2RldiAq ZGV2LCB1aW50MTZfdCBxdWV1ZXNbXSwKCQkgICAgICAgdWludDE2X3QgcXVldWVzX24pCnsKCXN0 cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsKCXN0cnVjdCBtbHg1X2lu ZF90YWJsZV9pYnYgKmluZF90Ymw7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9t bHg1L21seDVfcnhxLmM6MTIxOAplcnJvcjogZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jOiBw YXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg1L21seDVf cnh0eC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJTElTVF9FTlRSWShtbHg1X2lu ZF90YWJsZV9pYnYpIG5leHQ7IC8qIFBvaW50ZXIgdG8gdGhlIG5leHQgZWxlbWVudC4gKi8KCXJ0 ZV9hdG9taWMzMl90IHJlZmNudDsgLyogUmVmZXJlbmNlIGNvdW50ZXIuICovCglzdHJ1Y3QgaWJ2 X3J3cV9pbmRfdGFibGUgKmluZF90YWJsZTsgLyoqPCBJbmRpcmVjdGlvbiB0YWJsZS4gKi8KCXVp bnQxNl90IHF1ZXVlc19uOyAvKio8IE51bWJlciBvZiBxdWV1ZXMgaW4gdGhlIGxpc3QuICovCgl1 aW50MTZfdCBxdWV1ZXNbXTsgLyoqPCBRdWV1ZSBsaXN0LiAqLwp9OwoKCmVycm9yOiBwYXRjaCBm YWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4Lmg6MTM0CmVycm9yOiBkcml2ZXJzL25l dC9tbHg1L21seDVfcnh0eC5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBk cml2ZXJzL25ldC9zZmMvc2ZjX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CXN0cnVjdCBzZmNfcnhxICpyeHE7Cgl1bnNpZ25lZCBpbnQgcnhxX2h3X2luZGV4X21pbjsKCXVu c2lnbmVkIGludCByeHFfaHdfaW5kZXhfbWF4OwoJY29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnNzX2Nv bmYgKnJzc19jb25mID0gcnNzLT5yc3NfY29uZjsKCXVpbnQ2NF90IHJzc19oZjsKLS0KCWlmIChy c3MtPm51bSA9PSAwKQoJCXJldHVybiAtRUlOVkFMOwoKCXJ4cV9zd19pbmRleCA9IHNhLT5yeHFf Y291bnQgLSAxOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvc2ZjL3NmY19mbG93 LmM6MTIzNQplcnJvcjogZHJpdmVycy9uZXQvc2ZjL3NmY19mbG93LmM6IHBhdGNoIGRvZXMgbm90 IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3RhcC90YXBfZmxvdy5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJaWYgKGVycikKCQkJCQlnb3RvIGV4aXRfYWN0aW9u X25vdF9zdXBwb3J0ZWQ7CgkJCX0KCQkJaWYgKGZsb3cgJiYgcnNzKQoJCQkJZXJyID0gcnNzX2Fk ZF9hY3Rpb25zKGZsb3csIHBtZCwgcnNzLCBlcnJvcik7CgkJfSBlbHNlIHsKCQkJZ290byBleGl0 X2FjdGlvbl9ub3Rfc3VwcG9ydGVkOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQv dGFwL3RhcF9mbG93LmM6MTIxNQplcnJvcjogZHJpdmVycy9uZXQvdGFwL3RhcF9mbG93LmM6IHBh dGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lw c2VjLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCQkgICAgIGkgPCBldGhfZGV2 LT5kYXRhLT5uYl9yeF9xdWV1ZXM7ICsraSkKCQkJCQlpZiAoZXRoX2Rldi0+ZGF0YS0+cnhfcXVl dWVzW2ldKQoJCQkJCQlxdWV1ZVtqKytdID0gaTsKCQkJCWFjdGlvbl9yc3MucnNzX2NvbmYgPSAm cnNzX2NvbmY7CgkJCQlhY3Rpb25fcnNzLm51bSA9IGo7CgkJCQlhY3Rpb25fcnNzLnF1ZXVlID0g cXVldWU7CgkJCQlyZXQgPSBydGVfZmxvd192YWxpZGF0ZShzYS0+cG9ydGlkLCAmc2EtPmF0dHIs CgkJCQkJCQlzYS0+cGF0dGVybiwgc2EtPmFjdGlvbiwKCQkJCQkJCSZlcnIpOwoKZXJyb3I6IHBh dGNoIGZhaWxlZDogZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuYzoyMDIKZXJyb3I6IGV4YW1w bGVzL2lwc2VjLXNlY2d3L2lwc2VjLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBh dGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cuYy4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhl ci9ydGVfZmxvdy5jOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CkNoZWNraW5nIHBhdGNoIGxp Yi9saWJydGVfZXRoZXIvcnRlX2Zsb3cuaC4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVf Zmxvdy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CipSZXBvOiBkcGRrLW5leHQtY3J5cHRv CkNoZWNraW5nIHBhdGNoIGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKLyoqIFN0b3JhZ2UgZm9yIHN0cnVjdCBydGVfZmxvd19hY3Rpb25f cnNzIGluY2x1ZGluZyBleHRlcm5hbCBkYXRhLiAqLwpzdHJ1Y3QgYWN0aW9uX3Jzc19kYXRhIHsK CXN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzIGNvbmY7Cgl1aW50MTZfdCBxdWV1ZVtBQ1RJT05f UlNTX1FVRVVFX05VTV07CglzdHJ1Y3QgcnRlX2V0aF9yc3NfY29uZiByc3NfY29uZjsKCXVpbnQ4 X3QgcnNzX2tleVtSU1NfSEFTSF9LRVlfTEVOR1RIXTsKfTsKCi8qKiBNYXhpbXVtIG51bWJlciBv ZiBzdWJzZXF1ZW50IHRva2VucyBhbmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjay4gKi8KCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYzoxOTIKZXJyb3I6IGFw cC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggYXBwL3Rlc3QtcG1kL2NvbmZpZy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9y OgoJCW9mZiA9IDA7CgkJaWYgKGRzdC5yc3MpCgkJCSpkc3QucnNzID0gKHN0cnVjdCBydGVfZmxv d19hY3Rpb25fcnNzKXsKCQkJCS5udW0gPSBzcmMucnNzLT5udW0sCgkJCX07Ci0tCgkJCX0KCQkJ b2ZmICs9IHNpemU7CgkJfQoJCXNpemUgPSBvZmY7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBhcHAv dGVzdC1wbWQvY29uZmlnLmM6MTA4NAplcnJvcjogYXBwL3Rlc3QtcG1kL2NvbmZpZy5jOiBwYXRj aCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRl X2Zsb3cucnN0Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKLi4gdGFibGU6OiBSU1MK CiAgICstLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAg fCBGaWVsZCAgICAgICAgfCBWYWx1ZSAgICAgICAgICAgICAgICAgICAgICAgICAgfAotLQogICAr LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgpBY3Rpb246 IGBgUEZgYApeXl5eXl5eXl5eXl5eXgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9w cm9nX2d1aWRlL3J0ZV9mbG93LnJzdDoxMzA4CmVycm9yOiBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUv cnRlX2Zsb3cucnN0OiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9lMTAwMC9lMTAwMF9ldGhkZXYuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CiNpZm5kZWYgX0UxMDAwX0VUSERFVl9IXwojZGVmaW5lIF9FMTAwMF9FVEhERVZfSF8KI2luY2x1 ZGUgPHJ0ZV90aW1lLmg+CiNpbmNsdWRlIDxydGVfcGNpLmg+CgoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2Lmg6NAplcnJvcjogZHJpdmVycy9uZXQv ZTEwMDAvZTEwMDBfZXRoZGV2Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNo IGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5n IGZvcjoKI2RlZmluZSBJR0JfREVGQVVMVF9UWF9IVEhSRVNIICAgICAgMQojZGVmaW5lIElHQl9E RUZBVUxUX1RYX1dUSFJFU0ggICAgICAoKGh3LT5tYWMudHlwZSA9PSBlMTAwMF84MjU3NikgPyAx IDogMTYpCgojZGVmaW5lIElHQl9IS0VZX01BWF9JTkRFWCAxMAoKLyogQml0IHNoaWZ0IGFuZCBt YXNrICovCiNkZWZpbmUgSUdCXzRfQklUX1dJRFRIICAoQ0hBUl9CSVQgLyAyKQojZGVmaW5lIElH Ql80X0JJVF9NQVNLICAgUlRFX0xFTjJNQVNLKElHQl80X0JJVF9XSURUSCwgdWludDhfdCkKCmVy cm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYzo0MQplcnJv cjogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpD aGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZmxvdy5jLi4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoKCXJzcyA9IChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3Jz cyAqKWFjdC0+Y29uZjsKCglpZiAoIXJzcyB8fCAhcnNzLT5udW0pIHsKCQlydGVfZmxvd19lcnJv cl9zZXQoZXJyb3IsIEVJTlZBTCwKCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJ YWN0LAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2Zsb3cuYzox MjkyCmVycm9yOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2JfZmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp9CgppbnQKaWdiX2NvbmZpZ19yc3NfZmlsdGVyKHN0cnVj dCBydGVfZXRoX2RldiAqZGV2LAoJCXN0cnVjdCBpZ2JfcnRlX2Zsb3dfcnNzX2NvbmYgKmNvbmYs IGJvb2wgYWRkKQotLQoJc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgcnNzX2NvbmYgPSBjb25mLT5y c3NfY29uZjsKCXN0cnVjdCBlMTAwMF9maWx0ZXJfaW5mbyAqZmlsdGVyX2luZm8gPQoJCUUxMDAw X0RFVl9QUklWQVRFX1RPX0ZJTFRFUl9JTkZPKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwoJc3Ry dWN0IGUxMDAwX2h3ICpodyA9IEUxMDAwX0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2 X3ByaXZhdGUpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX3J4 dHguYzoyNzU5CmVycm9yOiBkcml2ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmMu Li4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojaW5j bHVkZSA8YXNzZXJ0Lmg+CgojaW5jbHVkZSA8cnRlX2VhbC5oPgojaW5jbHVkZSA8cnRlX3N0cmlu Z19mbnMuaD4KI2luY2x1ZGUgPHJ0ZV9wY2kuaD4KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuYzoxMQplcnJvcjogZHJpdmVycy9uZXQvaTQwZS9pNDBl X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9pNDBlL2k0MGVfZXRoZGV2LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpZm5k ZWYgX0k0MEVfRVRIREVWX0hfCiNkZWZpbmUgX0k0MEVfRVRIREVWX0hfCgojaW5jbHVkZSA8cnRl X2V0aF9jdHJsLmg+CiNpbmNsdWRlIDxydGVfdGltZS5oPgotLQoKI2RlZmluZSBJNDBFX1ZMQU5f VEFHX1NJWkUgICAgICAgIDQKCiNkZWZpbmUgSTQwRV9BUV9MRU4gICAgICAgICAgICAgICAzMgoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oOjUKZXJy b3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkK Q2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaTQwZS9pNDBlX2Zsb3cuYy4uLgplcnJvcjogd2hp bGUgc2VhcmNoaW5nIGZvcjoKCglpZiAoYWN0aW9uX2ZsYWcpIHsKCQlmb3IgKG4gPSAwOyBuIDwg NjQ7IG4rKykgewoJCQlpZiAocnNzLT5yc3NfY29uZi0+cnNzX2hmICYgKGhmX2JpdCA8PCBuKSkg ewoJCQkJY29uZl9pbmZvLT5yZWdpb25bMF0uaHdfZmxvd3R5cGVbMF0gPSBuOwoJCQkJY29uZl9p bmZvLT5yZWdpb25bMF0uZmxvd3R5cGVfbnVtID0gMTsKCQkJCWNvbmZfaW5mby0+cXVldWVfcmVn aW9uX251bWJlciA9IDE7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0 MGVfZmxvdy5jOjQyMDUKZXJyb3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9mbG93LmM6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0 aGRldi5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKI2RlZmluZSBJWEdCRV9RVUVV RV9TVEFUX0NPVU5URVJTIChzaXplb2YoaHdfc3RhdHMtPnFwcmMpIC8gc2l6ZW9mKGh3X3N0YXRz LT5xcHJjWzBdKSkKCiNkZWZpbmUgSVhHQkVfSEtFWV9NQVhfSU5ERVggMTAKCi8qIEFkZGl0aW9u YWwgdGltZXN5bmMgdmFsdWVzLiAqLwojZGVmaW5lIE5TRUNfUEVSX1NFQyAgICAgICAgICAgICAx MDAwMDAwMDAwTAojZGVmaW5lIElYR0JFX0lOQ1ZBTF8xMEdCICAgICAgICAweDY2NjY2NjY2Cgpl cnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzoxMDAK ZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBh cHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaC4uLgpl cnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNpZm5kZWYgX0lYR0JFX0VUSERFVl9IXwojZGVm aW5lIF9JWEdCRV9FVEhERVZfSF8KI2luY2x1ZGUgImJhc2UvaXhnYmVfdHlwZS5oIgojaW5jbHVk ZSAiYmFzZS9peGdiZV9kY2IuaCIKI2luY2x1ZGUgImJhc2UvaXhnYmVfZGNiXzgyNTk5LmgiCgpl cnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaDo0CmVy cm9yOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBw bHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZmxvdy5jLi4uCmVycm9y OiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCXJzcyA9IChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0 aW9uX3JzcyAqKWFjdC0+Y29uZjsKCglpZiAoIXJzcyB8fCAhcnNzLT5udW0pIHsKCQlydGVfZmxv d19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwKCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9O LAoJCQkJYWN0LAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVf Zmxvdy5jOjI3NjEKZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2Zsb3cuYzogcGF0Y2gg ZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcnh0 eC5jLi4uCkh1bmsgIzEgc3VjY2VlZGVkIGF0IDU3MTAgKG9mZnNldCAxODggbGluZXMpLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXVpbnQxNl90IGo7Cgl1aW50MTZfdCBzcF9yZXRhX3Np emU7Cgl1aW50MzJfdCByZXRhX3JlZzsKCXN0cnVjdCBydGVfZXRoX3Jzc19jb25mIHJzc19jb25m ID0gY29uZi0+cnNzX2NvbmY7CglzdHJ1Y3QgaXhnYmVfZmlsdGVyX2luZm8gKmZpbHRlcl9pbmZv ID0KCQlJWEdCRV9ERVZfUFJJVkFURV9UT19GSUxURVJfSU5GTyhkZXYtPmRhdGEtPmRldl9wcml2 YXRlKTsKCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9yeHR4 LmM6NTUzMQplcnJvcjogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcnh0eC5jOiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0L21seDQuYy4uLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCQkJICAgICAiIGZvciBVRFAgUlNTIGFuZCBpbm5lciBW WExBTiBSU1MiKTsKCQkJLyogRmFrZSBzdXBwb3J0IGZvciBhbGwgcG9zc2libGUgUlNTIGhhc2gg ZmllbGRzLiAqLwoJCQlwcml2LT5od19yc3Nfc3VwID0gflVJTlQ2NF9DKDApOwoJCQlwcml2LT5o d19yc3Nfc3VwID0gbWx4NF9jb252X3Jzc19oZihwcml2LCAtMSk7CgkJCS8qIEZpbHRlciBvdXQg a25vd24gdW5zdXBwb3J0ZWQgZmllbGRzLiAqLwoJCQlwcml2LT5od19yc3Nfc3VwICY9CgkJCQl+ KHVpbnQ2NF90KShJQlZfUlhfSEFTSF9TUkNfUE9SVF9VRFAgfAoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvbWx4NC9tbHg0LmM6NTY5CmVycm9yOiBkcml2ZXJzL25ldC9tbHg0L21s eDQuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4 NC9tbHg0X2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKfTsKCi8qKgogKiBD b252ZXJ0IERQREsgUlNTIGhhc2ggZmllbGRzIHRvIHRoZWlyIFZlcmJzIGVxdWl2YWxlbnQuCiAq Ci0tCm1seDRfY29udl9yc3NfaGYoc3RydWN0IHByaXYgKnByaXYsIHVpbnQ2NF90IHJzc19oZikK ewoJZW51bSB7IElQVjQsIElQVjYsIFRDUCwgVURQLCB9OwoJY29uc3QgdWludDY0X3QgaW5bXSA9 IHsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmM6NzYK ZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5 CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmguLi4KZXJyb3I6IHdo aWxlIHNlYXJjaGluZyBmb3I6CgovKiBtbHg0X2Zsb3cuYyAqLwoKdWludDY0X3QgbWx4NF9jb252 X3Jzc19oZihzdHJ1Y3QgcHJpdiAqcHJpdiwgdWludDY0X3QgcnNzX2hmKTsKaW50IG1seDRfZmxv d19zeW5jKHN0cnVjdCBwcml2ICpwcml2LCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsK dm9pZCBtbHg0X2Zsb3dfY2xlYW4oc3RydWN0IHByaXYgKnByaXYpOwppbnQgbWx4NF9maWx0ZXJf Y3RybChzdHJ1Y3QgcnRlX2V0aF9kZXYgKmRldiwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L21seDQvbWx4NF9mbG93Lmg6NDcKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9m bG93Lmg6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21s eDQvbWx4NF9yeHEuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICovCnN0cnVjdCBt bHg0X3JzcyAqCm1seDRfcnNzX2dldChzdHJ1Y3QgcHJpdiAqcHJpdiwgdWludDY0X3QgZmllbGRz LAoJICAgICB1aW50OF90IGtleVtNTFg0X1JTU19IQVNIX0tFWV9TSVpFXSwKCSAgICAgdWludDE2 X3QgcXVldWVzLCBjb25zdCB1aW50MTZfdCBxdWV1ZV9pZFtdKQp7CglzdHJ1Y3QgbWx4NF9yc3Mg KnJzczsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHEuYzo4 OAplcnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0X3J4cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBs eQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg0L21seDRfcnh0eC5oLi4uCmVycm9yOiB3 aGlsZSBzZWFyY2hpbmcgZm9yOgppbnQgbWx4NF9yc3NfaW5pdChzdHJ1Y3QgcHJpdiAqcHJpdik7 CnZvaWQgbWx4NF9yc3NfZGVpbml0KHN0cnVjdCBwcml2ICpwcml2KTsKc3RydWN0IG1seDRfcnNz ICptbHg0X3Jzc19nZXQoc3RydWN0IHByaXYgKnByaXYsIHVpbnQ2NF90IGZpZWxkcywKCQkJICAg ICAgdWludDhfdCBrZXlbTUxYNF9SU1NfSEFTSF9LRVlfU0laRV0sCgkJCSAgICAgIHVpbnQxNl90 IHF1ZXVlcywgY29uc3QgdWludDE2X3QgcXVldWVfaWRbXSk7CnZvaWQgbWx4NF9yc3NfcHV0KHN0 cnVjdCBtbHg0X3JzcyAqcnNzKTsKaW50IG1seDRfcnNzX2F0dGFjaChzdHJ1Y3QgbWx4NF9yc3Mg KnJzcyk7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg0L21seDRfcnh0eC5o OjEyNgplcnJvcjogZHJpdmVycy9uZXQvbWx4NC9tbHg0X3J4dHguaDogcGF0Y2ggZG9lcyBub3Qg YXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYy4uLgplcnJv cjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCVRBSUxRX0VOVFJZKHJ0ZV9mbG93KSBuZXh0OyAvKio8 IFBvaW50ZXIgdG8gdGhlIG5leHQgZmxvdyBzdHJ1Y3R1cmUuICovCgl1aW50MzJfdCBtYXJrOjE7 IC8qKjwgU2V0IGlmIHRoZSBmbG93IGlzIG1hcmtlZC4gKi8KCXVpbnQzMl90IGRyb3A6MTsgLyoq PCBEcm9wIHF1ZXVlLiAqLwoJdWludDE2X3QgcXVldWVzX247IC8qKjwgTnVtYmVyIG9mIGVudHJp ZXMgaW4gcXVldWVbXS4gKi8KCXVpbnQxNl90ICgqcXVldWVzKVtdOyAvKio8IFF1ZXVlcyBpbmRl eGVzIHRvIHVzZS4gKi8KCXN0cnVjdCBydGVfZXRoX3Jzc19jb25mIHJzc19jb25mOyAvKio8IFJT UyBjb25maWd1cmF0aW9uICovCgl1aW50OF90IHJzc19rZXlbNDBdOyAvKio8IGNvcHkgb2YgdGhl IFJTUyBrZXkuICovCglzdHJ1Y3QgaWJ2X2NvdW50ZXJfc2V0ICpjczsgLyoqPCBIb2xkcyB0aGUg Y291bnRlcnMgZm9yIHRoZSBydWxlLiAqLwoJc3RydWN0IG1seDVfZmxvd19jb3VudGVyX3N0YXRz IGNvdW50ZXJfc3RhdHM7LyoqPFRoZSBjb3VudGVyIHN0YXRzLiAqLwoKZXJyb3I6IHBhdGNoIGZh aWxlZDogZHJpdmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYzoyMTQKZXJyb3I6IGRyaXZlcnMvbmV0 L21seDUvbWx4NV9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L21seDUvbWx4NV9yeHEuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK ICogICBUaGUgVmVyYnMgb2JqZWN0IGluaXRpYWxpc2VkLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRl X2Vycm5vIGlzIHNldC4KICovCnN0cnVjdCBtbHg1X2luZF90YWJsZV9pYnYgKgptbHg1X2luZF90 YWJsZV9pYnZfbmV3KHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZXNbXSwK CQkgICAgICAgdWludDE2X3QgcXVldWVzX24pCnsKCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5k YXRhLT5kZXZfcHJpdmF0ZTsKCXN0cnVjdCBtbHg1X2luZF90YWJsZV9pYnYgKmluZF90Ymw7Cgpl cnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9tbHg1L21seDVfcnhxLmM6MTIxOAplcnJv cjogZHJpdmVycy9uZXQvbWx4NS9tbHg1X3J4cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVj a2luZyBwYXRjaCBkcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgoJTElTVF9FTlRSWShtbHg1X2luZF90YWJsZV9pYnYpIG5leHQ7IC8qIFBv aW50ZXIgdG8gdGhlIG5leHQgZWxlbWVudC4gKi8KCXJ0ZV9hdG9taWMzMl90IHJlZmNudDsgLyog UmVmZXJlbmNlIGNvdW50ZXIuICovCglzdHJ1Y3QgaWJ2X3J3cV9pbmRfdGFibGUgKmluZF90YWJs ZTsgLyoqPCBJbmRpcmVjdGlvbiB0YWJsZS4gKi8KCXVpbnQxNl90IHF1ZXVlc19uOyAvKio8IE51 bWJlciBvZiBxdWV1ZXMgaW4gdGhlIGxpc3QuICovCgl1aW50MTZfdCBxdWV1ZXNbXTsgLyoqPCBR dWV1ZSBsaXN0LiAqLwp9OwoKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUv bWx4NV9yeHR4Lmg6MTM0CmVycm9yOiBkcml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oOiBwYXRj aCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9zZmMvc2ZjX2Zsb3cu Yy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCXN0cnVjdCBzZmNfcnhxICpyeHE7Cgl1 bnNpZ25lZCBpbnQgcnhxX2h3X2luZGV4X21pbjsKCXVuc2lnbmVkIGludCByeHFfaHdfaW5kZXhf bWF4OwoJY29uc3Qgc3RydWN0IHJ0ZV9ldGhfcnNzX2NvbmYgKnJzc19jb25mID0gcnNzLT5yc3Nf Y29uZjsKCXVpbnQ2NF90IHJzc19oZjsKLS0KCWlmIChyc3MtPm51bSA9PSAwKQoJCXJldHVybiAt RUlOVkFMOwoKCXJ4cV9zd19pbmRleCA9IHNhLT5yeHFfY291bnQgLSAxOwoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvc2ZjL3NmY19mbG93LmM6MTIzNQplcnJvcjogZHJpdmVycy9u ZXQvc2ZjL3NmY19mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRy aXZlcnMvbmV0L3RhcC90YXBfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJ CQkJaWYgKGVycikKCQkJCQlnb3RvIGV4aXRfYWN0aW9uX25vdF9zdXBwb3J0ZWQ7CgkJCX0KCQkJ aWYgKGZsb3cgJiYgcnNzKQoJCQkJZXJyID0gcnNzX2FkZF9hY3Rpb25zKGZsb3csIHBtZCwgcnNz LCBlcnJvcik7CgkJfSBlbHNlIHsKCQkJZ290byBleGl0X2FjdGlvbl9ub3Rfc3VwcG9ydGVkOwoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvdGFwL3RhcF9mbG93LmM6MTIxNQplcnJv cjogZHJpdmVycy9uZXQvdGFwL3RhcF9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNr aW5nIHBhdGNoIGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmMuLi4KZXJyb3I6IHdoaWxlIHNl YXJjaGluZyBmb3I6CgkJCQkgICAgIGkgPCBldGhfZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXM7ICsr aSkKCQkJCQlpZiAoZXRoX2Rldi0+ZGF0YS0+cnhfcXVldWVzW2ldKQoJCQkJCQlxdWV1ZVtqKytd ID0gaTsKCQkJCWFjdGlvbl9yc3MucnNzX2NvbmYgPSAmcnNzX2NvbmY7CgkJCQlhY3Rpb25fcnNz Lm51bSA9IGo7CgkJCQlhY3Rpb25fcnNzLnF1ZXVlID0gcXVldWU7CgkJCQlyZXQgPSBydGVfZmxv d192YWxpZGF0ZShzYS0+cG9ydGlkLCAmc2EtPmF0dHIsCgkJCQkJCQlzYS0+cGF0dGVybiwgc2Et PmFjdGlvbiwKCQkJCQkJCSZlcnIpOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZXhhbXBsZXMvaXBz ZWMtc2VjZ3cvaXBzZWMuYzoyMDIKZXJyb3I6IGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmM6 IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRl X2Zsb3cuYy4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZmxvdy5jOiBObyBzdWNoIGZp bGUgb3IgZGlyZWN0b3J5CkNoZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cu aC4uLgplcnJvcjogbGliL2xpYnJ0ZV9ldGhlci9ydGVfZmxvdy5oOiBObyBzdWNoIGZpbGUgb3Ig ZGlyZWN0b3J5CipSZXBvOiBkcGRrLW5leHQtdmlydGlvCkNoZWNraW5nIHBhdGNoIGFwcC90ZXN0 LXBtZC9jbWRsaW5lX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKLyoqIFN0 b3JhZ2UgZm9yIHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzIGluY2x1ZGluZyBleHRlcm5hbCBk YXRhLiAqLwpzdHJ1Y3QgYWN0aW9uX3Jzc19kYXRhIHsKCXN0cnVjdCBydGVfZmxvd19hY3Rpb25f cnNzIGNvbmY7Cgl1aW50MTZfdCBxdWV1ZVtBQ1RJT05fUlNTX1FVRVVFX05VTV07CglzdHJ1Y3Qg cnRlX2V0aF9yc3NfY29uZiByc3NfY29uZjsKCXVpbnQ4X3QgcnNzX2tleVtSU1NfSEFTSF9LRVlf TEVOR1RIXTsKfTsKCi8qKiBNYXhpbXVtIG51bWJlciBvZiBzdWJzZXF1ZW50IHRva2VucyBhbmQg YXJndW1lbnRzIG9uIHRoZSBzdGFjay4gKi8KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGFwcC90ZXN0 LXBtZC9jbWRsaW5lX2Zsb3cuYzoxOTIKZXJyb3I6IGFwcC90ZXN0LXBtZC9jbWRsaW5lX2Zsb3cu YzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggYXBwL3Rlc3QtcG1kL2NvbmZp Zy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCW9mZiA9IDA7CgkJaWYgKGRzdC5y c3MpCgkJCSpkc3QucnNzID0gKHN0cnVjdCBydGVfZmxvd19hY3Rpb25fcnNzKXsKCQkJCS5udW0g PSBzcmMucnNzLT5udW0sCgkJCX07Ci0tCgkJCX0KCQkJb2ZmICs9IHNpemU7CgkJfQoJCXNpemUg PSBvZmY7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBhcHAvdGVzdC1wbWQvY29uZmlnLmM6MTA4NApl cnJvcjogYXBwL3Rlc3QtcG1kL2NvbmZpZy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2lu ZyBwYXRjaCBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0Li4uCmVycm9yOiB3aGls ZSBzZWFyY2hpbmcgZm9yOgoKLi4gdGFibGU6OiBSU1MKCiAgICstLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgfCBGaWVsZCAgICAgICAgfCBWYWx1ZSAg ICAgICAgICAgICAgICAgICAgICAgICAgfAotLQogICArLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCgpBY3Rpb246IGBgUEZgYApeXl5eXl5eXl5eXl5eXgoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZG9jL2d1aWRlcy9wcm9nX2d1aWRlL3J0ZV9mbG93LnJzdDox MzA4CmVycm9yOiBkb2MvZ3VpZGVzL3Byb2dfZ3VpZGUvcnRlX2Zsb3cucnN0OiBwYXRjaCBkb2Vz IG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9lMTAwMC9lMTAwMF9ldGhkZXYu aC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCiNpZm5kZWYgX0UxMDAwX0VUSERFVl9I XwojZGVmaW5lIF9FMTAwMF9FVEhERVZfSF8KI2luY2x1ZGUgPHJ0ZV90aW1lLmg+CiNpbmNsdWRl IDxydGVfcGNpLmg+CgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvZTEw MDBfZXRoZGV2Lmg6NAplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvZTEwMDBfZXRoZGV2Lmg6IHBh dGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L2UxMDAwL2lnYl9l dGhkZXYuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKI2RlZmluZSBJR0JfREVGQVVM VF9UWF9IVEhSRVNIICAgICAgMQojZGVmaW5lIElHQl9ERUZBVUxUX1RYX1dUSFJFU0ggICAgICAo KGh3LT5tYWMudHlwZSA9PSBlMTAwMF84MjU3NikgPyAxIDogMTYpCgojZGVmaW5lIElHQl9IS0VZ X01BWF9JTkRFWCAxMAoKLyogQml0IHNoaWZ0IGFuZCBtYXNrICovCiNkZWZpbmUgSUdCXzRfQklU X1dJRFRIICAoQ0hBUl9CSVQgLyAyKQojZGVmaW5lIElHQl80X0JJVF9NQVNLICAgUlRFX0xFTjJN QVNLKElHQl80X0JJVF9XSURUSCwgdWludDhfdCkKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZl cnMvbmV0L2UxMDAwL2lnYl9ldGhkZXYuYzo0MQplcnJvcjogZHJpdmVycy9uZXQvZTEwMDAvaWdi X2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25l dC9lMTAwMC9pZ2JfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoKCXJzcyA9 IChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyAqKWFjdC0+Y29uZjsKCglpZiAoIXJz cyB8fCAhcnNzLT5udW0pIHsKCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZBTCwKCQkJ CVJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJYWN0LAoKZXJyb3I6IHBhdGNoIGZhaWxl ZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX2Zsb3cuYzoxMjkyCmVycm9yOiBkcml2ZXJzL25ldC9l MTAwMC9pZ2JfZmxvdy5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9lMTAwMC9pZ2Jfcnh0eC5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgp9 CgppbnQKaWdiX2NvbmZpZ19yc3NfZmlsdGVyKHN0cnVjdCBydGVfZXRoX2RldiAqZGV2LAoJCXN0 cnVjdCBpZ2JfcnRlX2Zsb3dfcnNzX2NvbmYgKmNvbmYsIGJvb2wgYWRkKQotLQoJc3RydWN0IHJ0 ZV9ldGhfcnNzX2NvbmYgcnNzX2NvbmYgPSBjb25mLT5yc3NfY29uZjsKCXN0cnVjdCBlMTAwMF9m aWx0ZXJfaW5mbyAqZmlsdGVyX2luZm8gPQoJCUUxMDAwX0RFVl9QUklWQVRFX1RPX0ZJTFRFUl9J TkZPKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwoJc3RydWN0IGUxMDAwX2h3ICpodyA9IEUxMDAw X0RFVl9QUklWQVRFX1RPX0hXKGRldi0+ZGF0YS0+ZGV2X3ByaXZhdGUpOwoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvZTEwMDAvaWdiX3J4dHguYzoyNzU5CmVycm9yOiBkcml2ZXJz L25ldC9lMTAwMC9pZ2Jfcnh0eC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGlu ZyBmb3I6CiNpbmNsdWRlIDxpbnR0eXBlcy5oPgojaW5jbHVkZSA8YXNzZXJ0Lmg+CgojaW5jbHVk ZSA8cnRlX2VhbC5oPgojaW5jbHVkZSA8cnRlX3N0cmluZ19mbnMuaD4KI2luY2x1ZGUgPHJ0ZV9w Y2kuaD4KCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L2k0MGUvaTQwZV9ldGhkZXYu YzoxMQplcnJvcjogZHJpdmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5v dCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZXRoZGV2LmguLi4K ZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CiNpZm5kZWYgX0k0MEVfRVRIREVWX0hfCiNkZWZp bmUgX0k0MEVfRVRIREVWX0hfCgojaW5jbHVkZSA8cnRlX2V0aF9jdHJsLmg+CiNpbmNsdWRlIDxy dGVfdGltZS5oPgotLQoKI2RlZmluZSBJNDBFX1ZMQU5fVEFHX1NJWkUgICAgICAgIDQKCiNkZWZp bmUgSTQwRV9BUV9MRU4gICAgICAgICAgICAgICAzMgoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvaTQwZS9pNDBlX2V0aGRldi5oOjUKZXJyb3I6IGRyaXZlcnMvbmV0L2k0MGUvaTQw ZV9ldGhkZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9u ZXQvaTQwZS9pNDBlX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKCglpZiAo YWN0aW9uX2ZsYWcpIHsKCQlmb3IgKG4gPSAwOyBuIDwgNjQ7IG4rKykgewoJCQlpZiAocnNzLT5y c3NfY29uZi0+cnNzX2hmICYgKGhmX2JpdCA8PCBuKSkgewoJCQkJY29uZl9pbmZvLT5yZWdpb25b MF0uaHdfZmxvd3R5cGVbMF0gPSBuOwoJCQkJY29uZl9pbmZvLT5yZWdpb25bMF0uZmxvd3R5cGVf bnVtID0gMTsKCQkJCWNvbmZfaW5mby0+cXVldWVfcmVnaW9uX251bWJlciA9IDE7CgplcnJvcjog cGF0Y2ggZmFpbGVkOiBkcml2ZXJzL25ldC9pNDBlL2k0MGVfZmxvdy5jOjQyMDUKZXJyb3I6IGRy aXZlcnMvbmV0L2k0MGUvaTQwZV9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5n IHBhdGNoIGRyaXZlcnMvbmV0L2l4Z2JlL2l4Z2JlX2V0aGRldi5jLi4uCmVycm9yOiB3aGlsZSBz ZWFyY2hpbmcgZm9yOgoKI2RlZmluZSBJWEdCRV9RVUVVRV9TVEFUX0NPVU5URVJTIChzaXplb2Yo aHdfc3RhdHMtPnFwcmMpIC8gc2l6ZW9mKGh3X3N0YXRzLT5xcHJjWzBdKSkKCiNkZWZpbmUgSVhH QkVfSEtFWV9NQVhfSU5ERVggMTAKCi8qIEFkZGl0aW9uYWwgdGltZXN5bmMgdmFsdWVzLiAqLwoj ZGVmaW5lIE5TRUNfUEVSX1NFQyAgICAgICAgICAgICAxMDAwMDAwMDAwTAojZGVmaW5lIElYR0JF X0lOQ1ZBTF8xMEdCICAgICAgICAweDY2NjY2NjY2CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuYzoxMDAKZXJyb3I6IGRyaXZlcnMvbmV0L2l4Z2Jl L2l4Z2JlX2V0aGRldi5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2 ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaC4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZv cjoKCiNpZm5kZWYgX0lYR0JFX0VUSERFVl9IXwojZGVmaW5lIF9JWEdCRV9FVEhERVZfSF8KI2lu Y2x1ZGUgImJhc2UvaXhnYmVfdHlwZS5oIgojaW5jbHVkZSAiYmFzZS9peGdiZV9kY2IuaCIKI2lu Y2x1ZGUgImJhc2UvaXhnYmVfZGNiXzgyNTk5LmgiCgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9peGdiZS9peGdiZV9ldGhkZXYuaDo0CmVycm9yOiBkcml2ZXJzL25ldC9peGdiZS9p eGdiZV9ldGhkZXYuaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVy cy9uZXQvaXhnYmUvaXhnYmVfZmxvdy5jLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoK CXJzcyA9IChjb25zdCBzdHJ1Y3QgcnRlX2Zsb3dfYWN0aW9uX3JzcyAqKWFjdC0+Y29uZjsKCglp ZiAoIXJzcyB8fCAhcnNzLT5udW0pIHsKCQlydGVfZmxvd19lcnJvcl9zZXQoZXJyb3IsIEVJTlZB TCwKCQkJCVJURV9GTE9XX0VSUk9SX1RZUEVfQUNUSU9OLAoJCQkJYWN0LAoKZXJyb3I6IHBhdGNo IGZhaWxlZDogZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfZmxvdy5jOjI3NjEKZXJyb3I6IGRyaXZl cnMvbmV0L2l4Z2JlL2l4Z2JlX2Zsb3cuYzogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcg cGF0Y2ggZHJpdmVycy9uZXQvaXhnYmUvaXhnYmVfcnh0eC5jLi4uCkh1bmsgIzEgc3VjY2VlZGVk IGF0IDU3MTAgKG9mZnNldCAxODggbGluZXMpLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CXVpbnQxNl90IGo7Cgl1aW50MTZfdCBzcF9yZXRhX3NpemU7Cgl1aW50MzJfdCByZXRhX3JlZzsK CXN0cnVjdCBydGVfZXRoX3Jzc19jb25mIHJzc19jb25mID0gY29uZi0+cnNzX2NvbmY7CglzdHJ1 Y3QgaXhnYmVfZmlsdGVyX2luZm8gKmZpbHRlcl9pbmZvID0KCQlJWEdCRV9ERVZfUFJJVkFURV9U T19GSUxURVJfSU5GTyhkZXYtPmRhdGEtPmRldl9wcml2YXRlKTsKCgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9peGdiZS9peGdiZV9yeHR4LmM6NTUzMQplcnJvcjogZHJpdmVycy9u ZXQvaXhnYmUvaXhnYmVfcnh0eC5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRj aCBkcml2ZXJzL25ldC9tbHg0L21seDQuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CQkJICAgICAiIGZvciBVRFAgUlNTIGFuZCBpbm5lciBWWExBTiBSU1MiKTsKCQkJLyogRmFrZSBz dXBwb3J0IGZvciBhbGwgcG9zc2libGUgUlNTIGhhc2ggZmllbGRzLiAqLwoJCQlwcml2LT5od19y c3Nfc3VwID0gflVJTlQ2NF9DKDApOwoJCQlwcml2LT5od19yc3Nfc3VwID0gbWx4NF9jb252X3Jz c19oZihwcml2LCAtMSk7CgkJCS8qIEZpbHRlciBvdXQga25vd24gdW5zdXBwb3J0ZWQgZmllbGRz LiAqLwoJCQlwcml2LT5od19yc3Nfc3VwICY9CgkJCQl+KHVpbnQ2NF90KShJQlZfUlhfSEFTSF9T UkNfUE9SVF9VRFAgfAoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NC9tbHg0 LmM6NTY5CmVycm9yOiBkcml2ZXJzL25ldC9tbHg0L21seDQuYzogcGF0Y2ggZG9lcyBub3QgYXBw bHkKQ2hlY2tpbmcgcGF0Y2ggZHJpdmVycy9uZXQvbWx4NC9tbHg0X2Zsb3cuYy4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKfTsKCi8qKgogKiBDb252ZXJ0IERQREsgUlNTIGhhc2ggZmll bGRzIHRvIHRoZWlyIFZlcmJzIGVxdWl2YWxlbnQuCiAqCi0tCm1seDRfY29udl9yc3NfaGYoc3Ry dWN0IHByaXYgKnByaXYsIHVpbnQ2NF90IHJzc19oZikKewoJZW51bSB7IElQVjQsIElQVjYsIFRD UCwgVURQLCB9OwoJY29uc3QgdWludDY0X3QgaW5bXSA9IHsKCmVycm9yOiBwYXRjaCBmYWlsZWQ6 IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93LmM6NzYKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQv bWx4NF9mbG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMv bmV0L21seDQvbWx4NF9mbG93LmguLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgovKiBt bHg0X2Zsb3cuYyAqLwoKdWludDY0X3QgbWx4NF9jb252X3Jzc19oZihzdHJ1Y3QgcHJpdiAqcHJp diwgdWludDY0X3QgcnNzX2hmKTsKaW50IG1seDRfZmxvd19zeW5jKHN0cnVjdCBwcml2ICpwcml2 LCBzdHJ1Y3QgcnRlX2Zsb3dfZXJyb3IgKmVycm9yKTsKdm9pZCBtbHg0X2Zsb3dfY2xlYW4oc3Ry dWN0IHByaXYgKnByaXYpOwppbnQgbWx4NF9maWx0ZXJfY3RybChzdHJ1Y3QgcnRlX2V0aF9kZXYg KmRldiwKCmVycm9yOiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93Lmg6 NDcKZXJyb3I6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9mbG93Lmg6IHBhdGNoIGRvZXMgbm90IGFw cGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHEuYy4uLgplcnJvcjog d2hpbGUgc2VhcmNoaW5nIGZvcjoKICovCnN0cnVjdCBtbHg0X3JzcyAqCm1seDRfcnNzX2dldChz dHJ1Y3QgcHJpdiAqcHJpdiwgdWludDY0X3QgZmllbGRzLAoJICAgICB1aW50OF90IGtleVtNTFg0 X1JTU19IQVNIX0tFWV9TSVpFXSwKCSAgICAgdWludDE2X3QgcXVldWVzLCBjb25zdCB1aW50MTZf dCBxdWV1ZV9pZFtdKQp7CglzdHJ1Y3QgbWx4NF9yc3MgKnJzczsKCmVycm9yOiBwYXRjaCBmYWls ZWQ6IGRyaXZlcnMvbmV0L21seDQvbWx4NF9yeHEuYzo4OAplcnJvcjogZHJpdmVycy9uZXQvbWx4 NC9tbHg0X3J4cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJz L25ldC9tbHg0L21seDRfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgppbnQg bWx4NF9yc3NfaW5pdChzdHJ1Y3QgcHJpdiAqcHJpdik7CnZvaWQgbWx4NF9yc3NfZGVpbml0KHN0 cnVjdCBwcml2ICpwcml2KTsKc3RydWN0IG1seDRfcnNzICptbHg0X3Jzc19nZXQoc3RydWN0IHBy aXYgKnByaXYsIHVpbnQ2NF90IGZpZWxkcywKCQkJICAgICAgdWludDhfdCBrZXlbTUxYNF9SU1Nf SEFTSF9LRVlfU0laRV0sCgkJCSAgICAgIHVpbnQxNl90IHF1ZXVlcywgY29uc3QgdWludDE2X3Qg cXVldWVfaWRbXSk7CnZvaWQgbWx4NF9yc3NfcHV0KHN0cnVjdCBtbHg0X3JzcyAqcnNzKTsKaW50 IG1seDRfcnNzX2F0dGFjaChzdHJ1Y3QgbWx4NF9yc3MgKnJzcyk7CgplcnJvcjogcGF0Y2ggZmFp bGVkOiBkcml2ZXJzL25ldC9tbHg0L21seDRfcnh0eC5oOjEyNgplcnJvcjogZHJpdmVycy9uZXQv bWx4NC9tbHg0X3J4dHguaDogcGF0Y2ggZG9lcyBub3QgYXBwbHkKQ2hlY2tpbmcgcGF0Y2ggZHJp dmVycy9uZXQvbWx4NS9tbHg1X2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoK CVRBSUxRX0VOVFJZKHJ0ZV9mbG93KSBuZXh0OyAvKio8IFBvaW50ZXIgdG8gdGhlIG5leHQgZmxv dyBzdHJ1Y3R1cmUuICovCgl1aW50MzJfdCBtYXJrOjE7IC8qKjwgU2V0IGlmIHRoZSBmbG93IGlz IG1hcmtlZC4gKi8KCXVpbnQzMl90IGRyb3A6MTsgLyoqPCBEcm9wIHF1ZXVlLiAqLwoJdWludDE2 X3QgcXVldWVzX247IC8qKjwgTnVtYmVyIG9mIGVudHJpZXMgaW4gcXVldWVbXS4gKi8KCXVpbnQx Nl90ICgqcXVldWVzKVtdOyAvKio8IFF1ZXVlcyBpbmRleGVzIHRvIHVzZS4gKi8KCXN0cnVjdCBy dGVfZXRoX3Jzc19jb25mIHJzc19jb25mOyAvKio8IFJTUyBjb25maWd1cmF0aW9uICovCgl1aW50 OF90IHJzc19rZXlbNDBdOyAvKio8IGNvcHkgb2YgdGhlIFJTUyBrZXkuICovCglzdHJ1Y3QgaWJ2 X2NvdW50ZXJfc2V0ICpjczsgLyoqPCBIb2xkcyB0aGUgY291bnRlcnMgZm9yIHRoZSBydWxlLiAq LwoJc3RydWN0IG1seDVfZmxvd19jb3VudGVyX3N0YXRzIGNvdW50ZXJfc3RhdHM7LyoqPFRoZSBj b3VudGVyIHN0YXRzLiAqLwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvbWx4NS9t bHg1X2Zsb3cuYzoyMTQKZXJyb3I6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9mbG93LmM6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHEu Yy4uLgplcnJvcjogd2hpbGUgc2VhcmNoaW5nIGZvcjoKICogICBUaGUgVmVyYnMgb2JqZWN0IGlu aXRpYWxpc2VkLCBOVUxMIG90aGVyd2lzZSBhbmQgcnRlX2Vycm5vIGlzIHNldC4KICovCnN0cnVj dCBtbHg1X2luZF90YWJsZV9pYnYgKgptbHg1X2luZF90YWJsZV9pYnZfbmV3KHN0cnVjdCBydGVf ZXRoX2RldiAqZGV2LCB1aW50MTZfdCBxdWV1ZXNbXSwKCQkgICAgICAgdWludDE2X3QgcXVldWVz X24pCnsKCXN0cnVjdCBwcml2ICpwcml2ID0gZGV2LT5kYXRhLT5kZXZfcHJpdmF0ZTsKCXN0cnVj dCBtbHg1X2luZF90YWJsZV9pYnYgKmluZF90Ymw7CgplcnJvcjogcGF0Y2ggZmFpbGVkOiBkcml2 ZXJzL25ldC9tbHg1L21seDVfcnhxLmM6MTIxOAplcnJvcjogZHJpdmVycy9uZXQvbWx4NS9tbHg1 X3J4cS5jOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2luZyBwYXRjaCBkcml2ZXJzL25ldC9t bHg1L21seDVfcnh0eC5oLi4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJTElTVF9FTlRS WShtbHg1X2luZF90YWJsZV9pYnYpIG5leHQ7IC8qIFBvaW50ZXIgdG8gdGhlIG5leHQgZWxlbWVu dC4gKi8KCXJ0ZV9hdG9taWMzMl90IHJlZmNudDsgLyogUmVmZXJlbmNlIGNvdW50ZXIuICovCglz dHJ1Y3QgaWJ2X3J3cV9pbmRfdGFibGUgKmluZF90YWJsZTsgLyoqPCBJbmRpcmVjdGlvbiB0YWJs ZS4gKi8KCXVpbnQxNl90IHF1ZXVlc19uOyAvKio8IE51bWJlciBvZiBxdWV1ZXMgaW4gdGhlIGxp c3QuICovCgl1aW50MTZfdCBxdWV1ZXNbXTsgLyoqPCBRdWV1ZSBsaXN0LiAqLwp9OwoKCmVycm9y OiBwYXRjaCBmYWlsZWQ6IGRyaXZlcnMvbmV0L21seDUvbWx4NV9yeHR4Lmg6MTM0CmVycm9yOiBk cml2ZXJzL25ldC9tbHg1L21seDVfcnh0eC5oOiBwYXRjaCBkb2VzIG5vdCBhcHBseQpDaGVja2lu ZyBwYXRjaCBkcml2ZXJzL25ldC9zZmMvc2ZjX2Zsb3cuYy4uLgplcnJvcjogd2hpbGUgc2VhcmNo aW5nIGZvcjoKCXN0cnVjdCBzZmNfcnhxICpyeHE7Cgl1bnNpZ25lZCBpbnQgcnhxX2h3X2luZGV4 X21pbjsKCXVuc2lnbmVkIGludCByeHFfaHdfaW5kZXhfbWF4OwoJY29uc3Qgc3RydWN0IHJ0ZV9l dGhfcnNzX2NvbmYgKnJzc19jb25mID0gcnNzLT5yc3NfY29uZjsKCXVpbnQ2NF90IHJzc19oZjsK LS0KCWlmIChyc3MtPm51bSA9PSAwKQoJCXJldHVybiAtRUlOVkFMOwoKCXJ4cV9zd19pbmRleCA9 IHNhLT5yeHFfY291bnQgLSAxOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJpdmVycy9uZXQvc2Zj L3NmY19mbG93LmM6MTIzNQplcnJvcjogZHJpdmVycy9uZXQvc2ZjL3NmY19mbG93LmM6IHBhdGNo IGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGRyaXZlcnMvbmV0L3RhcC90YXBfZmxvdy5j Li4uCmVycm9yOiB3aGlsZSBzZWFyY2hpbmcgZm9yOgoJCQkJaWYgKGVycikKCQkJCQlnb3RvIGV4 aXRfYWN0aW9uX25vdF9zdXBwb3J0ZWQ7CgkJCX0KCQkJaWYgKGZsb3cgJiYgcnNzKQoJCQkJZXJy ID0gcnNzX2FkZF9hY3Rpb25zKGZsb3csIHBtZCwgcnNzLCBlcnJvcik7CgkJfSBlbHNlIHsKCQkJ Z290byBleGl0X2FjdGlvbl9ub3Rfc3VwcG9ydGVkOwoKZXJyb3I6IHBhdGNoIGZhaWxlZDogZHJp dmVycy9uZXQvdGFwL3RhcF9mbG93LmM6MTIxNQplcnJvcjogZHJpdmVycy9uZXQvdGFwL3RhcF9m bG93LmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNoZWNraW5nIHBhdGNoIGV4YW1wbGVzL2lwc2Vj LXNlY2d3L2lwc2VjLmMuLi4KZXJyb3I6IHdoaWxlIHNlYXJjaGluZyBmb3I6CgkJCQkgICAgIGkg PCBldGhfZGV2LT5kYXRhLT5uYl9yeF9xdWV1ZXM7ICsraSkKCQkJCQlpZiAoZXRoX2Rldi0+ZGF0 YS0+cnhfcXVldWVzW2ldKQoJCQkJCQlxdWV1ZVtqKytdID0gaTsKCQkJCWFjdGlvbl9yc3MucnNz X2NvbmYgPSAmcnNzX2NvbmY7CgkJCQlhY3Rpb25fcnNzLm51bSA9IGo7CgkJCQlhY3Rpb25fcnNz LnF1ZXVlID0gcXVldWU7CgkJCQlyZXQgPSBydGVfZmxvd192YWxpZGF0ZShzYS0+cG9ydGlkLCAm c2EtPmF0dHIsCgkJCQkJCQlzYS0+cGF0dGVybiwgc2EtPmFjdGlvbiwKCQkJCQkJCSZlcnIpOwoK ZXJyb3I6IHBhdGNoIGZhaWxlZDogZXhhbXBsZXMvaXBzZWMtc2VjZ3cvaXBzZWMuYzoyMDIKZXJy b3I6IGV4YW1wbGVzL2lwc2VjLXNlY2d3L2lwc2VjLmM6IHBhdGNoIGRvZXMgbm90IGFwcGx5CkNo ZWNraW5nIHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cuYy4uLgplcnJvcjogbGliL2xp YnJ0ZV9ldGhlci9ydGVfZmxvdy5jOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CkNoZWNraW5n IHBhdGNoIGxpYi9saWJydGVfZXRoZXIvcnRlX2Zsb3cuaC4uLgplcnJvcjogbGliL2xpYnJ0ZV9l dGhlci9ydGVfZmxvdy5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CgpEUERLIFNUViB0ZWFt --===============2705843532454590656==--