Name: series-workflowww6jh Phase: Failed StartedAt: 2026-08-05 02:39:43 +0000 UTC FinishedAt: 2026-08-05 03:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflowww6jh[0] Phase: Succeeded StartedAt: 2026-08-05 02:39:43 +0000 UTC FinishedAt: 2026-08-05 03:18:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowww6jh[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 02:39:43 +0000 UTC FinishedAt: 2026-08-05 03:18:20 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAzOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDM6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NzkyNWRjYjQ4N2E0NjBjMjViZmY4Y2JlNTQ0Mzk1ZTFiNDIxZjkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwMzoxNzo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuaW5kZXggYTI2YzhiODU1MjIyMi4uODY4OTExNjNlMGVmNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW16b25lLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW16b25lLmhcbkBAIC0yMDcwLDcgJiM0MzsyMDcwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlvbih1bnNpZ25lZCBsb25nIG5yKVxuICNlbmRpZlxuIFx0cmV0dXJuIFx1MDAyNm1lbV9zZWN0aW9uW3Jvb3RdW25yIFx1MDAyNiBTRUNUSU9OX1JPT1RfTUFTS107XG4gfVxuLWV4dGVybiBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKTtcbiBcbiAvKlxuICAqIFdlIHVzZSB0aGUgbG93ZXIgYml0cyBvZiB0aGUgbWVtX21hcCBwb2ludGVyIHRvIHN0b3JlIGEgbGl0dGxlIGJpdCBvZlxuZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5jIGIvbW0vc3BhcnNlLmNcbmluZGV4IDcwNGE5ZGVjMmI5YWYuLjQ2NDU4ZTUzMDBlMjYgMTAwNjQ0XG4tLS0gYS9tbS9zcGFyc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLmNcbkBAIC0yMTMsMTYgJiM0MzsyMTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbWVtYmxvY2tzX3ByZXNlbnQodm9pZClcbiBcdFx0bWVtb3J5X3ByZXNlbnQobmlkLCBzdGFydCwgZW5kKTtcbiB9XG4gXG4tc3RhdGljIHVuc2lnbmVkIGxvbmcgdXNlbWFwX3NpemUodm9pZClcbi17XG4tXHRyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7XG4tfVxuLVxuLXNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXG4te1xuLVx0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKCk7XG4tfVxuLVxuICNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbiB1bnNpZ25lZCBsb25nIF9faW5pdCBzZWN0aW9uX21hcF9zaXplKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5oIGIvbW0vc3BhcnNlLmhcbmluZGV4IDk1YWEwMzEyMTNmMjIuLjNiNzQ0NjY3YTdlNjIgMTAwNjQ0XG4tLS0gYS9tbS9zcGFyc2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLmhcbkBAIC00Nyw2ICYjNDM7NDcsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc2VjdGlvbl9tYXJrX3ByZXNlbnQoc3RydWN0IG1lbV9zZWN0aW9uICptcyxcbiBcbiBcdG1zLVx1MDAzZXNlY3Rpb25fbWVtX21hcCB8PSBTRUNUSU9OX01BUktFRF9QUkVTRU5UO1xuIH1cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLFxuJiM0MztcdFx0XHQgICAgIEJJVFNfVE9fTE9OR1MoU0VDVElPTl9CTE9DS0ZMQUdTX0JJVFMpKTtcbiYjNDM7fVxuICNlbHNlXG4gc3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0KHZvaWQpIHt9XG4gI2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMzoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3JpbmcgdGhhdCBtb3ZlcyB0aGUgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZ1bmN0aW9uIHRvIGEgaGVhZGVyIGZpbGUgYW5kIHNpbXBsaWZpZXMgaXRzIHNpemUgY2FsY3VsYXRpb24gdXNpbmcgdGhlIGBzdHJ1Y3Rfc2l6ZV90YCBtYWNyby4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgbmV3IHJlYWNoYWJsZSBjb2RlIHBhdGhzIHRoYXQgcmVxdWlyZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ3OTI1ZGNiNDg3YTQ2MGMyNWJmZjhjYmU1NDQzOTVlMWI0MjFmOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDAzOjE3OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaCBiL2luY2x1ZGUvbGludXgvbW16b25lLmgKaW5kZXggYTI2YzhiODU1MjIyMi4uODY4OTExNjNlMGVmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0yMDcwLDcgJiM0MzsyMDcwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlvbih1bnNpZ25lZCBsb25nIG5yKQogI2VuZGlmCiAJcmV0dXJuICZhbXA7bWVtX3NlY3Rpb25bcm9vdF1bbnIgJmFtcDsgU0VDVElPTl9ST09UX01BU0tdOwogfQotZXh0ZXJuIHNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpOwogCiAvKgogICogV2UgdXNlIHRoZSBsb3dlciBiaXRzIG9mIHRoZSBtZW1fbWFwIHBvaW50ZXIgdG8gc3RvcmUgYSBsaXR0bGUgYml0IG9mCmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuYyBiL21tL3NwYXJzZS5jCmluZGV4IDcwNGE5ZGVjMmI5YWYuLjQ2NDU4ZTUzMDBlMjYgMTAwNjQ0Ci0tLSBhL21tL3NwYXJzZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3NwYXJzZS5jCkBAIC0yMTMsMTYgJiM0MzsyMTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbWVtYmxvY2tzX3ByZXNlbnQodm9pZCkKIAkJbWVtb3J5X3ByZXNlbnQobmlkLCBzdGFydCwgZW5kKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgdXNlbWFwX3NpemUodm9pZCkKLXsKLQlyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7Ci19Ci0KLXNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpCi17Ci0JcmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKCk7Ci19Ci0KICNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAKIHVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5oIGIvbW0vc3BhcnNlLmgKaW5kZXggOTVhYTAzMTIxM2YyMi4uM2I3NDQ2NjdhN2U2MiAxMDA2NDQKLS0tIGEvbW0vc3BhcnNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLmgKQEAgLTQ3LDYgJiM0Mzs0NywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zZWN0aW9uX21hcmtfcHJlc2VudChzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLAogCiAJbXMtJmd0O3NlY3Rpb25fbWVtX21hcCB8PSBTRUNUSU9OX01BUktFRF9QUkVTRU5UOwogfQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLAomIzQzOwkJCSAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpOwomIzQzO30KICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgc3BhcnNlX2luaXQodm9pZCkge30KICNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVmYWN0b3JpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb3ZpbmcgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZyb20gYG1tL3NwYXJzZS5jYCB0byBgbW0vc3BhcnNlLmhgIGFuZCBtYWtpbmcgaXQgYSBgc3RhdGljIGlubGluZWAgZnVuY3Rpb24uIFRoZSBjb2RlIGFsc28gc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24gaXRzZWxmIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90YC4gSG1tLCBJJiMzOTttIHNsaWdodGx5IHRocm93biBieSBgc3RydWN0X3NpemVfdGDigJRJIHdhbnQgdG8gYmUgc3VyZSBpdCYjMzk7cyB0aGUgcmlnaHQgdHlwZS4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIGl0JiMzOTtzIG5ldyBvciBpZiBJJiMzOTttIGp1c3QgbWlzcmVtZW1iZXJpbmcgdGhlIG5hbWUsIG9yIGlmIEkmIzM5O20gZ2V0dGluZyBtaXhlZCB1cCB3aXRoIGBzdHJ1Y3Rfc2l6ZWAuCgpSaWdodCwgbGV0IG1lIHNlZSBleGFjdGx5IHdoYXQgdGhlIGRpZmYgZG9lcy4gSXQgKnJlbW92ZXMqIGB1c2VtYXBfc2l6ZWAgYW5kIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmcm9tIGBtbS9zcGFyc2UuY2AgYW5kICphZGRzKiBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgdG8gYG1tL3NwYXJzZS5oYC4gQWgsIGdvdCBpdDogdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3JpbmcvY2xlYW51cC4gVGhlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBOb3cgSSBuZWVkIHRvIGNvbnNpZGVyIGZ1bmN0aW9uYWwgaW1wYWN0LiBEb2VzIHRoaXMgY2hhbmdlIGFueSBvZiB0aGUgdW5kZXJseWluZyBsb2dpYz8KCmBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBpcyB1c2VkIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBvciBzcGFyc2UgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBzbyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgY2hhbmdlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gR2VuZXJhbGx5LCB0aGlzIGtpbmQgb2YgcmVmYWN0b3JpbmcsIG1vdmluZyBhIGZ1bmN0aW9uIHRvIGEgaGVhZGVyIGFuZCBtYWtpbmcgaXQgaW5saW5lLCBzaG91bGRuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb2RlIHBhdGhzIHRoYXQgd291bGQgbmVlZCBmdXp6aW5nIHVubGVzcywgYW5kIHRoaXMgaXMgdGhlIGltcG9ydGFudCBjYXZlYXQsIGl0IGFsc28gZml4ZXMgYSBwcmUtZXhpc3RpbmcgYnVnLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBzdXJlLgoKT25lIG1vcmUgcXVpY2sgY2hlY2s6IGFnYWluLCBgc3RydWN0X3NpemVfdGA/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgb2YgdGhlIG5hbWUuIExldCBtZSBncmVwIGZvciBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgYW5kIHNlZSB3aGF0IGNvbWVzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbV9zZWN0aW9uX3VzYWdlX3NpemUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc3BhcnNlLXZtZW1tYXAuYz04MjM9c3RhdGljIHN0cnVjdCBwYWdlICogX19tZW1pbml0IHNlY3Rpb25fYWN0aXZhdGUoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy04MzItXHRpZiAoIW1zLVx1MDAzZXVzYWdlKSB7XG5tbS9zcGFyc2Utdm1lbW1hcC5jOjgzMzpcdFx0dXNhZ2UgPSBremFsbG9jKG1lbV9zZWN0aW9uX3VzYWdlX3NpemUoKSwgR0ZQX0tFUk5FTCk7XG5tbS9zcGFyc2Utdm1lbW1hcC5jLTgzNC1cdFx0aWYgKCF1c2FnZSlcbi0tXG5tbS9zcGFyc2UuYz0yNDk9dm9pZCBfX2luaXQgc3BhcnNlX2luaXRfZWFybHlfc2VjdGlvbihpbnQgbmlkLCBzdHJ1Y3QgcGFnZSAqbWFwLFxuLS1cbm1tL3NwYXJzZS5jLTI1NC1cdFx0XHRzcGFyc2VfdXNhZ2VidWYsIFNFQ1RJT05fSVNfRUFSTFkgfCBmbGFncyk7XG5tbS9zcGFyc2UuYzoyNTU6XHRzcGFyc2VfdXNhZ2VidWYgPSAodm9pZCAqKXNwYXJzZV91c2FnZWJ1ZiAmIzQzOyBtZW1fc2VjdGlvbl91c2FnZV9zaXplKCk7XG5tbS9zcGFyc2UuYy0yNTYtfVxuLS1cbm1tL3NwYXJzZS5jPTI1OD1zdGF0aWMgaW50IF9faW5pdCBzcGFyc2VfdXNhZ2VfaW5pdChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIG1hcF9jb3VudClcbi0tXG5tbS9zcGFyc2UuYy0yNjEtXG5tbS9zcGFyc2UuYzoyNjI6XHRzaXplID0gbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSgpICogbWFwX2NvdW50O1xubW0vc3BhcnNlLmMtMjYzLVx0c3BhcnNlX3VzYWdlYnVmID0gbWVtYmxvY2tfYWxsb2Nfbm9kZShzaXplLCBTTVBfQ0FDSEVfQllURVMsIG5pZCk7XG4tLVxubW0vc3BhcnNlLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIF9fc2VjdGlvbl9tYXJrX3ByZXNlbnQoc3RydWN0IG1lbV9zZWN0aW9uICptcyxcbi0tXG5tbS9zcGFyc2UuaC01MC1cbm1tL3NwYXJzZS5oOjUxOnN0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbm1tL3NwYXJzZS5oLTUyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTc2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGlzIOKAkyBiYXNpY2FsbHksIHdoYXQgSSYjMzk7bSB0aGlua2luZyBhcyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGNoYW5nZS4KCioqUmVmYWN0b3JpbmcgU2NydXRpbnkqKgoKUmlnaHQsIHNvIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIG9mIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYC4gIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCAmIzM0O0lzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyYjMzQ7IEkgbWVhbiwgaXQgKmxvb2tzKiBpbmNyZWRpYmx5IHNpbXBsZS4gSXQmIzM5O3MganVzdCBhIGNoYW5nZSBpbiBob3cgdGhlIHNpemUgaXMgY29tcHV0ZWQsIGFuZCB0aGV5JiMzOTt2ZSBtb3ZlZCB0aGF0IGNhbGN1bGF0aW9uIGludG8gYSBoZWFkZXIuIE5vdCBleGFjdGx5IHJvY2tldCBzY2llbmNlLiBJIGhhdmUgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIHJpc2svcmV3YXJkLgoKSG9sZCBvbi4uLiByZWFkaW5nIG1vcmUgY2xvc2VseS4gQWgsIG5vdyBJIHNlZS4gSXQmIzM5O3MgdXNpbmcgYHN0cnVjdF9zaXplX3RgLiBUaGF0IHJpbmdzIGEgYmVsbC4gIEl0IHNvdW5kcyBsaWtlIGEgbWFjcm8gZGVzaWduZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgc3RydWN0IHRoYXQgaGFzIGEgdHJhaWxpbmcgYXJyYXksIGRvZXNuJiMzOTt0IGl0PyBMZXQgbWUganVzdCBtYWtlIHN1cmUuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgd2hhdCB0aGlzIGlzLiBJcyBpdCBgc3RydWN0X3NpemVfdGA/IE9yIGlzIGl0IHNvbWV0aGluZyBlbHNlLCBsaWtlIGp1c3QgYHN0cnVjdF9zaXplYD8gIEkgbmVlZCB0byBjb25maXJtIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSBmdXp6aW5nIHJhYmJpdCBob2xlLiBUaGF0IG1hY3JvIGlzIHdoZXJlIGFsbCB0aGUgcG90ZW50aWFsIHRyb3VibGUgd2lsbCBsaWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0X3NpemVfdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX2Jpbi5jPTY0PXZvaWQgY3NfZHNwX21vY2tfYmluX2FkZF9yYXdfYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX2Jpbl9idWlsZGVyICpidWlsZGVyLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmMtNjktXHRzdHJ1Y3Qgd21md19jb2VmZl9pdGVtICppdGVtO1xuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja19iaW4uYzo3MDpcdHNpemVfdCBieXRlc19uZWVkZWQgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X2NvZWZmX2l0ZW0sIGRhdGEsIHBheWxvYWRfbGVuX2J5dGVzKTtcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmMtNzEtXG4tLVxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM9OTk9dm9pZCBjc19kc3BfbW9ja193bWZ3X2FkZF9yYXdfYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0xMDMtXHRzdHJ1Y3Qgd21md19yZWdpb24gKmhlYWRlciA9IGJ1aWxkZXItXHUwMDNld3JpdGVfcDtcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjEwNDpcdHVuc2lnbmVkIGludCBieXRlc19uZWVkZWQgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3JlZ2lvbiwgZGF0YSwgcGF5bG9hZF9sZW5fYnl0ZXMpO1xuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMTA1LVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTE3MD12b2lkIGNzX2RzcF9tb2NrX3dtZndfc3RhcnRfYWxnX2luZm9fYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0yNDctXHRcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyICovXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzoyNDg6XHRcdG9mZnNldCA9IHJvdW5kX3VwKDQgJiM0Mzsgc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19zaG9ydF9zdHJpbmcsIGRhdGEsIG5hbWVfbGVuKSxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTI0OS1cdFx0XHRcdCAgc2l6ZW9mKF9fbGUzMikpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTI2ND12b2lkIGNzX2RzcF9tb2NrX3dtZndfYWRkX2NvZWZmX2Rlc2Moc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zMjctXHRcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyIG11bHRpcGxlICovXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozMjg6XHRcdHBsZTMyICYjNDM7PSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgc2hvcnRuYW1lX2xlbiksXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zMjktXHRcdFx0XHQgIHNpemVvZigqcGxlMzIpKSAvIHNpemVvZigqcGxlMzIpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTMzNS1cdFx0LyogUm91bmQgdXAgdG8gbmV4dCBfX2xlMzIgbXVsdGlwbGUgKi9cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjMzNjpcdFx0cGxlMzIgJiM0Mzs9IHJvdW5kX3VwKHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfc2hvcnRfc3RyaW5nLCBkYXRhLCBmdWxsbmFtZV9sZW4pLFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzM3LVx0XHRcdFx0ICBzaXplb2YoKnBsZTMyKSkgLyBzaXplb2YoKnBsZTMyKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zNDMtXHRcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyIG11bHRpcGxlICovXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozNDQ6XHRcdHBsZTMyICYjNDM7PSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X2xvbmdfc3RyaW5nLCBkYXRhLCBkZXNjcmlwdGlvbl9sZW4pLFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzQ1LVx0XHRcdFx0ICBzaXplb2YoKnBsZTMyKSkgLyBzaXplb2YoKnBsZTMyKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYz0zNTg9dm9pZCBjc19kc3BfbW9ja193bWZ3X2VuZF9hbGdfaW5mb19ibG9jayhzdHJ1Y3QgY3NfZHNwX21vY2tfd21md19idWlsZGVyICpidWlsZGVyKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTM4My1cdFx0c2hvcnRzdHJpbmcgPSAoY29uc3Qgc3RydWN0IHdtZndfc2hvcnRfc3RyaW5nICopXHUwMDI2cmduLVx1MDAzZWRhdGFbb2Zmc2V0XTtcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjM4NDpcdFx0b2Zmc2V0ICYjNDM7PSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgc2hvcnRzdHJpbmctXHUwMDNlbGVuKSxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTM4NS1cdFx0XHRcdCAgIHNpemVvZihfX2xlMzIpKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zODgtXHRcdGxvbmdzdHJpbmcgPSAoY29uc3Qgc3RydWN0IHdtZndfbG9uZ19zdHJpbmcgKilcdTAwMjZyZ24tXHUwMDNlZGF0YVtvZmZzZXRdO1xuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM6Mzg5Olx0XHRvZmZzZXQgJiM0Mzs9IHJvdW5kX3VwKHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfbG9uZ19zdHJpbmcsIGRhdGEsXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zOTAtXHRcdFx0XHQgICBsZTE2X3RvX2NwdShsb25nc3RyaW5nLVx1MDAzZWxlbikpLFxuLS1cbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtMTgtI2RlZmluZSBQQ0FDSEVfQ0FDSEVfU0VHU19NQVhcdFx0KDEwMjQgKiAxMDI0KVx0LyogbWF4aW11bSBjYWNoZSBzaXplIGZvciBlYWNoIGRldmljZSBpcyAxNlQgKi9cbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg6MTk6I2RlZmluZSBQQ0FDSEVfS1NFVF9PTk1FRElBX1NJWkVfTUFYXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwY2FjaGVfY2FjaGVfa3NldF9vbm1lZGlhLCBkYXRhLCBQQ0FDSEVfS1NFVF9LRVlTX01BWClcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtMjAtI2RlZmluZSBQQ0FDSEVfS1NFVF9TSVpFXHRcdChzaXplb2Yoc3RydWN0IHBjYWNoZV9jYWNoZV9rc2V0KSAmIzQzOyBzaXplb2Yoc3RydWN0IHBjYWNoZV9jYWNoZV9rZXlfb25tZWRpYSkgKiBQQ0FDSEVfS1NFVF9LRVlTX01BWClcbi0tXG5kcml2ZXJzL21kL2RtLXBjYWNoZS9jYWNoZS5oPTUwNj1zdGF0aWMgaW5saW5lIHUzMiBnZXRfa3NldF9vbm1lZGlhX3NpemUoc3RydWN0IHBjYWNoZV9jYWNoZV9rc2V0X29ubWVkaWEgKmtzZXRfb25tZWRpYSlcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtNTA3LXtcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg6NTA4Olx0cmV0dXJuIHN0cnVjdF9zaXplX3Qoc3RydWN0IHBjYWNoZV9jYWNoZV9rc2V0X29ubWVkaWEsIGRhdGEsIGtzZXRfb25tZWRpYS1cdTAwM2VrZXlfbnVtKTtcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtNTA5LX1cbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmM9MjQyMD1zdGF0aWMgaW50IGdyb3dfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbnVtKVxuLS1cbmRyaXZlcnMvbWQvcmFpZDUuYy0yNDM1LVx0c2MgPSBrbWVtX2NhY2hlX2NyZWF0ZShjb25mLVx1MDAzZWNhY2hlX25hbWVbY29uZi1cdTAwM2VhY3RpdmVfbmFtZV0sXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjQzNjpcdFx0XHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgZGV2cyksXG5kcml2ZXJzL21kL3JhaWQ1LmMtMjQzNy1cdFx0XHQgICAgICAgMCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jPTI1MjM9c3RhdGljIGludCByZXNpemVfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbmV3c2l6ZSlcbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmMtMjU1OS1cdHNjID0ga21lbV9jYWNoZV9jcmVhdGUoY29uZi1cdTAwM2VjYWNoZV9uYW1lWzEtY29uZi1cdTAwM2VhY3RpdmVfbmFtZV0sXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjU2MDpcdFx0XHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgbmV3c2l6ZSksXG5kcml2ZXJzL21kL3JhaWQ1LmMtMjU2MS1cdFx0XHQgICAgICAgMCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2hmaV9jbWRzLmM9MjIzPWludCBwa3Rfc2Vzc2lvbl91bnNldF9idWZmZXJzKHN0cnVjdCBoZmlfc2Vzc2lvbl9yZWxlYXNlX2J1ZmZlcl9wa3QgKnBrdCxcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vdmVudXMvaGZpX2NtZHMuYy0yNTMtXHRcdHBrdC1cdTAwM2VzaGRyLmhkci5zaXplID1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9oZmlfY21kcy5jOjI1NDpcdFx0XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfYnVmZmVyc19wa3QsXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vdmVudXMvaGZpX2NtZHMuYy0yNTUtXHRcdFx0XHQgICAgICBidWZmZXJfaW5mbywgYmQtXHUwMDNlbnVtX2J1ZmZlcnMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9MjA2PXN0cnVjdCBpY2VfYnVmX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0yMTMtXHQoKElDRV9QS0dfQlVGX1NJWkUgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg6MjE0Olx0ICBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYnVmX2hkciwgIHNlY3Rpb25fZW50cnksIDEpIC0gKGhkX3N6KSkgLyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0yMTUtXHQgKGVudF9zeikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaD0zMjg9c3RydWN0IGljZV9sYWJlbF9zZWN0aW9uIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oLTMzMy0jZGVmaW5lIElDRV9NQVhfTEFCRUxTX0lOX0JVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oOjMzNDpcdElDRV9NQVhfRU5UUklFU19JTl9CVUYoc3RydWN0X3NpemVfdChzdHJ1Y3QgaWNlX2xhYmVsX3NlY3Rpb24sICBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0zMzUtXHRcdFx0XHRcdCAgIGxhYmVsLCAxKSAtICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9MzgyPXN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oLTM4OC0jZGVmaW5lIElDRV9NQVhfQlNUX1RDQU1TX0lOX0JVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg6Mzg5Olx0SUNFX01BWF9FTlRSSUVTX0lOX0JVRihzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uLCAgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzkwLVx0XHRcdFx0XHQgICB0Y2FtLCAxKSAtICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9NDAyPXN0cnVjdCBpY2VfbWFya2VyX3B0eXBlX3RjYW1fc2VjdGlvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC00MDgtI2RlZmluZSBJQ0VfTUFYX01BUktFUl9QVFlQRV9UQ0FNU19JTl9CVUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaDo0MDk6XHRJQ0VfTUFYX0VOVFJJRVNfSU5fQlVGKHN0cnVjdF9zaXplX3Qoc3RydWN0IGljZV9tYXJrZXJfcHR5cGVfdGNhbV9zZWN0aW9uLCAgdGNhbSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtNDEwLVx0XHRcdCAgICAxKSAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9ODE4PXN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX2NvbXBsZXRpb24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg2OS1cdFx0aWYgKG1zZ2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBudnNwX21lc3NhZ2VfaGVhZGVyKSAmIzQzO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjg3MDpcdFx0XHRcdHN0cnVjdF9zaXplX3Qoc3RydWN0IG52c3BfMV9tZXNzYWdlX3NlbmRfcmVjZWl2ZV9idWZmZXJfY29tcGxldGUsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODcxLVx0XHRcdFx0XHQgICAgICBzZWN0aW9ucywgMSkpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE2NTQ9aW50IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBuZHBvZmZzZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNjc4LVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNjc5Olx0bmRwX2xlbiA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2LCBkcGUxNiwgcmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTY4MC1cdGlmIChuZHBvZmZzZXQgJiM0MzsgbmRwX2xlbiBcdTAwM2Ugc2tiX2luLVx1MDAzZWxlbikge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTY5MT1pbnQgY2RjX25jbV9yeF92ZXJpZnlfbmRwMzIoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IG5kcG9mZnNldClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MTUtXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3MTY6XHRuZHBfbGVuID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMzIsIGRwZTMyLCByZXQpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzE3LVx0aWYgKG5kcG9mZnNldCAmIzQzOyBuZHBfbGVuIFx1MDAzZSBza2JfaW4tXHUwMDNlbGVuKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzM1Nz1zdGF0aWMgaW50IHJ0dzg5X2NvcmVfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTczNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcwOlx0aHctXHUwMDNldmlmX2RhdGFfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHJ0dzg5X3ZpZiwgbGlua3NfaW5zdCwgbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcxOlx0aHctXHUwMDNlc3RhX2RhdGFfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHJ0dzg5X3N0YSwgbGlua3NfaW5zdCwgbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MzcyLVx0aHctXHUwMDNldHhxX2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnR3ODlfdHhxKTtcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYy5jPTI4NjA9bnZtZV9mY19jcmVhdGVfaW9fcXVldWVzKHN0cnVjdCBudm1lX2ZjX2N0cmwgKmN0cmwpXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODgyLVx0XHRcdFx1MDAyNm52bWVfZmNfbXFfb3BzLCAxLFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYzoyODgzOlx0XHRcdHN0cnVjdF9zaXplX3Qoc3RydWN0IG52bWVfZmNwX29wX3dfc2dsLCBwcml2LFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODg0LVx0XHRcdFx0ICAgICAgY3RybC1cdTAwM2VscG9ydC1cdTAwM2VvcHMtXHUwMDNlZmNwcnFzdF9wcml2X3N6KSk7XG4tLVxuZHJpdmVycy9udm1lL2hvc3QvZmMuYz0zNTQzPW52bWVfZmNfaW5pdF9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2ZjLmMtMzU1OS1cdFx0XHRcdTAwMjZudm1lX2ZjX2FkbWluX21xX29wcyxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZjLmM6MzU2MDpcdFx0XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBudm1lX2ZjcF9vcF93X3NnbCwgcHJpdixcbmRyaXZlcnMvbnZtZS9ob3N0L2ZjLmMtMzU2MS1cdFx0XHRcdCAgICAgIGN0cmwtXHUwMDNlbHBvcnQtXHUwMDNlb3BzLVx1MDAzZWZjcHJxc3RfcHJpdl9zeikpO1xuLS1cbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYz0xMzU0PXN0YXRpYyBpbnQgYnJhbmNoX3JlY29yZHNfYWxsb2Moc3RydWN0IGFybV9wbXUgKmFybXBtdSlcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU1LXtcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYzoxMzU2Olx0c2l6ZV90IHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwZXJmX2JyYW5jaF9zdGFjaywgZW50cmllcyxcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU3LVx0XHRcdFx0ICAgIGJyYmVfbnVtX2JyYW5jaF9yZWNvcmRzKGFybXBtdSkpO1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmM9MjA9c3RhdGljIGludCB3bWlfYWRqdXN0X2J1ZmZlcl9sZW5ndGgoc2l6ZV90ICpsZW5ndGgsIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9wbGF0Zm9ybS93bWkvbWFyc2hhbGxpbmcuYy00Mi1cdFx0YWxpZ25tZW50ID0gMjtcbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmM6NDM6XHRcdHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWlfc3RyaW5nLCBjaGFycywgb2JqLVx1MDAzZXN0cmluZy5sZW5ndGggJiM0MzsgMSk7XG5kcml2ZXJzL3BsYXRmb3JtL3dtaS9tYXJzaGFsbGluZy5jLTQ0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM9MTI3Mj1zdGF0aWMgaW50IGhwdGlvcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9zY3NpL2hwdGlvcC5jLTEzOTYtXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM6MTM5NzpcdHJlcV9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3Njc2lfY29tbWFuZCxcbmRyaXZlcnMvc2NzaS9ocHRpb3AuYy0xMzk4LVx0XHRcdFx0IHNnX2xpc3QsIGhiYS1cdTAwM2VtYXhfc2dfZGVzY3JpcHRvcnMpO1xuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jPTUxMTg9c3RhdGljIHZvaWQgbWVnYXNhc191cGRhdGVfZXh0X3ZkX2RldGFpbHMoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTUxNTctXHRcdGZ1c2lvbi1cdTAwM2VvbGRfbWFwX3N6ID1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjUxNTg6XHRcdFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfRldfUkFJRF9NQVAsIGxkU3Bhbk1hcCxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTUxNTktXHRcdFx0XHQgICAgICBpbnN0YW5jZS1cdTAwM2Vmd19zdXBwb3J0ZWRfdmRfY291bnQpO1xuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jPTU3ODg9bWVnYXNhc19zZXR1cF9qYm9kX21hcChzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTc5My1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjU3OTQ6XHRwZF9zZXFfbWFwX3N6ID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQywgc2VxLFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTc5NS1cdFx0XHRcdCAgICAgIE1BWF9QSFlTSUNBTF9ERVZJQ0VTKTtcbi0tXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYz03OTY3PXN0YXRpYyB2b2lkIG1lZ2FzYXNfZGV0YWNoX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy04MDQ1LVx0XHRwZF9zZXFfbWFwX3N6ID1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjgwNDY6XHRcdFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQyxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTgwNDctXHRcdFx0XHQgICAgICBzZXEsIE1BWF9QSFlTSUNBTF9ERVZJQ0VTKTtcbi0tXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2ZwLmM9MzAyPXU4IE1SX1ZhbGlkYXRlTWFwSW5mbyhzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5zdGFuY2UsIHU2NCBtYXBfaWQpXG4tLVxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jLTMyOC1cdGVsc2VcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnAuYzozMjk6XHRcdGV4cGVjdGVkX3NpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBNUl9GV19SQUlEX01BUCxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnAuYy0zMzAtXHRcdFx0XHRcdCAgICAgIGxkU3Bhbk1hcCxcbi0tXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jPTUwNDk9c3RhdGljIGludCBwcWlfY3JlYXRlX3F1ZXVlcyhzdHJ1Y3QgcHFpX2N0cmxfaW5mbyAqY3RybF9pbmZvKVxuLS1cbmRyaXZlcnMvc2NzaS9zbWFydHBxaS9zbWFydHBxaV9pbml0LmMtNTA3NC0jZGVmaW5lIFBRSV9SRVBPUlRfRVZFTlRfQ09ORklHX0JVRkZFUl9MRU5HVEhcdFxcXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jOjUwNzU6XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwcWlfZXZlbnRfY29uZmlnLCAgZGVzY3JpcHRvcnMsIFBRSV9NQVhfRVZFTlRfREVTQ1JJUFRPUlMpXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jLTUwNzYtXG4tLVxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oPTE1Nj1zdHJ1Y3QgcWNvbXRlZV9tc2dfY2FsbGJhY2sge1xuLS1cbmRyaXZlcnMvdGVlL3Fjb210ZWUvcWNvbXRlZV9tc2cuaC0xNjUtI2RlZmluZSBxY29tdGVlX21zZ19idWZmZXJfYXJncyh0LCBuKSBcXFxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oOjE2NjpcdHFjb210ZWVfbXNnX29mZnNldF9hbGlnbihzdHJ1Y3Rfc2l6ZV90KHQsIGFyZ3MsIG4pKVxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oLTE2Ny0vKiBQb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBidWZmZXIgYXJndW1lbnQmIzM5O3MgY29udGVudCBhdCBhbiBvZmZzZXQuICovXG4tLVxuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaD0zMTY9eGZzX2J0cmVlX2N1cl9zaXplb2YodW5zaWduZWQgaW50IG5sZXZlbHMpXG5mcy94ZnMvbGlieGZzL3hmc19idHJlZS5oLTMxNy17XG5mcy94ZnMvbGlieGZzL3hmc19idHJlZS5oOjMxODpcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB4ZnNfYnRyZWVfY3VyLCBiY19sZXZlbHMsIG5sZXZlbHMpO1xuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaC0zMTktfVxuLS1cbmZzL3hmcy9zY3J1Yi9idHJlZS5oPTYxPXhjaGtfYnRyZWVfc2l6ZW9mKHVuc2lnbmVkIGludCBubGV2ZWxzKVxuZnMveGZzL3NjcnViL2J0cmVlLmgtNjIte1xuZnMveGZzL3NjcnViL2J0cmVlLmg6NjM6XHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgeGNoa19idHJlZSwgbGFzdGtleSwgbmxldmVscyAtIDEpO1xuZnMveGZzL3NjcnViL2J0cmVlLmgtNjQtfVxuLS1cbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaD0zNzA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzaXplX3QgX19tdXN0X2NoZWNrIHNpemVfc3ViKHNpemVfdCBtaW51ZW5kLCBzaXplX3Qgc3VidHJhaGVuZClcbi0tXG5pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgtNDM5LS8qKlxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ0MDogKiBzdHJ1Y3Rfc2l6ZV90KCkgLSBDYWxjdWxhdGUgc2l6ZSBvZiBzdHJ1Y3R1cmUgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheVxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oLTQ0MS0gKiBAdHlwZTogc3RydWN0dXJlIHR5cGUgbmFtZS5cbi0tXG5pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgtNDUxLSAqL1xuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ1MjojZGVmaW5lIHN0cnVjdF9zaXplX3QodHlwZSwgbWVtYmVyLCBjb3VudClcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00NTMtXHRzdHJ1Y3Rfc2l6ZSgodHlwZSAqKU5VTEwsIG1lbWJlciwgY291bnQpXG4tLVxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oLTQ4MC1cdHVuaW9uIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ4MTpcdFx0dTggYnl0ZXNbc3RydWN0X3NpemVfdCh0eXBlLCBtZW1iZXIsIGNvdW50KV07XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00ODItXHRcdHR5cGUgb2JqO1x0XHRcdFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD0xMDcwPXZvaWQgKmttYWxsb2Nfbm9sb2NrKHNpemVfdCBzaXplLCBnZnBfdCBnZnBfZmxhZ3MsIGludCBub2RlKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTA1LVx0Y29uc3Qgc2l6ZV90IF9fY291bnQgPSAoQ09VTlQpO1x0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEwNjpcdGNvbnN0IHNpemVfdCBfX29ial9zaXplID0gc3RydWN0X3NpemVfdChUWVBFLCBGQU0sIF9fY291bnQpO1x0XFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMDctXHRUWVBFICpfX29ial9wdHIgPSBLTUFMTE9DKF9fb2JqX3NpemUsIEdGUCk7XHRcdFx0XFxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9NjE9c3RhdGljX2Fzc2VydChJU19BTElHTkVEKHNpemVvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrKSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTYtXHRzdGF0aWNfYXNzZXJ0KG9mZnNldG9mZW5kKHN0cnVjdCB4ZHBfYnVmZl94c2ssIGNiKSBcdTAwM2U9XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTc6XHRcdCAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgcHJpdixcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTgtXHRcdFx0XHQgICAgTElCRVRIX1hEUF9QUklWX1NaKHN6KSkpXG4tLVxuaW9fdXJpbmcvcnNyYy5jPTI0Mj1ib29sIGlvX3JzcmNfY2FjaGVfaW5pdChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbmlvX3VyaW5nL3JzcmMuYy0yNDMte1xuaW9fdXJpbmcvcnNyYy5jOjI0NDpcdGNvbnN0IGludCBpbXVfY2FjaGVfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IGlvX21hcHBlZF91YnVmLCBidmVjLFxuaW9fdXJpbmcvcnNyYy5jLTI0NS1cdFx0XHRcdFx0XHQgSU9fQ0FDSEVEX0JWRUNTX1NFR1MpO1xuLS1cbmtlcm5lbC9waWQuYz04NDg9dm9pZCBfX2luaXQgcGlkX2lkcl9pbml0KHZvaWQpXG4tLVxua2VybmVsL3BpZC5jLTg2Mi1cdGluaXRfcGlkX25zLnBpZF9jYWNoZXAgPSBrbWVtX2NhY2hlX2NyZWF0ZShcJiMzNDtwaWRcJiMzNDssXG5rZXJuZWwvcGlkLmM6ODYzOlx0XHRcdHN0cnVjdF9zaXplX3Qoc3RydWN0IHBpZCwgbnVtYmVycywgMSksXG5rZXJuZWwvcGlkLmMtODY0LVx0XHRcdF9fYWxpZ25vZl9fKHN0cnVjdCBwaWQpLFxuLS1cbmtlcm5lbC9waWRfbmFtZXNwYWNlLmM9NDA9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpjcmVhdGVfcGlkX2NhY2hlcCh1bnNpZ25lZCBpbnQgbGV2ZWwpXG4tLVxua2VybmVsL3BpZF9uYW1lc3BhY2UuYy01Mi1cdHNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgXCYjMzQ7cGlkXyV1XCYjMzQ7LCBsZXZlbCAmIzQzOyAxKTtcbmtlcm5lbC9waWRfbmFtZXNwYWNlLmM6NTM6XHRsZW4gPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwaWQsIG51bWJlcnMsIGxldmVsICYjNDM7IDEpO1xua2VybmVsL3BpZF9uYW1lc3BhY2UuYy01NC1cdG11dGV4X2xvY2soXHUwMDI2cGlkX2NhY2hlc19tdXRleCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00OTA0PXN0YXRpYyBzMzIgc2N4X3NldF9jbWFza19zY3JhdGNoX2FsbG9jKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNS17XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MDY6XHRzaXplX3Qgc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjeF9jbWFzaywgYml0cyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNy1cdFx0XHRcdCAgICBTQ1hfQ01BU0tfTlJfV09SRFMobnVtX3Bvc3NpYmxlX2NwdXMoKSkpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDkyOD1zdGF0aWMgdm9pZCBzY3hfc2V0X2NtYXNrX3NjcmF0Y2hfZnJlZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5Mjkte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTMwOlx0c2l6ZV90IHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBzY3hfY21hc2ssIGJpdHMsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5MzEtXHRcdFx0XHQgICAgU0NYX0NNQVNLX05SX1dPUkRTKG51bV9wb3NzaWJsZV9jcHVzKCkpKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY3ODQ9c3RhdGljIHN0cnVjdCBzY3hfc2NoZWQgKnNjeF9hbGxvY19hbmRfYWRkX3NjaGVkKHN0cnVjdCBzY3hfZW5hYmxlX2NtZCAqY21kLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjgyMy1cdHNjaC1cdTAwM2Vkc3BfbWF4X2JhdGNoID0gb3BzLVx1MDAzZWRpc3BhdGNoX21heF9iYXRjaCA/OiBTQ1hfRFNQX0RGTF9NQVhfQkFUQ0g7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjY4MjQ6XHRzY2gtXHUwMDNlcGNwdSA9IF9fYWxsb2NfcGVyY3B1KHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjeF9zY2hlZF9wY3B1LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02ODI1LVx0XHRcdFx0XHRcdCBkc3BfY3R4LmJ1Ziwgc2NoLVx1MDAzZWRzcF9tYXhfYmF0Y2gpLFxuLS1cbmxpYi90ZXN0cy9vdmVyZmxvd19rdW5pdC5jPTcwNj1zdGF0aWMgdm9pZCBvdmVyZmxvd19zaXplX2hlbHBlcnNfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmMtNzA4LVx0LyogTWFrZSBzdXJlIHN0cnVjdF9zaXplKCkgY2FuIGJlIHVzZWQgaW4gYSBjb25zdGFudCBleHByZXNzaW9uLiAqL1xubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmM6NzA5Olx0dTggY2VfYXJyYXlbc3RydWN0X3NpemVfdChzdHJ1Y3QgX190ZXN0X2ZsZXhfYXJyYXksIGRhdGEsIDU1KV07XG5saWIvdGVzdHMvb3ZlcmZsb3dfa3VuaXQuYy03MTAtXHRzdHJ1Y3QgX190ZXN0X2ZsZXhfYXJyYXkgKm9iajtcbi0tXG5tbS9tZW1jb250cm9sLmM9NTYxMz1pbnQgX19pbml0IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy01NjM4LVxubW0vbWVtY29udHJvbC5jOjU2Mzk6XHRtZW1jZ19zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX2Nncm91cCwgbm9kZWluZm8sIG5yX25vZGVfaWRzKTtcbm1tL21lbWNvbnRyb2wuYy01NjQwLVx0bWVtY2dfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGUoXCYjMzQ7bWVtX2Nncm91cFwmIzM0OywgbWVtY2dfc2l6ZSwgMCxcbi0tXG5tbS9zbHViLmM9Nzc1OT1zdGF0aWMgdW5zaWduZWQgaW50IGNhbGN1bGF0ZV9zaGVhZl9jYXBhY2l0eShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtNzc5My1cdC8qIEluY3JlbWVudCBjYXBhY2l0eSB0byBtYWtlIHNoZWFmIGV4YWN0bHkgYSBrbWFsbG9jIHNpemUgYnVja2V0ICovXG5tbS9zbHViLmM6Nzc5NDpcdHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBzbGFiX3NoZWFmLCBvYmplY3RzLCBjYXBhY2l0eSk7XG5tbS9zbHViLmMtNzc5NS1cdHNpemUgPSBrbWFsbG9jX3NpemVfcm91bmR1cChzaXplKTtcbm1tL3NsdWIuYzo3Nzk2Olx0Y2FwYWNpdHkgPSAoc2l6ZSAtIHN0cnVjdF9zaXplX3Qoc3RydWN0IHNsYWJfc2hlYWYsIG9iamVjdHMsIDApKSAvIHNpemVvZih2b2lkICopO1xubW0vc2x1Yi5jLTc3OTctXG4tLVxubW0vc3BhcnNlLmg9NTE9c3RhdGljIGlubGluZSBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKVxubW0vc3BhcnNlLmgtNTIte1xubW0vc3BhcnNlLmg6NTM6XHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UsIHBhZ2VibG9ja19mbGFncyxcbm1tL3NwYXJzZS5oLTU0LVx0XHRcdCAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpO1xuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5jPTg3OT1ldGh0b29sX3J4ZmhfY3R4X2FsbG9jKGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzLFxuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5jLTg5NC1cdGZsZXhfbGVuID0gc2l6ZV9hZGQoa2V5X29mZiwga2V5X21heCk7XG5uZXQvZXRodG9vbC9jb21tb24uYzo4OTU6XHRzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQsIGRhdGEsIGZsZXhfbGVuKTtcbm5ldC9ldGh0b29sL2NvbW1vbi5jLTg5Ni1cbi0tXG5uZXQvaHNyL2hzcl9mcmFtZXJlZy5oPTEyMD1zdGF0aWMgaW5saW5lIHNpemVfdCBoc3Jfc2VxX2Jsb2NrX3NpemUoc3RydWN0IGhzcl9ub2RlICpub2RlKVxuLS1cbm5ldC9oc3IvaHNyX2ZyYW1lcmVnLmgtMTIyLVx0V0FSTl9PTl9PTkNFKG5vZGUtXHUwMDNlc2VxX3BvcnRfY250ID09IDApO1xubmV0L2hzci9oc3JfZnJhbWVyZWcuaDoxMjM6XHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgaHNyX3NlcV9ibG9jaywgc2VxX25ycywgbm9kZS1cdTAwM2VzZXFfcG9ydF9jbnQpO1xubmV0L2hzci9oc3JfZnJhbWVyZWcuaC0xMjQtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTc5MTI9c3RhdGljIGludCBuZnRfc2V0ZWxlbV9mbHVzaChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc5MjMtXHR0cmFucyA9IG5mdF90cmFuc19hbGxvYyhjdHgsIE5GVF9NU0dfREVMU0VURUxFTSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5MjQ6XHRcdFx0XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBuZnRfdHJhbnNfZWxlbSwgZWxlbXMsIDEpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc5MjUtXHRpZiAoIXRyYW5zKVxuLS1cbm5ldC9yeHJwYy9rZXkuYz0xNjU9c3RhdGljIGludCByeHJwY19wcmVwYXJzZV94ZHJfeWZzX3J4Z2soc3RydWN0IGtleV9wcmVwYXJzZWRfcGF5bG9hZCAqcHJlcCxcbi0tXG5uZXQvcnhycGMva2V5LmMtMjEyLVxubmV0L3J4cnBjL2tleS5jOjIxMzpcdHRva2VuLVx1MDAzZXJ4Z2sgPSBremFsbG9jKHN0cnVjdF9zaXplX3Qoc3RydWN0IHJ4Z2tfa2V5LCBfa2V5LCByYXdfa2V5bGVuKSwgR0ZQX0tFUk5FTCk7XG5uZXQvcnhycGMva2V5LmMtMjE0LVx0aWYgKCF0b2tlbi1cdTAwM2VyeGdrKVxuLS1cbm5ldC9zY3RwL3NvY2tldC5jPTQxMDU9c3RhdGljIGludCBzY3RwX3NldHNvY2tvcHRfcmVzZXRfc3RyZWFtcyhzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L3NjdHAvc29ja2V0LmMtNDExNC1cdG9wdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgb3B0bGVuLFxubmV0L3NjdHAvc29ja2V0LmM6NDExNTpcdFx0ICAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgc3JzX3N0cmVhbV9saXN0LFxubmV0L3NjdHAvc29ja2V0LmMtNDExNi1cdFx0XHRcdCAgICAgVVNIUlRfTUFYKSk7XG4tLVxubmV0L3NjdHAvc29ja2V0LmM9NDU3OT1zdGF0aWMgaW50IHNjdHBfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L3NjdHAvc29ja2V0LmMtNDYwMS1cdFx0b3B0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBvcHRsZW4sXG5uZXQvc2N0cC9zb2NrZXQuYzo0NjAyOlx0XHRcdCAgICAgICBQQUdFX0FMSUdOKHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcyxcbm5ldC9zY3RwL3NvY2tldC5jLTQ2MDMtXHRcdFx0XHRcdFx0XHRzcnNfc3RyZWFtX2xpc3QsIFVTSFJUX01BWCkpKTtcbi0tXG5zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2ttYWxsb2Nfb2Jqcy5jb2NjaT01OD1mcmVzaCBpZGVudGlmaWVyIEFMTE9DX09CSlMgPSBzY3JpcHQ6cHl0aG9uKEFMTE9DX0FSUkFZKSB7IGFsbG9jX2FycmF5KEFMTE9DX0FSUkFZKSB9O1xuLS1cbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMS18XG5zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2ttYWxsb2Nfb2Jqcy5jb2NjaToxMjI6LVx0QUxMT0Moc3RydWN0X3NpemVfdChUWVBFLCBGTEVYLCBDT1VOVCksIEdGUClcbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMy0mIzQzO1x0QUxMT0NfRkxFWChUWVBFLCBGTEVYLCBDT1VOVCwgR0ZQKVxuLS1cbnNlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5oPTM4PXN0cnVjdCBsYW5kbG9ja19kZXRhaWxzIHtcbi0tXG5zZWN1cml0eS9sYW5kbG9jay9kb21haW4uaC02NS0vKiBNYWtlcyBzdXJlIHRoZSBncmVhdGVzdCBsYW5kbG9ja19kZXRhaWxzIGNhbiBiZSBhbGxvY2F0ZWQuICovXG5zZWN1cml0eS9sYW5kbG9jay9kb21haW4uaDo2NjpzdGF0aWNfYXNzZXJ0KHN0cnVjdF9zaXplX3Qoc3RydWN0IGxhbmRsb2NrX2RldGFpbHMsIGV4ZV9wYXRoLFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmgtNjctXHRcdFx0ICAgIExBTkRMT0NLX1BBVEhfTUFYX1NJWkUpIFx1MDAzYz0gS01BTExPQ19NQVhfU0laRSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYz0yMjE9c3RhdGljIGVmaV9zdGF0dXNfdCBjc19hbXBfbGliX3Rlc3RfZ2V0X2VmaV92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsXG4tLVxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYy0yNjEtI2RlZmluZSBDU19BTVBfTElCX1pFUk9fRklMTEVEX0JMT0JfU0laRSBcXFxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYzoyNjI6XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBjaXJydXNfYW1wX2VmaV9kYXRhLCBkYXRhLCA4KVxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYy0yNjMtXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaD0xMDM3PXN0YXRpYyBpbmxpbmUgdTY0IHNjeF9jbG9ja19pcnEodTMyIGNwdSlcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTEwNjEtXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oOjEwNjI6I2RlZmluZSBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpXHRcXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0xMDYzLVx0c3RydWN0X3NpemUoKHR5cGUgKilOVUxMLCBtZW1iZXIsIGNvdW50KVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9zY3hfcW1hcC5icGYuYz0xNTE9c3RydWN0IHRhc2tfY3R4IHtcbi0tXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmMtMTY5LSNkZWZpbmUgVEFTS19DVFhfU1RSSURFXHRcdFx0XHRcdFx0XHRcXFxudG9vbHMvc2NoZWRfZXh0L3NjeF9xbWFwLmJwZi5jOjE3MDpcdHN0cnVjdF9zaXplX3Qoc3RydWN0IHRhc2tfY3R4LCBjcHVzX2FsbG93ZWQuYml0cyxcdFx0XFxcbnRvb2xzL3NjaGVkX2V4dC9zY3hfcW1hcC5icGYuYy0xNzEtXHRcdCAgICAgIENNQVNLX05SX1dPUkRTKFNDWF9RTUFQX01BWF9DUFVTKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY2MwoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBsb29raW5nIGxpa2UgYSByZWZhY3RvcmluZy4gSSBzZWUgdGhhdCBgc3RydWN0X3NpemVfdGAsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaGAsIGlzIGJlaW5nIHVzZWQgdG8gcmVwbGFjZSB0aGUgZGlyZWN0IGNhbGN1bGF0aW9uIG9mIHRoZSBzaXplLiBQcmV2aW91c2x5LCBpdCB3YXMgYHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKClgLCBhbmQgbm93IGl0JiMzOTtzIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLCBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSlgLgoKVGhpcyBpcyBwdXJlbHkgYWJvdXQgY29kZSBjbGVhbmxpbmVzcy4gSXQmIzM5O3Mgbm90IGFsdGVyaW5nIGFueSBjb3JlIGZ1bmN0aW9uYWxpdHkuIExvb2tpbmcgYXQgYG1tL3NwYXJzZS5jYCBiZWZvcmUgYW5kIGFmdGVyLCB0aGUgbG9naWMgcmVtYWlucyBpZGVudGljYWwuIFRoZSBvbGQgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZ1bmN0aW9uIGNhbGN1bGF0ZWQgdGhlIHNpemUgZGlyZWN0bHk6CgpgYGBjCnN0YXRpYyB1bnNpZ25lZCBsb25nIHVzZW1hcF9zaXplKHZvaWQpCnsKCXJldHVybiBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTsKfQoKc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCkKewoJcmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKCk7Cn0KYGBgCgpBbmQgcG9zdC1wYXRjaDoKCmBgYGMKc3RhdGljIGlubGluZSBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKQp7CglyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UsIHBhZ2VibG9ja19mbGFncywKCQkJICAgICBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSk7Cn0KYGBgCgpOb3csIGBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpYCBleHBhbmRzIHRvIGBzaXplb2YodHlwZSkgJiM0MzsgY291bnQgKiBzaXplb2YodHlwZS0mZ3Q7bWVtYmVyKWAuIEhlcmUsIGB0eXBlYCBpcyBgc3RydWN0IG1lbV9zZWN0aW9uX3VzYWdlYCwgYG1lbWJlcmAgaXMgYHBhZ2VibG9ja19mbGFnc2AsIHdoaWNoIGlzIGFuIGFycmF5IG9mIGB1bnNpZ25lZCBsb25nYCwgYW5kIGBjb3VudGAgaXMgYEJJVFNfVE9fTE9OR1MoU0VDVElPTl9CTE9DS0ZMQUdTX0JJVFMpYC4gIFNvLCBgY291bnQgKiBzaXplb2YodW5zaWduZWQgbG9uZylgIGlzLCBpbiBmYWN0LCB0aGUgc2FtZSBhcyB0aGUgb2xkIGB1c2VtYXBfc2l6ZSgpYC4gIEFuZCB0aGUgYmFzZSBgc2l6ZW9mKHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSlgIHJlbWFpbnMgdGhlIGJhc2UuIEl0JiMzOTtzIHRoZSBzYW1lIG1hdGgsIGp1c3QgZXhwcmVzc2VkIGRpZmZlcmVudGx5LiBUaGVyZSYjMzk7cyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGNvZGUgcGF0aHMsIG5vIGFsdGVyZWQgYmVoYXZpb3IsIGl0JiMzOTtzIGp1c3QgYWJvdXQgdGhlIHByZXNlbnRhdGlvbi4KCkdpdmVuIGFsbCBvZiB0aGlzLCB0aGVyZSYjMzk7cyBubyBhZGRlZCB2YWx1ZSBpbiBmdXp6aW5nIHRoaXMgY2hhbmdlLiBJJiMzOTtsbCBmbGFnIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB0aGF0IG1vdmVzIHRoZSBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgZnVuY3Rpb24gdG8gYSBoZWFkZXIgZmlsZSBhbmQgc2ltcGxpZmllcyBpdHMgc2l6ZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgYHN0cnVjdF9zaXplX3RgIG1hY3JvLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBuZXcgcmVhY2hhYmxlIGNvZGUgcGF0aHMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB0aGF0IG1vdmVzIHRoZSBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgZnVuY3Rpb24gdG8gYSBoZWFkZXIgZmlsZSBhbmQgc2ltcGxpZmllcyBpdHMgc2l6ZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgYHN0cnVjdF9zaXplX3RgIG1hY3JvLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBuZXcgcmVhY2hhYmxlIGNvZGUgcGF0aHMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDM6MTc6NDcuNDMzMzcyMDA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MTcwMjkxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAzOjE3OjQ3LjQzMzM3Nzg0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2MDcxOTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ3OTI1ZGNiNDg3YTQ2MGMyNWJmZjhjYmU1NDQzOTVlMWI0MjFmOTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwMzoxNzo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbmluZGV4IGEyNmM4Yjg1NTIyMjIuLjg2ODkxMTYzZTBlZjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW16b25lLmhcXG5AQCAtMjA3MCw3ICsyMDcwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlvbih1bnNpZ25lZCBsb25nIG5yKVxcbiAjZW5kaWZcXG4gXFx0cmV0dXJuIFxcdTAwMjZtZW1fc2VjdGlvbltyb290XVtuciBcXHUwMDI2IFNFQ1RJT05fUk9PVF9NQVNLXTtcXG4gfVxcbi1leHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCk7XFxuIFxcbiAvKlxcbiAgKiBXZSB1c2UgdGhlIGxvd2VyIGJpdHMgb2YgdGhlIG1lbV9tYXAgcG9pbnRlciB0byBzdG9yZSBhIGxpdHRsZSBiaXQgb2ZcXG5kaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLmMgYi9tbS9zcGFyc2UuY1xcbmluZGV4IDcwNGE5ZGVjMmI5YWYuLjQ2NDU4ZTUzMDBlMjYgMTAwNjQ0XFxuLS0tIGEvbW0vc3BhcnNlLmNcXG4rKysgYi9tbS9zcGFyc2UuY1xcbkBAIC0yMTMsMTYgKzIxMyw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBtZW1ibG9ja3NfcHJlc2VudCh2b2lkKVxcbiBcXHRcXHRtZW1vcnlfcHJlc2VudChuaWQsIHN0YXJ0LCBlbmQpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdW5zaWduZWQgbG9uZyB1c2VtYXBfc2l6ZSh2b2lkKVxcbi17XFxuLVxcdHJldHVybiBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTtcXG4tfVxcbi1cXG4tc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcXG4te1xcbi1cXHRyZXR1cm4gc2l6ZW9mKHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSkgKyB1c2VtYXBfc2l6ZSgpO1xcbi19XFxuLVxcbiAjaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuIHVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuaCBiL21tL3NwYXJzZS5oXFxuaW5kZXggOTVhYTAzMTIxM2YyMi4uM2I3NDQ2NjdhN2U2MiAxMDA2NDRcXG4tLS0gYS9tbS9zcGFyc2UuaFxcbisrKyBiL21tL3NwYXJzZS5oXFxuQEAgLTQ3LDYgKzQ3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3NlY3Rpb25fbWFya19wcmVzZW50KHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsXFxuIFxcbiBcXHRtcy1cXHUwMDNlc2VjdGlvbl9tZW1fbWFwIHw9IFNFQ1RJT05fTUFSS0VEX1BSRVNFTlQ7XFxuIH1cXG4rXFxuK3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcXG4re1xcbitcXHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UsIHBhZ2VibG9ja19mbGFncyxcXG4rXFx0XFx0XFx0ICAgICBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSk7XFxuK31cXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0KHZvaWQpIHt9XFxuICNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAzOjE3OjQ4Ljg5NDkyMTI2NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNDU1NDc0MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB0aGF0IG1vdmVzIHRoZSBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgZnVuY3Rpb24gdG8gYSBoZWFkZXIgZmlsZSBhbmQgc2ltcGxpZmllcyBpdHMgc2l6ZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgYHN0cnVjdF9zaXplX3RgIG1hY3JvLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBuZXcgcmVhY2hhYmxlIGNvZGUgcGF0aHMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NzkyNWRjYjQ4N2E0NjBjMjViZmY4Y2JlNTQ0Mzk1ZTFiNDIxZjkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwMzoxNzo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW16b25lLmggYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oXG5pbmRleCBhMjZjOGI4NTUyMjIyLi44Njg5MTE2M2UwZWY0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuQEAgLTIwNzAsNyArMjA3MCw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9zZWN0aW9uICpfX25yX3RvX3NlY3Rpb24odW5zaWduZWQgbG9uZyBucilcbiAjZW5kaWZcbiBcdHJldHVybiBcdTAwMjZtZW1fc2VjdGlvbltyb290XVtuciBcdTAwMjYgU0VDVElPTl9ST09UX01BU0tdO1xuIH1cbi1leHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCk7XG4gXG4gLypcbiAgKiBXZSB1c2UgdGhlIGxvd2VyIGJpdHMgb2YgdGhlIG1lbV9tYXAgcG9pbnRlciB0byBzdG9yZSBhIGxpdHRsZSBiaXQgb2ZcbmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuYyBiL21tL3NwYXJzZS5jXG5pbmRleCA3MDRhOWRlYzJiOWFmLi40NjQ1OGU1MzAwZTI2IDEwMDY0NFxuLS0tIGEvbW0vc3BhcnNlLmNcbisrKyBiL21tL3NwYXJzZS5jXG5AQCAtMjEzLDE2ICsyMTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbWVtYmxvY2tzX3ByZXNlbnQodm9pZClcbiBcdFx0bWVtb3J5X3ByZXNlbnQobmlkLCBzdGFydCwgZW5kKTtcbiB9XG4gXG4tc3RhdGljIHVuc2lnbmVkIGxvbmcgdXNlbWFwX3NpemUodm9pZClcbi17XG4tXHRyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7XG4tfVxuLVxuLXNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXG4te1xuLVx0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICsgdXNlbWFwX3NpemUoKTtcbi19XG4tXG4gI2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuIHVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLmggYi9tbS9zcGFyc2UuaFxuaW5kZXggOTVhYTAzMTIxM2YyMi4uM2I3NDQ2NjdhN2U2MiAxMDA2NDRcbi0tLSBhL21tL3NwYXJzZS5oXG4rKysgYi9tbS9zcGFyc2UuaFxuQEAgLTQ3LDYgKzQ3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3NlY3Rpb25fbWFya19wcmVzZW50KHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsXG4gXG4gXHRtcy1cdTAwM2VzZWN0aW9uX21lbV9tYXAgfD0gU0VDVElPTl9NQVJLRURfUFJFU0VOVDtcbiB9XG4rXG4rc3RhdGljIGlubGluZSBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKVxuK3tcbitcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLFxuK1x0XHRcdCAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpO1xuK31cbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdCh2b2lkKSB7fVxuICNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMzoxNzo0OC44OTQ5MjM3OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5Mjk4MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlZmFjdG9yaW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb3ZpbmcgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZyb20gYG1tL3NwYXJzZS5jYCB0byBgbW0vc3BhcnNlLmhgIGFuZCBtYWtpbmcgaXQgYSBgc3RhdGljIGlubGluZWAgZnVuY3Rpb24uIFRoZSBjb2RlIGFsc28gc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24gaXRzZWxmIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90YC4gSG1tLCBJJ20gc2xpZ2h0bHkgdGhyb3duIGJ5IGBzdHJ1Y3Rfc2l6ZV90YOKAlEkgd2FudCB0byBiZSBzdXJlIGl0J3MgdGhlIHJpZ2h0IHR5cGUuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBpdCdzIG5ldyBvciBpZiBJJ20ganVzdCBtaXNyZW1lbWJlcmluZyB0aGUgbmFtZSwgb3IgaWYgSSdtIGdldHRpbmcgbWl4ZWQgdXAgd2l0aCBgc3RydWN0X3NpemVgLlxuXG5SaWdodCwgbGV0IG1lIHNlZSBleGFjdGx5IHdoYXQgdGhlIGRpZmYgZG9lcy4gSXQgKnJlbW92ZXMqIGB1c2VtYXBfc2l6ZWAgYW5kIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmcm9tIGBtbS9zcGFyc2UuY2AgYW5kICphZGRzKiBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgdG8gYG1tL3NwYXJzZS5oYC4gQWgsIGdvdCBpdDogdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3JpbmcvY2xlYW51cC4gVGhlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBOb3cgSSBuZWVkIHRvIGNvbnNpZGVyIGZ1bmN0aW9uYWwgaW1wYWN0LiBEb2VzIHRoaXMgY2hhbmdlIGFueSBvZiB0aGUgdW5kZXJseWluZyBsb2dpYz9cblxuYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGlzIHVzZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnIG9yIHNwYXJzZSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIHNvIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjaGFuZ2VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIEdlbmVyYWxseSwgdGhpcyBraW5kIG9mIHJlZmFjdG9yaW5nLCBtb3ZpbmcgYSBmdW5jdGlvbiB0byBhIGhlYWRlciBhbmQgbWFraW5nIGl0IGlubGluZSwgc2hvdWxkbid0IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb2RlIHBhdGhzIHRoYXQgd291bGQgbmVlZCBmdXp6aW5nIHVubGVzcywgYW5kIHRoaXMgaXMgdGhlIGltcG9ydGFudCBjYXZlYXQsIGl0IGFsc28gZml4ZXMgYSBwcmUtZXhpc3RpbmcgYnVnLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBzdXJlLlxuXG5PbmUgbW9yZSBxdWljayBjaGVjazogYWdhaW4sIGBzdHJ1Y3Rfc2l6ZV90YD8gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBvZiB0aGUgbmFtZS4gTGV0IG1lIGdyZXAgZm9yIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMzoxNzo1NC4zMTQyMjYyODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3ODkxNTM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW1fc2VjdGlvbl91c2FnZV9zaXplXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NwYXJzZS12bWVtbWFwLmM9ODIzPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBzZWN0aW9uX2FjdGl2YXRlKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy04MzItXFx0aWYgKCFtcy1cXHUwMDNldXNhZ2UpIHtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjgzMzpcXHRcXHR1c2FnZSA9IGt6YWxsb2MobWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSgpLCBHRlBfS0VSTkVMKTtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTgzNC1cXHRcXHRpZiAoIXVzYWdlKVxcbi0tXFxubW0vc3BhcnNlLmM9MjQ5PXZvaWQgX19pbml0IHNwYXJzZV9pbml0X2Vhcmx5X3NlY3Rpb24oaW50IG5pZCwgc3RydWN0IHBhZ2UgKm1hcCxcXG4tLVxcbm1tL3NwYXJzZS5jLTI1NC1cXHRcXHRcXHRzcGFyc2VfdXNhZ2VidWYsIFNFQ1RJT05fSVNfRUFSTFkgfCBmbGFncyk7XFxubW0vc3BhcnNlLmM6MjU1OlxcdHNwYXJzZV91c2FnZWJ1ZiA9ICh2b2lkICopc3BhcnNlX3VzYWdlYnVmICsgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSgpO1xcbm1tL3NwYXJzZS5jLTI1Ni19XFxuLS1cXG5tbS9zcGFyc2UuYz0yNTg9c3RhdGljIGludCBfX2luaXQgc3BhcnNlX3VzYWdlX2luaXQoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBtYXBfY291bnQpXFxuLS1cXG5tbS9zcGFyc2UuYy0yNjEtXFxubW0vc3BhcnNlLmM6MjYyOlxcdHNpemUgPSBtZW1fc2VjdGlvbl91c2FnZV9zaXplKCkgKiBtYXBfY291bnQ7XFxubW0vc3BhcnNlLmMtMjYzLVxcdHNwYXJzZV91c2FnZWJ1ZiA9IG1lbWJsb2NrX2FsbG9jX25vZGUoc2l6ZSwgU01QX0NBQ0hFX0JZVEVTLCBuaWQpO1xcbi0tXFxubW0vc3BhcnNlLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIF9fc2VjdGlvbl9tYXJrX3ByZXNlbnQoc3RydWN0IG1lbV9zZWN0aW9uICptcyxcXG4tLVxcbm1tL3NwYXJzZS5oLTUwLVxcbm1tL3NwYXJzZS5oOjUxOnN0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcXG5tbS9zcGFyc2UuaC01Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAzOjE3OjU2LjA5MzE0NjIyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDk0Nzc1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRoaXMg4oCTIGJhc2ljYWxseSwgd2hhdCBJJ20gdGhpbmtpbmcgYXMgSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGNoYW5nZS5cblxuKipSZWZhY3RvcmluZyBTY3J1dGlueSoqXG5cblJpZ2h0LCBzbyB0aGlzIGlzIGp1c3QgYSByZWZhY3RvcmluZyBvZiBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAuICBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGFsd2F5cywgXCJJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz9cIiBJIG1lYW4sIGl0ICpsb29rcyogaW5jcmVkaWJseSBzaW1wbGUuIEl0J3MganVzdCBhIGNoYW5nZSBpbiBob3cgdGhlIHNpemUgaXMgY29tcHV0ZWQsIGFuZCB0aGV5J3ZlIG1vdmVkIHRoYXQgY2FsY3VsYXRpb24gaW50byBhIGhlYWRlci4gTm90IGV4YWN0bHkgcm9ja2V0IHNjaWVuY2UuIEkgaGF2ZSB0byBxdWlja2x5IGFzc2VzcyB0aGUgcmlzay9yZXdhcmQuXG5cbkhvbGQgb24uLi4gcmVhZGluZyBtb3JlIGNsb3NlbHkuIEFoLCBub3cgSSBzZWUuIEl0J3MgdXNpbmcgYHN0cnVjdF9zaXplX3RgLiBUaGF0IHJpbmdzIGEgYmVsbC4gIEl0IHNvdW5kcyBsaWtlIGEgbWFjcm8gZGVzaWduZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgc3RydWN0IHRoYXQgaGFzIGEgdHJhaWxpbmcgYXJyYXksIGRvZXNuJ3QgaXQ/IExldCBtZSBqdXN0IG1ha2Ugc3VyZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHdoYXQgdGhpcyBpcy4gSXMgaXQgYHN0cnVjdF9zaXplX3RgPyBPciBpcyBpdCBzb21ldGhpbmcgZWxzZSwgbGlrZSBqdXN0IGBzdHJ1Y3Rfc2l6ZWA/ICBJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5kZXJseWluZyBtZWNoYW5pc20gYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGUgZnV6emluZyByYWJiaXQgaG9sZS4gVGhhdCBtYWNybyBpcyB3aGVyZSBhbGwgdGhlIHBvdGVudGlhbCB0cm91YmxlIHdpbGwgbGllLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTc2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDM6MTc6NTkuODQyNjMwNDM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDQxODQ3ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0X3NpemVfdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX2Jpbi5jPTY0PXZvaWQgY3NfZHNwX21vY2tfYmluX2FkZF9yYXdfYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX2Jpbl9idWlsZGVyICpidWlsZGVyLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja19iaW4uYy02OS1cXHRzdHJ1Y3Qgd21md19jb2VmZl9pdGVtICppdGVtO1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmM6NzA6XFx0c2l6ZV90IGJ5dGVzX25lZWRlZCA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfY29lZmZfaXRlbSwgZGF0YSwgcGF5bG9hZF9sZW5fYnl0ZXMpO1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmMtNzEtXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYz05OT12b2lkIGNzX2RzcF9tb2NrX3dtZndfYWRkX3Jhd19ibG9jayhzdHJ1Y3QgY3NfZHNwX21vY2tfd21md19idWlsZGVyICpidWlsZGVyLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMTAzLVxcdHN0cnVjdCB3bWZ3X3JlZ2lvbiAqaGVhZGVyID0gYnVpbGRlci1cXHUwMDNld3JpdGVfcDtcXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzoxMDQ6XFx0dW5zaWduZWQgaW50IGJ5dGVzX25lZWRlZCA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfcmVnaW9uLCBkYXRhLCBwYXlsb2FkX2xlbl9ieXRlcyk7XFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMTA1LVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM9MTcwPXZvaWQgY3NfZHNwX21vY2tfd21md19zdGFydF9hbGdfaW5mb19ibG9jayhzdHJ1Y3QgY3NfZHNwX21vY2tfd21md19idWlsZGVyICpidWlsZGVyLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMjQ3LVxcdFxcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyICovXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM6MjQ4OlxcdFxcdG9mZnNldCA9IHJvdW5kX3VwKDQgKyBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgbmFtZV9sZW4pLFxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTI0OS1cXHRcXHRcXHRcXHQgIHNpemVvZihfX2xlMzIpKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTI2ND12b2lkIGNzX2RzcF9tb2NrX3dtZndfYWRkX2NvZWZmX2Rlc2Moc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTMyNy1cXHRcXHQvKiBSb3VuZCB1cCB0byBuZXh0IF9fbGUzMiBtdWx0aXBsZSAqL1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjMyODpcXHRcXHRwbGUzMiArPSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgc2hvcnRuYW1lX2xlbiksXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzI5LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwbGUzMikpIC8gc2l6ZW9mKCpwbGUzMik7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zMzUtXFx0XFx0LyogUm91bmQgdXAgdG8gbmV4dCBfX2xlMzIgbXVsdGlwbGUgKi9cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozMzY6XFx0XFx0cGxlMzIgKz0gcm91bmRfdXAoc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19zaG9ydF9zdHJpbmcsIGRhdGEsIGZ1bGxuYW1lX2xlbiksXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzM3LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwbGUzMikpIC8gc2l6ZW9mKCpwbGUzMik7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zNDMtXFx0XFx0LyogUm91bmQgdXAgdG8gbmV4dCBfX2xlMzIgbXVsdGlwbGUgKi9cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozNDQ6XFx0XFx0cGxlMzIgKz0gcm91bmRfdXAoc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19sb25nX3N0cmluZywgZGF0YSwgZGVzY3JpcHRpb25fbGVuKSxcXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zNDUtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnBsZTMyKSkgLyBzaXplb2YoKnBsZTMyKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTM1OD12b2lkIGNzX2RzcF9tb2NrX3dtZndfZW5kX2FsZ19pbmZvX2Jsb2NrKHN0cnVjdCBjc19kc3BfbW9ja193bWZ3X2J1aWxkZXIgKmJ1aWxkZXIpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zODMtXFx0XFx0c2hvcnRzdHJpbmcgPSAoY29uc3Qgc3RydWN0IHdtZndfc2hvcnRfc3RyaW5nICopXFx1MDAyNnJnbi1cXHUwMDNlZGF0YVtvZmZzZXRdO1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjM4NDpcXHRcXHRvZmZzZXQgKz0gcm91bmRfdXAoc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19zaG9ydF9zdHJpbmcsIGRhdGEsIHNob3J0c3RyaW5nLVxcdTAwM2VsZW4pLFxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTM4NS1cXHRcXHRcXHRcXHQgICBzaXplb2YoX19sZTMyKSk7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zODgtXFx0XFx0bG9uZ3N0cmluZyA9IChjb25zdCBzdHJ1Y3Qgd21md19sb25nX3N0cmluZyAqKVxcdTAwMjZyZ24tXFx1MDAzZWRhdGFbb2Zmc2V0XTtcXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozODk6XFx0XFx0b2Zmc2V0ICs9IHJvdW5kX3VwKHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfbG9uZ19zdHJpbmcsIGRhdGEsXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzkwLVxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGxvbmdzdHJpbmctXFx1MDAzZWxlbikpLFxcbi0tXFxuZHJpdmVycy9tZC9kbS1wY2FjaGUvY2FjaGUuaC0xOC0jZGVmaW5lIFBDQUNIRV9DQUNIRV9TRUdTX01BWFxcdFxcdCgxMDI0ICogMTAyNClcXHQvKiBtYXhpbXVtIGNhY2hlIHNpemUgZm9yIGVhY2ggZGV2aWNlIGlzIDE2VCAqL1xcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg6MTk6I2RlZmluZSBQQ0FDSEVfS1NFVF9PTk1FRElBX1NJWkVfTUFYXFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgcGNhY2hlX2NhY2hlX2tzZXRfb25tZWRpYSwgZGF0YSwgUENBQ0hFX0tTRVRfS0VZU19NQVgpXFxuZHJpdmVycy9tZC9kbS1wY2FjaGUvY2FjaGUuaC0yMC0jZGVmaW5lIFBDQUNIRV9LU0VUX1NJWkVcXHRcXHQoc2l6ZW9mKHN0cnVjdCBwY2FjaGVfY2FjaGVfa3NldCkgKyBzaXplb2Yoc3RydWN0IHBjYWNoZV9jYWNoZV9rZXlfb25tZWRpYSkgKiBQQ0FDSEVfS1NFVF9LRVlTX01BWClcXG4tLVxcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg9NTA2PXN0YXRpYyBpbmxpbmUgdTMyIGdldF9rc2V0X29ubWVkaWFfc2l6ZShzdHJ1Y3QgcGNhY2hlX2NhY2hlX2tzZXRfb25tZWRpYSAqa3NldF9vbm1lZGlhKVxcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtNTA3LXtcXG5kcml2ZXJzL21kL2RtLXBjYWNoZS9jYWNoZS5oOjUwODpcXHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgcGNhY2hlX2NhY2hlX2tzZXRfb25tZWRpYSwgZGF0YSwga3NldF9vbm1lZGlhLVxcdTAwM2VrZXlfbnVtKTtcXG5kcml2ZXJzL21kL2RtLXBjYWNoZS9jYWNoZS5oLTUwOS19XFxuLS1cXG5kcml2ZXJzL21kL3JhaWQ1LmM9MjQyMD1zdGF0aWMgaW50IGdyb3dfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbnVtKVxcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jLTI0MzUtXFx0c2MgPSBrbWVtX2NhY2hlX2NyZWF0ZShjb25mLVxcdTAwM2VjYWNoZV9uYW1lW2NvbmYtXFx1MDAzZWFjdGl2ZV9uYW1lXSxcXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjQzNjpcXHRcXHRcXHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgZGV2cyksXFxuZHJpdmVycy9tZC9yYWlkNS5jLTI0MzctXFx0XFx0XFx0ICAgICAgIDAsIDAsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jPTI1MjM9c3RhdGljIGludCByZXNpemVfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbmV3c2l6ZSlcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYy0yNTU5LVxcdHNjID0ga21lbV9jYWNoZV9jcmVhdGUoY29uZi1cXHUwMDNlY2FjaGVfbmFtZVsxLWNvbmYtXFx1MDAzZWFjdGl2ZV9uYW1lXSxcXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjU2MDpcXHRcXHRcXHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgbmV3c2l6ZSksXFxuZHJpdmVycy9tZC9yYWlkNS5jLTI1NjEtXFx0XFx0XFx0ICAgICAgIDAsIDAsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2hmaV9jbWRzLmM9MjIzPWludCBwa3Rfc2Vzc2lvbl91bnNldF9idWZmZXJzKHN0cnVjdCBoZmlfc2Vzc2lvbl9yZWxlYXNlX2J1ZmZlcl9wa3QgKnBrdCxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9oZmlfY21kcy5jLTI1My1cXHRcXHRwa3QtXFx1MDAzZXNoZHIuaGRyLnNpemUgPVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9oZmlfY21kcy5jOjI1NDpcXHRcXHRcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfYnVmZmVyc19wa3QsXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2hmaV9jbWRzLmMtMjU1LVxcdFxcdFxcdFxcdCAgICAgIGJ1ZmZlcl9pbmZvLCBiZC1cXHUwMDNlbnVtX2J1ZmZlcnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaD0yMDY9c3RydWN0IGljZV9idWZfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMjEzLVxcdCgoSUNFX1BLR19CVUZfU0laRSAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaDoyMTQ6XFx0ICBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYnVmX2hkciwgIHNlY3Rpb25fZW50cnksIDEpIC0gKGhkX3N6KSkgLyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0yMTUtXFx0IChlbnRfc3opKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaD0zMjg9c3RydWN0IGljZV9sYWJlbF9zZWN0aW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzMzLSNkZWZpbmUgSUNFX01BWF9MQUJFTFNfSU5fQlVGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg6MzM0OlxcdElDRV9NQVhfRU5UUklFU19JTl9CVUYoc3RydWN0X3NpemVfdChzdHJ1Y3QgaWNlX2xhYmVsX3NlY3Rpb24sICBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0zMzUtXFx0XFx0XFx0XFx0XFx0ICAgbGFiZWwsIDEpIC0gICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9MzgyPXN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzg4LSNkZWZpbmUgSUNFX01BWF9CU1RfVENBTVNfSU5fQlVGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaDozODk6XFx0SUNFX01BWF9FTlRSSUVTX0lOX0JVRihzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uLCAgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzkwLVxcdFxcdFxcdFxcdFxcdCAgIHRjYW0sIDEpIC0gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9NDAyPXN0cnVjdCBpY2VfbWFya2VyX3B0eXBlX3RjYW1fc2VjdGlvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oLTQwOC0jZGVmaW5lIElDRV9NQVhfTUFSS0VSX1BUWVBFX1RDQU1TX0lOX0JVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oOjQwOTpcXHRJQ0VfTUFYX0VOVFJJRVNfSU5fQlVGKHN0cnVjdF9zaXplX3Qoc3RydWN0IGljZV9tYXJrZXJfcHR5cGVfdGNhbV9zZWN0aW9uLCAgdGNhbSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtNDEwLVxcdFxcdFxcdCAgICAxKSAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTgxOD1zdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF9jb21wbGV0aW9uKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg2OS1cXHRcXHRpZiAobXNnbGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBudnNwX21lc3NhZ2VfaGVhZGVyKSArXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjg3MDpcXHRcXHRcXHRcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBudnNwXzFfbWVzc2FnZV9zZW5kX3JlY2VpdmVfYnVmZmVyX2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgc2VjdGlvbnMsIDEpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE2NTQ9aW50IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBuZHBvZmZzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE2NzgtXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNjc5OlxcdG5kcF9sZW4gPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiwgZHBlMTYsIHJldCk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNjgwLVxcdGlmIChuZHBvZmZzZXQgKyBuZHBfbGVuIFxcdTAwM2Ugc2tiX2luLVxcdTAwM2VsZW4pIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTY5MT1pbnQgY2RjX25jbV9yeF92ZXJpZnlfbmRwMzIoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IG5kcG9mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTcxNS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3MTY6XFx0bmRwX2xlbiA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHVzYl9jZGNfbmNtX25kcDMyLCBkcGUzMiwgcmV0KTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MTctXFx0aWYgKG5kcG9mZnNldCArIG5kcF9sZW4gXFx1MDAzZSBza2JfaW4tXFx1MDAzZWxlbikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzM1Nz1zdGF0aWMgaW50IHJ0dzg5X2NvcmVfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzM2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcwOlxcdGh3LVxcdTAwM2V2aWZfZGF0YV9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgcnR3ODlfdmlmLCBsaW5rc19pbnN0LCBuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcxOlxcdGh3LVxcdTAwM2VzdGFfZGF0YV9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgcnR3ODlfc3RhLCBsaW5rc19pbnN0LCBuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MzcyLVxcdGh3LVxcdTAwM2V0eHFfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBydHc4OV90eHEpO1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYz0yODYwPW52bWVfZmNfY3JlYXRlX2lvX3F1ZXVlcyhzdHJ1Y3QgbnZtZV9mY19jdHJsICpjdHJsKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODgyLVxcdFxcdFxcdFxcdTAwMjZudm1lX2ZjX21xX29wcywgMSxcXG5kcml2ZXJzL252bWUvaG9zdC9mYy5jOjI4ODM6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgbnZtZV9mY3Bfb3Bfd19zZ2wsIHByaXYsXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODg0LVxcdFxcdFxcdFxcdCAgICAgIGN0cmwtXFx1MDAzZWxwb3J0LVxcdTAwM2VvcHMtXFx1MDAzZWZjcHJxc3RfcHJpdl9zeikpO1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYz0zNTQzPW52bWVfZmNfaW5pdF9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0zNTU5LVxcdFxcdFxcdFxcdTAwMjZudm1lX2ZjX2FkbWluX21xX29wcyxcXG5kcml2ZXJzL252bWUvaG9zdC9mYy5jOjM1NjA6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgbnZtZV9mY3Bfb3Bfd19zZ2wsIHByaXYsXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0zNTYxLVxcdFxcdFxcdFxcdCAgICAgIGN0cmwtXFx1MDAzZWxwb3J0LVxcdTAwM2VvcHMtXFx1MDAzZWZjcHJxc3RfcHJpdl9zeikpO1xcbi0tXFxuZHJpdmVycy9wZXJmL2FybV9wbXV2My5jPTEzNTQ9c3RhdGljIGludCBicmFuY2hfcmVjb3Jkc19hbGxvYyhzdHJ1Y3QgYXJtX3BtdSAqYXJtcG11KVxcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU1LXtcXG5kcml2ZXJzL3BlcmYvYXJtX3BtdXYzLmM6MTM1NjpcXHRzaXplX3Qgc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHBlcmZfYnJhbmNoX3N0YWNrLCBlbnRyaWVzLFxcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU3LVxcdFxcdFxcdFxcdCAgICBicmJlX251bV9icmFuY2hfcmVjb3Jkcyhhcm1wbXUpKTtcXG4tLVxcbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmM9MjA9c3RhdGljIGludCB3bWlfYWRqdXN0X2J1ZmZlcl9sZW5ndGgoc2l6ZV90ICpsZW5ndGgsIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3dtaS9tYXJzaGFsbGluZy5jLTQyLVxcdFxcdGFsaWdubWVudCA9IDI7XFxuZHJpdmVycy9wbGF0Zm9ybS93bWkvbWFyc2hhbGxpbmcuYzo0MzpcXHRcXHRzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21pX3N0cmluZywgY2hhcnMsIG9iai1cXHUwMDNlc3RyaW5nLmxlbmd0aCArIDEpO1xcbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmMtNDQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM9MTI3Mj1zdGF0aWMgaW50IGhwdGlvcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmMtMTM5Ni1cXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM6MTM5NzpcXHRyZXFfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zY3NpX2NvbW1hbmQsXFxuZHJpdmVycy9zY3NpL2hwdGlvcC5jLTEzOTgtXFx0XFx0XFx0XFx0IHNnX2xpc3QsIGhiYS1cXHUwMDNlbWF4X3NnX2Rlc2NyaXB0b3JzKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jPTUxMTg9c3RhdGljIHZvaWQgbWVnYXNhc191cGRhdGVfZXh0X3ZkX2RldGFpbHMoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTE1Ny1cXHRcXHRmdXNpb24tXFx1MDAzZW9sZF9tYXBfc3ogPVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjUxNTg6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfRldfUkFJRF9NQVAsIGxkU3Bhbk1hcCxcXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy01MTU5LVxcdFxcdFxcdFxcdCAgICAgIGluc3RhbmNlLVxcdTAwM2Vmd19zdXBwb3J0ZWRfdmRfY291bnQpO1xcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9NTc4OD1tZWdhc2FzX3NldHVwX2pib2RfbWFwKHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU3OTMtXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM6NTc5NDpcXHRwZF9zZXFfbWFwX3N6ID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQywgc2VxLFxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU3OTUtXFx0XFx0XFx0XFx0ICAgICAgTUFYX1BIWVNJQ0FMX0RFVklDRVMpO1xcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9Nzk2Nz1zdGF0aWMgdm9pZCBtZWdhc2FzX2RldGFjaF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy04MDQ1LVxcdFxcdHBkX3NlcV9tYXBfc3ogPVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjgwNDY6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQyxcXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy04MDQ3LVxcdFxcdFxcdFxcdCAgICAgIHNlcSwgTUFYX1BIWVNJQ0FMX0RFVklDRVMpO1xcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jPTMwMj11OCBNUl9WYWxpZGF0ZU1hcEluZm8oc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlLCB1NjQgbWFwX2lkKVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jLTMyOC1cXHRlbHNlXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jOjMyOTpcXHRcXHRleHBlY3RlZF9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfRldfUkFJRF9NQVAsXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jLTMzMC1cXHRcXHRcXHRcXHRcXHQgICAgICBsZFNwYW5NYXAsXFxuLS1cXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jPTUwNDk9c3RhdGljIGludCBwcWlfY3JlYXRlX3F1ZXVlcyhzdHJ1Y3QgcHFpX2N0cmxfaW5mbyAqY3RybF9pbmZvKVxcbi0tXFxuZHJpdmVycy9zY3NpL3NtYXJ0cHFpL3NtYXJ0cHFpX2luaXQuYy01MDc0LSNkZWZpbmUgUFFJX1JFUE9SVF9FVkVOVF9DT05GSUdfQlVGRkVSX0xFTkdUSFxcdFxcXFxcXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jOjUwNzU6XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgcHFpX2V2ZW50X2NvbmZpZywgIGRlc2NyaXB0b3JzLCBQUUlfTUFYX0VWRU5UX0RFU0NSSVBUT1JTKVxcbmRyaXZlcnMvc2NzaS9zbWFydHBxaS9zbWFydHBxaV9pbml0LmMtNTA3Ni1cXG4tLVxcbmRyaXZlcnMvdGVlL3Fjb210ZWUvcWNvbXRlZV9tc2cuaD0xNTY9c3RydWN0IHFjb210ZWVfbXNnX2NhbGxiYWNrIHtcXG4tLVxcbmRyaXZlcnMvdGVlL3Fjb210ZWUvcWNvbXRlZV9tc2cuaC0xNjUtI2RlZmluZSBxY29tdGVlX21zZ19idWZmZXJfYXJncyh0LCBuKSBcXFxcXFxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oOjE2NjpcXHRxY29tdGVlX21zZ19vZmZzZXRfYWxpZ24oc3RydWN0X3NpemVfdCh0LCBhcmdzLCBuKSlcXG5kcml2ZXJzL3RlZS9xY29tdGVlL3Fjb210ZWVfbXNnLmgtMTY3LS8qIFBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBhIGJ1ZmZlciBhcmd1bWVudCdzIGNvbnRlbnQgYXQgYW4gb2Zmc2V0LiAqL1xcbi0tXFxuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaD0zMTY9eGZzX2J0cmVlX2N1cl9zaXplb2YodW5zaWduZWQgaW50IG5sZXZlbHMpXFxuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaC0zMTcte1xcbmZzL3hmcy9saWJ4ZnMveGZzX2J0cmVlLmg6MzE4OlxcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB4ZnNfYnRyZWVfY3VyLCBiY19sZXZlbHMsIG5sZXZlbHMpO1xcbmZzL3hmcy9saWJ4ZnMveGZzX2J0cmVlLmgtMzE5LX1cXG4tLVxcbmZzL3hmcy9zY3J1Yi9idHJlZS5oPTYxPXhjaGtfYnRyZWVfc2l6ZW9mKHVuc2lnbmVkIGludCBubGV2ZWxzKVxcbmZzL3hmcy9zY3J1Yi9idHJlZS5oLTYyLXtcXG5mcy94ZnMvc2NydWIvYnRyZWUuaDo2MzpcXHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgeGNoa19idHJlZSwgbGFzdGtleSwgbmxldmVscyAtIDEpO1xcbmZzL3hmcy9zY3J1Yi9idHJlZS5oLTY0LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaD0zNzA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzaXplX3QgX19tdXN0X2NoZWNrIHNpemVfc3ViKHNpemVfdCBtaW51ZW5kLCBzaXplX3Qgc3VidHJhaGVuZClcXG4tLVxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00MzktLyoqXFxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ0MDogKiBzdHJ1Y3Rfc2l6ZV90KCkgLSBDYWxjdWxhdGUgc2l6ZSBvZiBzdHJ1Y3R1cmUgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheVxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00NDEtICogQHR5cGU6IHN0cnVjdHVyZSB0eXBlIG5hbWUuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgtNDUxLSAqL1xcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaDo0NTI6I2RlZmluZSBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00NTMtXFx0c3RydWN0X3NpemUoKHR5cGUgKilOVUxMLCBtZW1iZXIsIGNvdW50KVxcbi0tXFxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oLTQ4MC1cXHR1bmlvbiB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaDo0ODE6XFx0XFx0dTggYnl0ZXNbc3RydWN0X3NpemVfdCh0eXBlLCBtZW1iZXIsIGNvdW50KV07XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00ODItXFx0XFx0dHlwZSBvYmo7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9MTA3MD12b2lkICprbWFsbG9jX25vbG9jayhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbm9kZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTA1LVxcdGNvbnN0IHNpemVfdCBfX2NvdW50ID0gKENPVU5UKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEwNjpcXHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTtcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEwNy1cXHRUWVBFICpfX29ial9wdHIgPSBLTUFMTE9DKF9fb2JqX3NpemUsIEdGUCk7XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTYxPXN0YXRpY19hc3NlcnQoSVNfQUxJR05FRChzaXplb2Yoc3RydWN0IHhkcF9idWZmX3hzayksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTYtXFx0c3RhdGljX2Fzc2VydChvZmZzZXRvZmVuZChzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCBjYikgXFx1MDAzZT1cXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjk3OlxcdFxcdCAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgcHJpdixcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTk4LVxcdFxcdFxcdFxcdCAgICBMSUJFVEhfWERQX1BSSVZfU1ooc3opKSlcXG4tLVxcbmlvX3VyaW5nL3JzcmMuYz0yNDI9Ym9vbCBpb19yc3JjX2NhY2hlX2luaXQoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXFxuaW9fdXJpbmcvcnNyYy5jLTI0My17XFxuaW9fdXJpbmcvcnNyYy5jOjI0NDpcXHRjb25zdCBpbnQgaW11X2NhY2hlX3NpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpb19tYXBwZWRfdWJ1ZiwgYnZlYyxcXG5pb191cmluZy9yc3JjLmMtMjQ1LVxcdFxcdFxcdFxcdFxcdFxcdCBJT19DQUNIRURfQlZFQ1NfU0VHUyk7XFxuLS1cXG5rZXJuZWwvcGlkLmM9ODQ4PXZvaWQgX19pbml0IHBpZF9pZHJfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL3BpZC5jLTg2Mi1cXHRpbml0X3BpZF9ucy5waWRfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGUoXFxcInBpZFxcXCIsXFxua2VybmVsL3BpZC5jOjg2MzpcXHRcXHRcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwaWQsIG51bWJlcnMsIDEpLFxcbmtlcm5lbC9waWQuYy04NjQtXFx0XFx0XFx0X19hbGlnbm9mX18oc3RydWN0IHBpZCksXFxuLS1cXG5rZXJuZWwvcGlkX25hbWVzcGFjZS5jPTQwPXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqY3JlYXRlX3BpZF9jYWNoZXAodW5zaWduZWQgaW50IGxldmVsKVxcbi0tXFxua2VybmVsL3BpZF9uYW1lc3BhY2UuYy01Mi1cXHRzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksIFxcXCJwaWRfJXVcXFwiLCBsZXZlbCArIDEpO1xcbmtlcm5lbC9waWRfbmFtZXNwYWNlLmM6NTM6XFx0bGVuID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgcGlkLCBudW1iZXJzLCBsZXZlbCArIDEpO1xcbmtlcm5lbC9waWRfbmFtZXNwYWNlLmMtNTQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGlkX2NhY2hlc19tdXRleCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ5MDQ9c3RhdGljIHMzMiBzY3hfc2V0X2NtYXNrX3NjcmF0Y2hfYWxsb2Moc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNS17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTA2OlxcdHNpemVfdCBzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgc2N4X2NtYXNrLCBiaXRzLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNy1cXHRcXHRcXHRcXHQgICAgU0NYX0NNQVNLX05SX1dPUkRTKG51bV9wb3NzaWJsZV9jcHVzKCkpKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDkyOD1zdGF0aWMgdm9pZCBzY3hfc2V0X2NtYXNrX3NjcmF0Y2hfZnJlZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTI5LXtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MzA6XFx0c2l6ZV90IHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBzY3hfY21hc2ssIGJpdHMsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTMxLVxcdFxcdFxcdFxcdCAgICBTQ1hfQ01BU0tfTlJfV09SRFMobnVtX3Bvc3NpYmxlX2NwdXMoKSkpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz02Nzg0PXN0YXRpYyBzdHJ1Y3Qgc2N4X3NjaGVkICpzY3hfYWxsb2NfYW5kX2FkZF9zY2hlZChzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjgyMy1cXHRzY2gtXFx1MDAzZWRzcF9tYXhfYmF0Y2ggPSBvcHMtXFx1MDAzZWRpc3BhdGNoX21heF9iYXRjaCA/OiBTQ1hfRFNQX0RGTF9NQVhfQkFUQ0g7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2ODI0OlxcdHNjaC1cXHUwMDNlcGNwdSA9IF9fYWxsb2NfcGVyY3B1KHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjeF9zY2hlZF9wY3B1LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjgyNS1cXHRcXHRcXHRcXHRcXHRcXHQgZHNwX2N0eC5idWYsIHNjaC1cXHUwMDNlZHNwX21heF9iYXRjaCksXFxuLS1cXG5saWIvdGVzdHMvb3ZlcmZsb3dfa3VuaXQuYz03MDY9c3RhdGljIHZvaWQgb3ZlcmZsb3dfc2l6ZV9oZWxwZXJzX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmMtNzA4LVxcdC8qIE1ha2Ugc3VyZSBzdHJ1Y3Rfc2l6ZSgpIGNhbiBiZSB1c2VkIGluIGEgY29uc3RhbnQgZXhwcmVzc2lvbi4gKi9cXG5saWIvdGVzdHMvb3ZlcmZsb3dfa3VuaXQuYzo3MDk6XFx0dTggY2VfYXJyYXlbc3RydWN0X3NpemVfdChzdHJ1Y3QgX190ZXN0X2ZsZXhfYXJyYXksIGRhdGEsIDU1KV07XFxubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmMtNzEwLVxcdHN0cnVjdCBfX3Rlc3RfZmxleF9hcnJheSAqb2JqO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTU2MTM9aW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01NjM4LVxcbm1tL21lbWNvbnRyb2wuYzo1NjM5OlxcdG1lbWNnX3NpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fY2dyb3VwLCBub2RlaW5mbywgbnJfbm9kZV9pZHMpO1xcbm1tL21lbWNvbnRyb2wuYy01NjQwLVxcdG1lbWNnX2NhY2hlcCA9IGttZW1fY2FjaGVfY3JlYXRlKFxcXCJtZW1fY2dyb3VwXFxcIiwgbWVtY2dfc2l6ZSwgMCxcXG4tLVxcbm1tL3NsdWIuYz03NzU5PXN0YXRpYyB1bnNpZ25lZCBpbnQgY2FsY3VsYXRlX3NoZWFmX2NhcGFjaXR5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTc3OTMtXFx0LyogSW5jcmVtZW50IGNhcGFjaXR5IHRvIG1ha2Ugc2hlYWYgZXhhY3RseSBhIGttYWxsb2Mgc2l6ZSBidWNrZXQgKi9cXG5tbS9zbHViLmM6Nzc5NDpcXHRzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgc2xhYl9zaGVhZiwgb2JqZWN0cywgY2FwYWNpdHkpO1xcbm1tL3NsdWIuYy03Nzk1LVxcdHNpemUgPSBrbWFsbG9jX3NpemVfcm91bmR1cChzaXplKTtcXG5tbS9zbHViLmM6Nzc5NjpcXHRjYXBhY2l0eSA9IChzaXplIC0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgc2xhYl9zaGVhZiwgb2JqZWN0cywgMCkpIC8gc2l6ZW9mKHZvaWQgKik7XFxubW0vc2x1Yi5jLTc3OTctXFxuLS1cXG5tbS9zcGFyc2UuaD01MT1zdGF0aWMgaW5saW5lIHNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXFxubW0vc3BhcnNlLmgtNTIte1xcbm1tL3NwYXJzZS5oOjUzOlxcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLFxcbm1tL3NwYXJzZS5oLTU0LVxcdFxcdFxcdCAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpO1xcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmM9ODc5PWV0aHRvb2xfcnhmaF9jdHhfYWxsb2MoY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMsXFxuLS1cXG5uZXQvZXRodG9vbC9jb21tb24uYy04OTQtXFx0ZmxleF9sZW4gPSBzaXplX2FkZChrZXlfb2ZmLCBrZXlfbWF4KTtcXG5uZXQvZXRodG9vbC9jb21tb24uYzo4OTU6XFx0c2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0LCBkYXRhLCBmbGV4X2xlbik7XFxubmV0L2V0aHRvb2wvY29tbW9uLmMtODk2LVxcbi0tXFxubmV0L2hzci9oc3JfZnJhbWVyZWcuaD0xMjA9c3RhdGljIGlubGluZSBzaXplX3QgaHNyX3NlcV9ibG9ja19zaXplKHN0cnVjdCBoc3Jfbm9kZSAqbm9kZSlcXG4tLVxcbm5ldC9oc3IvaHNyX2ZyYW1lcmVnLmgtMTIyLVxcdFdBUk5fT05fT05DRShub2RlLVxcdTAwM2VzZXFfcG9ydF9jbnQgPT0gMCk7XFxubmV0L2hzci9oc3JfZnJhbWVyZWcuaDoxMjM6XFx0cmV0dXJuIHN0cnVjdF9zaXplX3Qoc3RydWN0IGhzcl9zZXFfYmxvY2ssIHNlcV9ucnMsIG5vZGUtXFx1MDAzZXNlcV9wb3J0X2NudCk7XFxubmV0L2hzci9oc3JfZnJhbWVyZWcuaC0xMjQtfVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NzkxMj1zdGF0aWMgaW50IG5mdF9zZXRlbGVtX2ZsdXNoKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy03OTIzLVxcdHRyYW5zID0gbmZ0X3RyYW5zX2FsbG9jKGN0eCwgTkZUX01TR19ERUxTRVRFTEVNLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5MjQ6XFx0XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0sIGVsZW1zLCAxKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNzkyNS1cXHRpZiAoIXRyYW5zKVxcbi0tXFxubmV0L3J4cnBjL2tleS5jPTE2NT1zdGF0aWMgaW50IHJ4cnBjX3ByZXBhcnNlX3hkcl95ZnNfcnhnayhzdHJ1Y3Qga2V5X3ByZXBhcnNlZF9wYXlsb2FkICpwcmVwLFxcbi0tXFxubmV0L3J4cnBjL2tleS5jLTIxMi1cXG5uZXQvcnhycGMva2V5LmM6MjEzOlxcdHRva2VuLVxcdTAwM2VyeGdrID0ga3phbGxvYyhzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCByeGdrX2tleSwgX2tleSwgcmF3X2tleWxlbiksIEdGUF9LRVJORUwpO1xcbm5ldC9yeHJwYy9rZXkuYy0yMTQtXFx0aWYgKCF0b2tlbi1cXHUwMDNlcnhnaylcXG4tLVxcbm5ldC9zY3RwL3NvY2tldC5jPTQxMDU9c3RhdGljIGludCBzY3RwX3NldHNvY2tvcHRfcmVzZXRfc3RyZWFtcyhzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvc2N0cC9zb2NrZXQuYy00MTE0LVxcdG9wdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgb3B0bGVuLFxcbm5ldC9zY3RwL3NvY2tldC5jOjQxMTU6XFx0XFx0ICAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgc3JzX3N0cmVhbV9saXN0LFxcbm5ldC9zY3RwL3NvY2tldC5jLTQxMTYtXFx0XFx0XFx0XFx0ICAgICBVU0hSVF9NQVgpKTtcXG4tLVxcbm5ldC9zY3RwL3NvY2tldC5jPTQ1Nzk9c3RhdGljIGludCBzY3RwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L3NjdHAvc29ja2V0LmMtNDYwMS1cXHRcXHRvcHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG9wdGxlbixcXG5uZXQvc2N0cC9zb2NrZXQuYzo0NjAyOlxcdFxcdFxcdCAgICAgICBQQUdFX0FMSUdOKHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcyxcXG5uZXQvc2N0cC9zb2NrZXQuYy00NjAzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdHNyc19zdHJlYW1fbGlzdCwgVVNIUlRfTUFYKSkpO1xcbi0tXFxuc2NyaXB0cy9jb2NjaW5lbGxlL2FwaS9rbWFsbG9jX29ianMuY29jY2k9NTg9ZnJlc2ggaWRlbnRpZmllciBBTExPQ19PQkpTID0gc2NyaXB0OnB5dGhvbihBTExPQ19BUlJBWSkgeyBhbGxvY19hcnJheShBTExPQ19BUlJBWSkgfTtcXG4tLVxcbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMS18XFxuc2NyaXB0cy9jb2NjaW5lbGxlL2FwaS9rbWFsbG9jX29ianMuY29jY2k6MTIyOi1cXHRBTExPQyhzdHJ1Y3Rfc2l6ZV90KFRZUEUsIEZMRVgsIENPVU5UKSwgR0ZQKVxcbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMy0rXFx0QUxMT0NfRkxFWChUWVBFLCBGTEVYLCBDT1VOVCwgR0ZQKVxcbi0tXFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmg9Mzg9c3RydWN0IGxhbmRsb2NrX2RldGFpbHMge1xcbi0tXFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmgtNjUtLyogTWFrZXMgc3VyZSB0aGUgZ3JlYXRlc3QgbGFuZGxvY2tfZGV0YWlscyBjYW4gYmUgYWxsb2NhdGVkLiAqL1xcbnNlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5oOjY2OnN0YXRpY19hc3NlcnQoc3RydWN0X3NpemVfdChzdHJ1Y3QgbGFuZGxvY2tfZGV0YWlscywgZXhlX3BhdGgsXFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmgtNjctXFx0XFx0XFx0ICAgIExBTkRMT0NLX1BBVEhfTUFYX1NJWkUpIFxcdTAwM2M9IEtNQUxMT0NfTUFYX1NJWkUpO1xcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYz0yMjE9c3RhdGljIGVmaV9zdGF0dXNfdCBjc19hbXBfbGliX3Rlc3RfZ2V0X2VmaV92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL2NzLWFtcC1saWItdGVzdC5jLTI2MS0jZGVmaW5lIENTX0FNUF9MSUJfWkVST19GSUxMRURfQkxPQl9TSVpFIFxcXFxcXG5zb3VuZC9zb2MvY29kZWNzL2NzLWFtcC1saWItdGVzdC5jOjI2MjpcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBjaXJydXNfYW1wX2VmaV9kYXRhLCBkYXRhLCA4KVxcbnNvdW5kL3NvYy9jb2RlY3MvY3MtYW1wLWxpYi10ZXN0LmMtMjYzLVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaD0xMDM3PXN0YXRpYyBpbmxpbmUgdTY0IHNjeF9jbG9ja19pcnEodTMyIGNwdSlcXG4tLVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMTA2MS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oOjEwNjI6I2RlZmluZSBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpXFx0XFxcXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMTA2My1cXHRzdHJ1Y3Rfc2l6ZSgodHlwZSAqKU5VTEwsIG1lbWJlciwgY291bnQpXFxuLS1cXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmM9MTUxPXN0cnVjdCB0YXNrX2N0eCB7XFxuLS1cXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmMtMTY5LSNkZWZpbmUgVEFTS19DVFhfU1RSSURFXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbnRvb2xzL3NjaGVkX2V4dC9zY3hfcW1hcC5icGYuYzoxNzA6XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgdGFza19jdHgsIGNwdXNfYWxsb3dlZC5iaXRzLFxcdFxcdFxcXFxcXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmMtMTcxLVxcdFxcdCAgICAgIENNQVNLX05SX1dPUkRTKFNDWF9RTUFQX01BWF9DUFVTKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDM6MTg6MDEuNTg2ODI1MzI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2MzU0MjYyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGxvb2tpbmcgbGlrZSBhIHJlZmFjdG9yaW5nLiBJIHNlZSB0aGF0IGBzdHJ1Y3Rfc2l6ZV90YCwgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oYCwgaXMgYmVpbmcgdXNlZCB0byByZXBsYWNlIHRoZSBkaXJlY3QgY2FsY3VsYXRpb24gb2YgdGhlIHNpemUuIFByZXZpb3VzbHksIGl0IHdhcyBgc2l6ZW9mKHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSkgKyB1c2VtYXBfc2l6ZSgpYCwgYW5kIG5vdyBpdCdzIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLCBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSlgLlxuXG5UaGlzIGlzIHB1cmVseSBhYm91dCBjb2RlIGNsZWFubGluZXNzLiBJdCdzIG5vdCBhbHRlcmluZyBhbnkgY29yZSBmdW5jdGlvbmFsaXR5LiBMb29raW5nIGF0IGBtbS9zcGFyc2UuY2AgYmVmb3JlIGFuZCBhZnRlciwgdGhlIGxvZ2ljIHJlbWFpbnMgaWRlbnRpY2FsLiBUaGUgb2xkIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiBjYWxjdWxhdGVkIHRoZSBzaXplIGRpcmVjdGx5OlxuXG5gYGBjXG5zdGF0aWMgdW5zaWduZWQgbG9uZyB1c2VtYXBfc2l6ZSh2b2lkKVxue1xuXHRyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7XG59XG5cbnNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXG57XG5cdHJldHVybiBzaXplb2Yoc3RydWN0IG1lbV9zZWN0aW9uX3VzYWdlKSArIHVzZW1hcF9zaXplKCk7XG59XG5gYGBcblxuQW5kIHBvc3QtcGF0Y2g6XG5cbmBgYGNcbnN0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbntcblx0cmV0dXJuIHN0cnVjdF9zaXplX3Qoc3RydWN0IG1lbV9zZWN0aW9uX3VzYWdlLCBwYWdlYmxvY2tfZmxhZ3MsXG5cdFx0XHQgICAgIEJJVFNfVE9fTE9OR1MoU0VDVElPTl9CTE9DS0ZMQUdTX0JJVFMpKTtcbn1cbmBgYFxuXG5Ob3csIGBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpYCBleHBhbmRzIHRvIGBzaXplb2YodHlwZSkgKyBjb3VudCAqIHNpemVvZih0eXBlLVx1MDAzZW1lbWJlcilgLiBIZXJlLCBgdHlwZWAgaXMgYHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZWAsIGBtZW1iZXJgIGlzIGBwYWdlYmxvY2tfZmxhZ3NgLCB3aGljaCBpcyBhbiBhcnJheSBvZiBgdW5zaWduZWQgbG9uZ2AsIGFuZCBgY291bnRgIGlzIGBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKWAuICBTbywgYGNvdW50ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpYCBpcywgaW4gZmFjdCwgdGhlIHNhbWUgYXMgdGhlIG9sZCBgdXNlbWFwX3NpemUoKWAuICBBbmQgdGhlIGJhc2UgYHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpYCByZW1haW5zIHRoZSBiYXNlLiBJdCdzIHRoZSBzYW1lIG1hdGgsIGp1c3QgZXhwcmVzc2VkIGRpZmZlcmVudGx5LiBUaGVyZSdzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgY29kZSBwYXRocywgbm8gYWx0ZXJlZCBiZWhhdmlvciwgaXQncyBqdXN0IGFib3V0IHRoZSBwcmVzZW50YXRpb24uXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCB0aGVyZSdzIG5vIGFkZGVkIHZhbHVlIGluIGZ1enppbmcgdGhpcyBjaGFuZ2UuIEknbGwgZmxhZyBgV29ydGhGdXp6aW5nYCBhcyBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY2MywiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMzoxODowOS4zNTAzNzA1NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowww6jh[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 02:39:43 +0000 UTC FinishedAt: 2026-08-05 03:18:10 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAzOjE3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDM6MTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA0NzkyNWRjYjQ4N2E0NjBjMjViZmY4Y2JlNTQ0Mzk1ZTFiNDIxZjkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwMzoxNzo0NSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuaW5kZXggYTI2YzhiODU1MjIyMi4uODY4OTExNjNlMGVmNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvbW16b25lLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvbW16b25lLmhcbkBAIC0yMDcwLDcgJiM0MzsyMDcwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlvbih1bnNpZ25lZCBsb25nIG5yKVxuICNlbmRpZlxuIFx0cmV0dXJuIFx1MDAyNm1lbV9zZWN0aW9uW3Jvb3RdW25yIFx1MDAyNiBTRUNUSU9OX1JPT1RfTUFTS107XG4gfVxuLWV4dGVybiBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKTtcbiBcbiAvKlxuICAqIFdlIHVzZSB0aGUgbG93ZXIgYml0cyBvZiB0aGUgbWVtX21hcCBwb2ludGVyIHRvIHN0b3JlIGEgbGl0dGxlIGJpdCBvZlxuZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5jIGIvbW0vc3BhcnNlLmNcbmluZGV4IDcwNGE5ZGVjMmI5YWYuLjQ2NDU4ZTUzMDBlMjYgMTAwNjQ0XG4tLS0gYS9tbS9zcGFyc2UuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLmNcbkBAIC0yMTMsMTYgJiM0MzsyMTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbWVtYmxvY2tzX3ByZXNlbnQodm9pZClcbiBcdFx0bWVtb3J5X3ByZXNlbnQobmlkLCBzdGFydCwgZW5kKTtcbiB9XG4gXG4tc3RhdGljIHVuc2lnbmVkIGxvbmcgdXNlbWFwX3NpemUodm9pZClcbi17XG4tXHRyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7XG4tfVxuLVxuLXNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXG4te1xuLVx0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKCk7XG4tfVxuLVxuICNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVBcbiB1bnNpZ25lZCBsb25nIF9faW5pdCBzZWN0aW9uX21hcF9zaXplKHZvaWQpXG4ge1xuZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5oIGIvbW0vc3BhcnNlLmhcbmluZGV4IDk1YWEwMzEyMTNmMjIuLjNiNzQ0NjY3YTdlNjIgMTAwNjQ0XG4tLS0gYS9tbS9zcGFyc2UuaFxuJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLmhcbkBAIC00Nyw2ICYjNDM7NDcsMTIgQEAgc3RhdGljIGlubGluZSB2b2lkIF9fc2VjdGlvbl9tYXJrX3ByZXNlbnQoc3RydWN0IG1lbV9zZWN0aW9uICptcyxcbiBcbiBcdG1zLVx1MDAzZXNlY3Rpb25fbWVtX21hcCB8PSBTRUNUSU9OX01BUktFRF9QUkVTRU5UO1xuIH1cbiYjNDM7XG4mIzQzO3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbiYjNDM7e1xuJiM0MztcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLFxuJiM0MztcdFx0XHQgICAgIEJJVFNfVE9fTE9OR1MoU0VDVElPTl9CTE9DS0ZMQUdTX0JJVFMpKTtcbiYjNDM7fVxuICNlbHNlXG4gc3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0KHZvaWQpIHt9XG4gI2VuZGlmIC8qIENPTkZJR19TUEFSU0VNRU0gKi9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMzoxNzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaXMgYSBwdXJlbHkgY29zbWV0aWMgcmVmYWN0b3JpbmcgdGhhdCBtb3ZlcyB0aGUgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZ1bmN0aW9uIHRvIGEgaGVhZGVyIGZpbGUgYW5kIHNpbXBsaWZpZXMgaXRzIHNpemUgY2FsY3VsYXRpb24gdXNpbmcgdGhlIGBzdHJ1Y3Rfc2l6ZV90YCBtYWNyby4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBmdW5jdGlvbmFsIGNoYW5nZXMgb3IgbmV3IHJlYWNoYWJsZSBjb2RlIHBhdGhzIHRoYXQgcmVxdWlyZSBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDQ3OTI1ZGNiNDg3YTQ2MGMyNWJmZjhjYmU1NDQzOTVlMWI0MjFmOTAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyA1IDAzOjE3OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaCBiL2luY2x1ZGUvbGludXgvbW16b25lLmgKaW5kZXggYTI2YzhiODU1MjIyMi4uODY4OTExNjNlMGVmNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaAomIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oCkBAIC0yMDcwLDcgJiM0MzsyMDcwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlvbih1bnNpZ25lZCBsb25nIG5yKQogI2VuZGlmCiAJcmV0dXJuICZhbXA7bWVtX3NlY3Rpb25bcm9vdF1bbnIgJmFtcDsgU0VDVElPTl9ST09UX01BU0tdOwogfQotZXh0ZXJuIHNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpOwogCiAvKgogICogV2UgdXNlIHRoZSBsb3dlciBiaXRzIG9mIHRoZSBtZW1fbWFwIHBvaW50ZXIgdG8gc3RvcmUgYSBsaXR0bGUgYml0IG9mCmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuYyBiL21tL3NwYXJzZS5jCmluZGV4IDcwNGE5ZGVjMmI5YWYuLjQ2NDU4ZTUzMDBlMjYgMTAwNjQ0Ci0tLSBhL21tL3NwYXJzZS5jCiYjNDM7JiM0MzsmIzQzOyBiL21tL3NwYXJzZS5jCkBAIC0yMTMsMTYgJiM0MzsyMTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbWVtYmxvY2tzX3ByZXNlbnQodm9pZCkKIAkJbWVtb3J5X3ByZXNlbnQobmlkLCBzdGFydCwgZW5kKTsKIH0KIAotc3RhdGljIHVuc2lnbmVkIGxvbmcgdXNlbWFwX3NpemUodm9pZCkKLXsKLQlyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7Ci19Ci0KLXNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpCi17Ci0JcmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKCk7Ci19Ci0KICNpZmRlZiBDT05GSUdfU1BBUlNFTUVNX1ZNRU1NQVAKIHVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL21tL3NwYXJzZS5oIGIvbW0vc3BhcnNlLmgKaW5kZXggOTVhYTAzMTIxM2YyMi4uM2I3NDQ2NjdhN2U2MiAxMDA2NDQKLS0tIGEvbW0vc3BhcnNlLmgKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc3BhcnNlLmgKQEAgLTQ3LDYgJiM0Mzs0NywxMiBAQCBzdGF0aWMgaW5saW5lIHZvaWQgX19zZWN0aW9uX21hcmtfcHJlc2VudChzdHJ1Y3QgbWVtX3NlY3Rpb24gKm1zLAogCiAJbXMtJmd0O3NlY3Rpb25fbWVtX21hcCB8PSBTRUNUSU9OX01BUktFRF9QUkVTRU5UOwogfQomIzQzOwomIzQzO3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCkKJiM0Mzt7CiYjNDM7CXJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLAomIzQzOwkJCSAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpOwomIzQzO30KICNlbHNlCiBzdGF0aWMgaW5saW5lIHZvaWQgc3BhcnNlX2luaXQodm9pZCkge30KICNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNICovCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAzOjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI0NjQKCQkJCQkJCW91dHB1dDogMjEKCQkJCQkJCXRob3VnaHRzOiAzMDEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUmVmYWN0b3JpbmcgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb3ZpbmcgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZyb20gYG1tL3NwYXJzZS5jYCB0byBgbW0vc3BhcnNlLmhgIGFuZCBtYWtpbmcgaXQgYSBgc3RhdGljIGlubGluZWAgZnVuY3Rpb24uIFRoZSBjb2RlIGFsc28gc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24gaXRzZWxmIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90YC4gSG1tLCBJJiMzOTttIHNsaWdodGx5IHRocm93biBieSBgc3RydWN0X3NpemVfdGDigJRJIHdhbnQgdG8gYmUgc3VyZSBpdCYjMzk7cyB0aGUgcmlnaHQgdHlwZS4gSSBzaG91bGQgZG91YmxlLWNoZWNrIGlmIGl0JiMzOTtzIG5ldyBvciBpZiBJJiMzOTttIGp1c3QgbWlzcmVtZW1iZXJpbmcgdGhlIG5hbWUsIG9yIGlmIEkmIzM5O20gZ2V0dGluZyBtaXhlZCB1cCB3aXRoIGBzdHJ1Y3Rfc2l6ZWAuCgpSaWdodCwgbGV0IG1lIHNlZSBleGFjdGx5IHdoYXQgdGhlIGRpZmYgZG9lcy4gSXQgKnJlbW92ZXMqIGB1c2VtYXBfc2l6ZWAgYW5kIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmcm9tIGBtbS9zcGFyc2UuY2AgYW5kICphZGRzKiBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgdG8gYG1tL3NwYXJzZS5oYC4gQWgsIGdvdCBpdDogdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3JpbmcvY2xlYW51cC4gVGhlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBOb3cgSSBuZWVkIHRvIGNvbnNpZGVyIGZ1bmN0aW9uYWwgaW1wYWN0LiBEb2VzIHRoaXMgY2hhbmdlIGFueSBvZiB0aGUgdW5kZXJseWluZyBsb2dpYz8KCmBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBpcyB1c2VkIGR1cmluZyBtZW1vcnkgaG90cGx1ZyBvciBzcGFyc2UgbWVtb3J5IGluaXRpYWxpemF0aW9uLCBzbyBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzdWJ0bGUgY2hhbmdlcy4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaWYgaXQmIzM5O3Mgd29ydGggZnV6emluZy4gR2VuZXJhbGx5LCB0aGlzIGtpbmQgb2YgcmVmYWN0b3JpbmcsIG1vdmluZyBhIGZ1bmN0aW9uIHRvIGEgaGVhZGVyIGFuZCBtYWtpbmcgaXQgaW5saW5lLCBzaG91bGRuJiMzOTt0IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb2RlIHBhdGhzIHRoYXQgd291bGQgbmVlZCBmdXp6aW5nIHVubGVzcywgYW5kIHRoaXMgaXMgdGhlIGltcG9ydGFudCBjYXZlYXQsIGl0IGFsc28gZml4ZXMgYSBwcmUtZXhpc3RpbmcgYnVnLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBzdXJlLgoKT25lIG1vcmUgcXVpY2sgY2hlY2s6IGFnYWluLCBgc3RydWN0X3NpemVfdGA/IEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IHN1cmUgb2YgdGhlIG5hbWUuIExldCBtZSBncmVwIGZvciBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgYW5kIHNlZSB3aGF0IGNvbWVzIHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDAzOjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21lbV9zZWN0aW9uX3VzYWdlX3NpemUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vc3BhcnNlLXZtZW1tYXAuYz04MjM9c3RhdGljIHN0cnVjdCBwYWdlICogX19tZW1pbml0IHNlY3Rpb25fYWN0aXZhdGUoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBwZm4sXG4tLVxubW0vc3BhcnNlLXZtZW1tYXAuYy04MzItXHRpZiAoIW1zLVx1MDAzZXVzYWdlKSB7XG5tbS9zcGFyc2Utdm1lbW1hcC5jOjgzMzpcdFx0dXNhZ2UgPSBremFsbG9jKG1lbV9zZWN0aW9uX3VzYWdlX3NpemUoKSwgR0ZQX0tFUk5FTCk7XG5tbS9zcGFyc2Utdm1lbW1hcC5jLTgzNC1cdFx0aWYgKCF1c2FnZSlcbi0tXG5tbS9zcGFyc2UuYz0yNDk9dm9pZCBfX2luaXQgc3BhcnNlX2luaXRfZWFybHlfc2VjdGlvbihpbnQgbmlkLCBzdHJ1Y3QgcGFnZSAqbWFwLFxuLS1cbm1tL3NwYXJzZS5jLTI1NC1cdFx0XHRzcGFyc2VfdXNhZ2VidWYsIFNFQ1RJT05fSVNfRUFSTFkgfCBmbGFncyk7XG5tbS9zcGFyc2UuYzoyNTU6XHRzcGFyc2VfdXNhZ2VidWYgPSAodm9pZCAqKXNwYXJzZV91c2FnZWJ1ZiAmIzQzOyBtZW1fc2VjdGlvbl91c2FnZV9zaXplKCk7XG5tbS9zcGFyc2UuYy0yNTYtfVxuLS1cbm1tL3NwYXJzZS5jPTI1OD1zdGF0aWMgaW50IF9faW5pdCBzcGFyc2VfdXNhZ2VfaW5pdChpbnQgbmlkLCB1bnNpZ25lZCBsb25nIG1hcF9jb3VudClcbi0tXG5tbS9zcGFyc2UuYy0yNjEtXG5tbS9zcGFyc2UuYzoyNjI6XHRzaXplID0gbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSgpICogbWFwX2NvdW50O1xubW0vc3BhcnNlLmMtMjYzLVx0c3BhcnNlX3VzYWdlYnVmID0gbWVtYmxvY2tfYWxsb2Nfbm9kZShzaXplLCBTTVBfQ0FDSEVfQllURVMsIG5pZCk7XG4tLVxubW0vc3BhcnNlLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIF9fc2VjdGlvbl9tYXJrX3ByZXNlbnQoc3RydWN0IG1lbV9zZWN0aW9uICptcyxcbi0tXG5tbS9zcGFyc2UuaC01MC1cbm1tL3NwYXJzZS5oOjUxOnN0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbm1tL3NwYXJzZS5oLTUyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMzoxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTc2CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGlzIOKAkyBiYXNpY2FsbHksIHdoYXQgSSYjMzk7bSB0aGlua2luZyBhcyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGNoYW5nZS4KCioqUmVmYWN0b3JpbmcgU2NydXRpbnkqKgoKUmlnaHQsIHNvIHRoaXMgaXMganVzdCBhIHJlZmFjdG9yaW5nIG9mIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYC4gIFRoZSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzLCAmIzM0O0lzIHRoaXMgZXZlbiB3b3J0aCBmdXp6aW5nPyYjMzQ7IEkgbWVhbiwgaXQgKmxvb2tzKiBpbmNyZWRpYmx5IHNpbXBsZS4gSXQmIzM5O3MganVzdCBhIGNoYW5nZSBpbiBob3cgdGhlIHNpemUgaXMgY29tcHV0ZWQsIGFuZCB0aGV5JiMzOTt2ZSBtb3ZlZCB0aGF0IGNhbGN1bGF0aW9uIGludG8gYSBoZWFkZXIuIE5vdCBleGFjdGx5IHJvY2tldCBzY2llbmNlLiBJIGhhdmUgdG8gcXVpY2tseSBhc3Nlc3MgdGhlIHJpc2svcmV3YXJkLgoKSG9sZCBvbi4uLiByZWFkaW5nIG1vcmUgY2xvc2VseS4gQWgsIG5vdyBJIHNlZS4gSXQmIzM5O3MgdXNpbmcgYHN0cnVjdF9zaXplX3RgLiBUaGF0IHJpbmdzIGEgYmVsbC4gIEl0IHNvdW5kcyBsaWtlIGEgbWFjcm8gZGVzaWduZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgc3RydWN0IHRoYXQgaGFzIGEgdHJhaWxpbmcgYXJyYXksIGRvZXNuJiMzOTt0IGl0PyBMZXQgbWUganVzdCBtYWtlIHN1cmUuIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgd2hhdCB0aGlzIGlzLiBJcyBpdCBgc3RydWN0X3NpemVfdGA/IE9yIGlzIGl0IHNvbWV0aGluZyBlbHNlLCBsaWtlIGp1c3QgYHN0cnVjdF9zaXplYD8gIEkgbmVlZCB0byBjb25maXJtIHRoZSB1bmRlcmx5aW5nIG1lY2hhbmlzbSBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoZSBmdXp6aW5nIHJhYmJpdCBob2xlLiBUaGF0IG1hY3JvIGlzIHdoZXJlIGFsbCB0aGUgcG90ZW50aWFsIHRyb3VibGUgd2lsbCBsaWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDM6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RydWN0X3NpemVfdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX2Jpbi5jPTY0PXZvaWQgY3NfZHNwX21vY2tfYmluX2FkZF9yYXdfYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX2Jpbl9idWlsZGVyICpidWlsZGVyLFxuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmMtNjktXHRzdHJ1Y3Qgd21md19jb2VmZl9pdGVtICppdGVtO1xuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja19iaW4uYzo3MDpcdHNpemVfdCBieXRlc19uZWVkZWQgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X2NvZWZmX2l0ZW0sIGRhdGEsIHBheWxvYWRfbGVuX2J5dGVzKTtcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmMtNzEtXG4tLVxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM9OTk9dm9pZCBjc19kc3BfbW9ja193bWZ3X2FkZF9yYXdfYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0xMDMtXHRzdHJ1Y3Qgd21md19yZWdpb24gKmhlYWRlciA9IGJ1aWxkZXItXHUwMDNld3JpdGVfcDtcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjEwNDpcdHVuc2lnbmVkIGludCBieXRlc19uZWVkZWQgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3JlZ2lvbiwgZGF0YSwgcGF5bG9hZF9sZW5fYnl0ZXMpO1xuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMTA1LVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTE3MD12b2lkIGNzX2RzcF9tb2NrX3dtZndfc3RhcnRfYWxnX2luZm9fYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0yNDctXHRcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyICovXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzoyNDg6XHRcdG9mZnNldCA9IHJvdW5kX3VwKDQgJiM0Mzsgc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19zaG9ydF9zdHJpbmcsIGRhdGEsIG5hbWVfbGVuKSxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTI0OS1cdFx0XHRcdCAgc2l6ZW9mKF9fbGUzMikpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTI2ND12b2lkIGNzX2RzcF9tb2NrX3dtZndfYWRkX2NvZWZmX2Rlc2Moc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zMjctXHRcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyIG11bHRpcGxlICovXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozMjg6XHRcdHBsZTMyICYjNDM7PSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgc2hvcnRuYW1lX2xlbiksXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zMjktXHRcdFx0XHQgIHNpemVvZigqcGxlMzIpKSAvIHNpemVvZigqcGxlMzIpO1xuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTMzNS1cdFx0LyogUm91bmQgdXAgdG8gbmV4dCBfX2xlMzIgbXVsdGlwbGUgKi9cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjMzNjpcdFx0cGxlMzIgJiM0Mzs9IHJvdW5kX3VwKHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfc2hvcnRfc3RyaW5nLCBkYXRhLCBmdWxsbmFtZV9sZW4pLFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzM3LVx0XHRcdFx0ICBzaXplb2YoKnBsZTMyKSkgLyBzaXplb2YoKnBsZTMyKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zNDMtXHRcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyIG11bHRpcGxlICovXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozNDQ6XHRcdHBsZTMyICYjNDM7PSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X2xvbmdfc3RyaW5nLCBkYXRhLCBkZXNjcmlwdGlvbl9sZW4pLFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzQ1LVx0XHRcdFx0ICBzaXplb2YoKnBsZTMyKSkgLyBzaXplb2YoKnBsZTMyKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYz0zNTg9dm9pZCBjc19kc3BfbW9ja193bWZ3X2VuZF9hbGdfaW5mb19ibG9jayhzdHJ1Y3QgY3NfZHNwX21vY2tfd21md19idWlsZGVyICpidWlsZGVyKVxuLS1cbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTM4My1cdFx0c2hvcnRzdHJpbmcgPSAoY29uc3Qgc3RydWN0IHdtZndfc2hvcnRfc3RyaW5nICopXHUwMDI2cmduLVx1MDAzZWRhdGFbb2Zmc2V0XTtcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjM4NDpcdFx0b2Zmc2V0ICYjNDM7PSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgc2hvcnRzdHJpbmctXHUwMDNlbGVuKSxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTM4NS1cdFx0XHRcdCAgIHNpemVvZihfX2xlMzIpKTtcbi0tXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zODgtXHRcdGxvbmdzdHJpbmcgPSAoY29uc3Qgc3RydWN0IHdtZndfbG9uZ19zdHJpbmcgKilcdTAwMjZyZ24tXHUwMDNlZGF0YVtvZmZzZXRdO1xuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM6Mzg5Olx0XHRvZmZzZXQgJiM0Mzs9IHJvdW5kX3VwKHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfbG9uZ19zdHJpbmcsIGRhdGEsXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zOTAtXHRcdFx0XHQgICBsZTE2X3RvX2NwdShsb25nc3RyaW5nLVx1MDAzZWxlbikpLFxuLS1cbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtMTgtI2RlZmluZSBQQ0FDSEVfQ0FDSEVfU0VHU19NQVhcdFx0KDEwMjQgKiAxMDI0KVx0LyogbWF4aW11bSBjYWNoZSBzaXplIGZvciBlYWNoIGRldmljZSBpcyAxNlQgKi9cbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg6MTk6I2RlZmluZSBQQ0FDSEVfS1NFVF9PTk1FRElBX1NJWkVfTUFYXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwY2FjaGVfY2FjaGVfa3NldF9vbm1lZGlhLCBkYXRhLCBQQ0FDSEVfS1NFVF9LRVlTX01BWClcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtMjAtI2RlZmluZSBQQ0FDSEVfS1NFVF9TSVpFXHRcdChzaXplb2Yoc3RydWN0IHBjYWNoZV9jYWNoZV9rc2V0KSAmIzQzOyBzaXplb2Yoc3RydWN0IHBjYWNoZV9jYWNoZV9rZXlfb25tZWRpYSkgKiBQQ0FDSEVfS1NFVF9LRVlTX01BWClcbi0tXG5kcml2ZXJzL21kL2RtLXBjYWNoZS9jYWNoZS5oPTUwNj1zdGF0aWMgaW5saW5lIHUzMiBnZXRfa3NldF9vbm1lZGlhX3NpemUoc3RydWN0IHBjYWNoZV9jYWNoZV9rc2V0X29ubWVkaWEgKmtzZXRfb25tZWRpYSlcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtNTA3LXtcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg6NTA4Olx0cmV0dXJuIHN0cnVjdF9zaXplX3Qoc3RydWN0IHBjYWNoZV9jYWNoZV9rc2V0X29ubWVkaWEsIGRhdGEsIGtzZXRfb25tZWRpYS1cdTAwM2VrZXlfbnVtKTtcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtNTA5LX1cbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmM9MjQyMD1zdGF0aWMgaW50IGdyb3dfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbnVtKVxuLS1cbmRyaXZlcnMvbWQvcmFpZDUuYy0yNDM1LVx0c2MgPSBrbWVtX2NhY2hlX2NyZWF0ZShjb25mLVx1MDAzZWNhY2hlX25hbWVbY29uZi1cdTAwM2VhY3RpdmVfbmFtZV0sXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjQzNjpcdFx0XHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgZGV2cyksXG5kcml2ZXJzL21kL3JhaWQ1LmMtMjQzNy1cdFx0XHQgICAgICAgMCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9tZC9yYWlkNS5jPTI1MjM9c3RhdGljIGludCByZXNpemVfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbmV3c2l6ZSlcbi0tXG5kcml2ZXJzL21kL3JhaWQ1LmMtMjU1OS1cdHNjID0ga21lbV9jYWNoZV9jcmVhdGUoY29uZi1cdTAwM2VjYWNoZV9uYW1lWzEtY29uZi1cdTAwM2VhY3RpdmVfbmFtZV0sXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjU2MDpcdFx0XHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgbmV3c2l6ZSksXG5kcml2ZXJzL21kL3JhaWQ1LmMtMjU2MS1cdFx0XHQgICAgICAgMCwgMCwgTlVMTCk7XG4tLVxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2hmaV9jbWRzLmM9MjIzPWludCBwa3Rfc2Vzc2lvbl91bnNldF9idWZmZXJzKHN0cnVjdCBoZmlfc2Vzc2lvbl9yZWxlYXNlX2J1ZmZlcl9wa3QgKnBrdCxcbi0tXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vdmVudXMvaGZpX2NtZHMuYy0yNTMtXHRcdHBrdC1cdTAwM2VzaGRyLmhkci5zaXplID1cbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9oZmlfY21kcy5jOjI1NDpcdFx0XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfYnVmZmVyc19wa3QsXG5kcml2ZXJzL21lZGlhL3BsYXRmb3JtL3Fjb20vdmVudXMvaGZpX2NtZHMuYy0yNTUtXHRcdFx0XHQgICAgICBidWZmZXJfaW5mbywgYmQtXHUwMDNlbnVtX2J1ZmZlcnMpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9MjA2PXN0cnVjdCBpY2VfYnVmX2hkciB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0yMTMtXHQoKElDRV9QS0dfQlVGX1NJWkUgLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg6MjE0Olx0ICBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYnVmX2hkciwgIHNlY3Rpb25fZW50cnksIDEpIC0gKGhkX3N6KSkgLyBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0yMTUtXHQgKGVudF9zeikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaD0zMjg9c3RydWN0IGljZV9sYWJlbF9zZWN0aW9uIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oLTMzMy0jZGVmaW5lIElDRV9NQVhfTEFCRUxTX0lOX0JVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oOjMzNDpcdElDRV9NQVhfRU5UUklFU19JTl9CVUYoc3RydWN0X3NpemVfdChzdHJ1Y3QgaWNlX2xhYmVsX3NlY3Rpb24sICBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0zMzUtXHRcdFx0XHRcdCAgIGxhYmVsLCAxKSAtICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9MzgyPXN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oLTM4OC0jZGVmaW5lIElDRV9NQVhfQlNUX1RDQU1TX0lOX0JVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg6Mzg5Olx0SUNFX01BWF9FTlRSSUVTX0lOX0JVRihzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uLCAgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzkwLVx0XHRcdFx0XHQgICB0Y2FtLCAxKSAtICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9NDAyPXN0cnVjdCBpY2VfbWFya2VyX3B0eXBlX3RjYW1fc2VjdGlvbiB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC00MDgtI2RlZmluZSBJQ0VfTUFYX01BUktFUl9QVFlQRV9UQ0FNU19JTl9CVUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaDo0MDk6XHRJQ0VfTUFYX0VOVFJJRVNfSU5fQlVGKHN0cnVjdF9zaXplX3Qoc3RydWN0IGljZV9tYXJrZXJfcHR5cGVfdGNhbV9zZWN0aW9uLCAgdGNhbSwgXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtNDEwLVx0XHRcdCAgICAxKSAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9ODE4PXN0YXRpYyB2b2lkIG5ldHZzY19zZW5kX2NvbXBsZXRpb24oc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg2OS1cdFx0aWYgKG1zZ2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBudnNwX21lc3NhZ2VfaGVhZGVyKSAmIzQzO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjg3MDpcdFx0XHRcdHN0cnVjdF9zaXplX3Qoc3RydWN0IG52c3BfMV9tZXNzYWdlX3NlbmRfcmVjZWl2ZV9idWZmZXJfY29tcGxldGUsXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtODcxLVx0XHRcdFx0XHQgICAgICBzZWN0aW9ucywgMSkpIHtcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE2NTQ9aW50IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBuZHBvZmZzZXQpXG4tLVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNjc4LVxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNjc5Olx0bmRwX2xlbiA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHVzYl9jZGNfbmNtX25kcDE2LCBkcGUxNiwgcmV0KTtcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTY4MC1cdGlmIChuZHBvZmZzZXQgJiM0MzsgbmRwX2xlbiBcdTAwM2Ugc2tiX2luLVx1MDAzZWxlbikge1xuLS1cbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTY5MT1pbnQgY2RjX25jbV9yeF92ZXJpZnlfbmRwMzIoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IG5kcG9mZnNldClcbi0tXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MTUtXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3MTY6XHRuZHBfbGVuID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgdXNiX2NkY19uY21fbmRwMzIsIGRwZTMyLCByZXQpO1xuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNzE3LVx0aWYgKG5kcG9mZnNldCAmIzQzOyBuZHBfbGVuIFx1MDAzZSBza2JfaW4tXHUwMDNlbGVuKSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzM1Nz1zdGF0aWMgaW50IHJ0dzg5X2NvcmVfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTczNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcwOlx0aHctXHUwMDNldmlmX2RhdGFfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHJ0dzg5X3ZpZiwgbGlua3NfaW5zdCwgbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcxOlx0aHctXHUwMDNlc3RhX2RhdGFfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHJ0dzg5X3N0YSwgbGlua3NfaW5zdCwgbik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MzcyLVx0aHctXHUwMDNldHhxX2RhdGFfc2l6ZSA9IHNpemVvZihzdHJ1Y3QgcnR3ODlfdHhxKTtcbi0tXG5kcml2ZXJzL252bWUvaG9zdC9mYy5jPTI4NjA9bnZtZV9mY19jcmVhdGVfaW9fcXVldWVzKHN0cnVjdCBudm1lX2ZjX2N0cmwgKmN0cmwpXG4tLVxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODgyLVx0XHRcdFx1MDAyNm52bWVfZmNfbXFfb3BzLCAxLFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYzoyODgzOlx0XHRcdHN0cnVjdF9zaXplX3Qoc3RydWN0IG52bWVfZmNwX29wX3dfc2dsLCBwcml2LFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODg0LVx0XHRcdFx0ICAgICAgY3RybC1cdTAwM2VscG9ydC1cdTAwM2VvcHMtXHUwMDNlZmNwcnFzdF9wcml2X3N6KSk7XG4tLVxuZHJpdmVycy9udm1lL2hvc3QvZmMuYz0zNTQzPW52bWVfZmNfaW5pdF9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxuLS1cbmRyaXZlcnMvbnZtZS9ob3N0L2ZjLmMtMzU1OS1cdFx0XHRcdTAwMjZudm1lX2ZjX2FkbWluX21xX29wcyxcbmRyaXZlcnMvbnZtZS9ob3N0L2ZjLmM6MzU2MDpcdFx0XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBudm1lX2ZjcF9vcF93X3NnbCwgcHJpdixcbmRyaXZlcnMvbnZtZS9ob3N0L2ZjLmMtMzU2MS1cdFx0XHRcdCAgICAgIGN0cmwtXHUwMDNlbHBvcnQtXHUwMDNlb3BzLVx1MDAzZWZjcHJxc3RfcHJpdl9zeikpO1xuLS1cbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYz0xMzU0PXN0YXRpYyBpbnQgYnJhbmNoX3JlY29yZHNfYWxsb2Moc3RydWN0IGFybV9wbXUgKmFybXBtdSlcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU1LXtcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYzoxMzU2Olx0c2l6ZV90IHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwZXJmX2JyYW5jaF9zdGFjaywgZW50cmllcyxcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU3LVx0XHRcdFx0ICAgIGJyYmVfbnVtX2JyYW5jaF9yZWNvcmRzKGFybXBtdSkpO1xuLS1cbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmM9MjA9c3RhdGljIGludCB3bWlfYWRqdXN0X2J1ZmZlcl9sZW5ndGgoc2l6ZV90ICpsZW5ndGgsIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopXG4tLVxuZHJpdmVycy9wbGF0Zm9ybS93bWkvbWFyc2hhbGxpbmcuYy00Mi1cdFx0YWxpZ25tZW50ID0gMjtcbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmM6NDM6XHRcdHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWlfc3RyaW5nLCBjaGFycywgb2JqLVx1MDAzZXN0cmluZy5sZW5ndGggJiM0MzsgMSk7XG5kcml2ZXJzL3BsYXRmb3JtL3dtaS9tYXJzaGFsbGluZy5jLTQ0LVx0XHRicmVhaztcbi0tXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM9MTI3Mj1zdGF0aWMgaW50IGhwdGlvcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXG4tLVxuZHJpdmVycy9zY3NpL2hwdGlvcC5jLTEzOTYtXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM6MTM5NzpcdHJlcV9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgaHB0X2lvcF9yZXF1ZXN0X3Njc2lfY29tbWFuZCxcbmRyaXZlcnMvc2NzaS9ocHRpb3AuYy0xMzk4LVx0XHRcdFx0IHNnX2xpc3QsIGhiYS1cdTAwM2VtYXhfc2dfZGVzY3JpcHRvcnMpO1xuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jPTUxMTg9c3RhdGljIHZvaWQgbWVnYXNhc191cGRhdGVfZXh0X3ZkX2RldGFpbHMoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTUxNTctXHRcdGZ1c2lvbi1cdTAwM2VvbGRfbWFwX3N6ID1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjUxNTg6XHRcdFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfRldfUkFJRF9NQVAsIGxkU3Bhbk1hcCxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTUxNTktXHRcdFx0XHQgICAgICBpbnN0YW5jZS1cdTAwM2Vmd19zdXBwb3J0ZWRfdmRfY291bnQpO1xuLS1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jPTU3ODg9bWVnYXNhc19zZXR1cF9qYm9kX21hcChzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5zdGFuY2UpXG4tLVxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTc5My1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjU3OTQ6XHRwZF9zZXFfbWFwX3N6ID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQywgc2VxLFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTc5NS1cdFx0XHRcdCAgICAgIE1BWF9QSFlTSUNBTF9ERVZJQ0VTKTtcbi0tXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYz03OTY3PXN0YXRpYyB2b2lkIG1lZ2FzYXNfZGV0YWNoX29uZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy04MDQ1LVx0XHRwZF9zZXFfbWFwX3N6ID1cbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjgwNDY6XHRcdFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQyxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTgwNDctXHRcdFx0XHQgICAgICBzZXEsIE1BWF9QSFlTSUNBTF9ERVZJQ0VTKTtcbi0tXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2ZwLmM9MzAyPXU4IE1SX1ZhbGlkYXRlTWFwSW5mbyhzdHJ1Y3QgbWVnYXNhc19pbnN0YW5jZSAqaW5zdGFuY2UsIHU2NCBtYXBfaWQpXG4tLVxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jLTMyOC1cdGVsc2VcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnAuYzozMjk6XHRcdGV4cGVjdGVkX3NpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBNUl9GV19SQUlEX01BUCxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfZnAuYy0zMzAtXHRcdFx0XHRcdCAgICAgIGxkU3Bhbk1hcCxcbi0tXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jPTUwNDk9c3RhdGljIGludCBwcWlfY3JlYXRlX3F1ZXVlcyhzdHJ1Y3QgcHFpX2N0cmxfaW5mbyAqY3RybF9pbmZvKVxuLS1cbmRyaXZlcnMvc2NzaS9zbWFydHBxaS9zbWFydHBxaV9pbml0LmMtNTA3NC0jZGVmaW5lIFBRSV9SRVBPUlRfRVZFTlRfQ09ORklHX0JVRkZFUl9MRU5HVEhcdFxcXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jOjUwNzU6XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwcWlfZXZlbnRfY29uZmlnLCAgZGVzY3JpcHRvcnMsIFBRSV9NQVhfRVZFTlRfREVTQ1JJUFRPUlMpXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jLTUwNzYtXG4tLVxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oPTE1Nj1zdHJ1Y3QgcWNvbXRlZV9tc2dfY2FsbGJhY2sge1xuLS1cbmRyaXZlcnMvdGVlL3Fjb210ZWUvcWNvbXRlZV9tc2cuaC0xNjUtI2RlZmluZSBxY29tdGVlX21zZ19idWZmZXJfYXJncyh0LCBuKSBcXFxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oOjE2NjpcdHFjb210ZWVfbXNnX29mZnNldF9hbGlnbihzdHJ1Y3Rfc2l6ZV90KHQsIGFyZ3MsIG4pKVxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oLTE2Ny0vKiBQb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYSBidWZmZXIgYXJndW1lbnQmIzM5O3MgY29udGVudCBhdCBhbiBvZmZzZXQuICovXG4tLVxuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaD0zMTY9eGZzX2J0cmVlX2N1cl9zaXplb2YodW5zaWduZWQgaW50IG5sZXZlbHMpXG5mcy94ZnMvbGlieGZzL3hmc19idHJlZS5oLTMxNy17XG5mcy94ZnMvbGlieGZzL3hmc19idHJlZS5oOjMxODpcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB4ZnNfYnRyZWVfY3VyLCBiY19sZXZlbHMsIG5sZXZlbHMpO1xuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaC0zMTktfVxuLS1cbmZzL3hmcy9zY3J1Yi9idHJlZS5oPTYxPXhjaGtfYnRyZWVfc2l6ZW9mKHVuc2lnbmVkIGludCBubGV2ZWxzKVxuZnMveGZzL3NjcnViL2J0cmVlLmgtNjIte1xuZnMveGZzL3NjcnViL2J0cmVlLmg6NjM6XHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgeGNoa19idHJlZSwgbGFzdGtleSwgbmxldmVscyAtIDEpO1xuZnMveGZzL3NjcnViL2J0cmVlLmgtNjQtfVxuLS1cbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaD0zNzA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzaXplX3QgX19tdXN0X2NoZWNrIHNpemVfc3ViKHNpemVfdCBtaW51ZW5kLCBzaXplX3Qgc3VidHJhaGVuZClcbi0tXG5pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgtNDM5LS8qKlxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ0MDogKiBzdHJ1Y3Rfc2l6ZV90KCkgLSBDYWxjdWxhdGUgc2l6ZSBvZiBzdHJ1Y3R1cmUgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheVxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oLTQ0MS0gKiBAdHlwZTogc3RydWN0dXJlIHR5cGUgbmFtZS5cbi0tXG5pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgtNDUxLSAqL1xuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ1MjojZGVmaW5lIHN0cnVjdF9zaXplX3QodHlwZSwgbWVtYmVyLCBjb3VudClcdFx0XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00NTMtXHRzdHJ1Y3Rfc2l6ZSgodHlwZSAqKU5VTEwsIG1lbWJlciwgY291bnQpXG4tLVxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oLTQ4MC1cdHVuaW9uIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ4MTpcdFx0dTggYnl0ZXNbc3RydWN0X3NpemVfdCh0eXBlLCBtZW1iZXIsIGNvdW50KV07XHRcdFx0XFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00ODItXHRcdHR5cGUgb2JqO1x0XHRcdFx0XHRcdFx0XFxcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaD0xMDcwPXZvaWQgKmttYWxsb2Nfbm9sb2NrKHNpemVfdCBzaXplLCBnZnBfdCBnZnBfZmxhZ3MsIGludCBub2RlKTtcbi0tXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTA1LVx0Y29uc3Qgc2l6ZV90IF9fY291bnQgPSAoQ09VTlQpO1x0XHRcdFx0XHRcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEwNjpcdGNvbnN0IHNpemVfdCBfX29ial9zaXplID0gc3RydWN0X3NpemVfdChUWVBFLCBGQU0sIF9fY291bnQpO1x0XFxcbmluY2x1ZGUvbGludXgvc2xhYi5oLTExMDctXHRUWVBFICpfX29ial9wdHIgPSBLTUFMTE9DKF9fb2JqX3NpemUsIEdGUCk7XHRcdFx0XFxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg9NjE9c3RhdGljX2Fzc2VydChJU19BTElHTkVEKHNpemVvZihzdHJ1Y3QgeGRwX2J1ZmZfeHNrKSxcbi0tXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTYtXHRzdGF0aWNfYXNzZXJ0KG9mZnNldG9mZW5kKHN0cnVjdCB4ZHBfYnVmZl94c2ssIGNiKSBcdTAwM2U9XHRcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmg6OTc6XHRcdCAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgcHJpdixcdCAgICAgIFxcXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTgtXHRcdFx0XHQgICAgTElCRVRIX1hEUF9QUklWX1NaKHN6KSkpXG4tLVxuaW9fdXJpbmcvcnNyYy5jPTI0Mj1ib29sIGlvX3JzcmNfY2FjaGVfaW5pdChzdHJ1Y3QgaW9fcmluZ19jdHggKmN0eClcbmlvX3VyaW5nL3JzcmMuYy0yNDMte1xuaW9fdXJpbmcvcnNyYy5jOjI0NDpcdGNvbnN0IGludCBpbXVfY2FjaGVfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IGlvX21hcHBlZF91YnVmLCBidmVjLFxuaW9fdXJpbmcvcnNyYy5jLTI0NS1cdFx0XHRcdFx0XHQgSU9fQ0FDSEVEX0JWRUNTX1NFR1MpO1xuLS1cbmtlcm5lbC9waWQuYz04NDg9dm9pZCBfX2luaXQgcGlkX2lkcl9pbml0KHZvaWQpXG4tLVxua2VybmVsL3BpZC5jLTg2Mi1cdGluaXRfcGlkX25zLnBpZF9jYWNoZXAgPSBrbWVtX2NhY2hlX2NyZWF0ZShcJiMzNDtwaWRcJiMzNDssXG5rZXJuZWwvcGlkLmM6ODYzOlx0XHRcdHN0cnVjdF9zaXplX3Qoc3RydWN0IHBpZCwgbnVtYmVycywgMSksXG5rZXJuZWwvcGlkLmMtODY0LVx0XHRcdF9fYWxpZ25vZl9fKHN0cnVjdCBwaWQpLFxuLS1cbmtlcm5lbC9waWRfbmFtZXNwYWNlLmM9NDA9c3RhdGljIHN0cnVjdCBrbWVtX2NhY2hlICpjcmVhdGVfcGlkX2NhY2hlcCh1bnNpZ25lZCBpbnQgbGV2ZWwpXG4tLVxua2VybmVsL3BpZF9uYW1lc3BhY2UuYy01Mi1cdHNucHJpbnRmKG5hbWUsIHNpemVvZihuYW1lKSwgXCYjMzQ7cGlkXyV1XCYjMzQ7LCBsZXZlbCAmIzQzOyAxKTtcbmtlcm5lbC9waWRfbmFtZXNwYWNlLmM6NTM6XHRsZW4gPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwaWQsIG51bWJlcnMsIGxldmVsICYjNDM7IDEpO1xua2VybmVsL3BpZF9uYW1lc3BhY2UuYy01NC1cdG11dGV4X2xvY2soXHUwMDI2cGlkX2NhY2hlc19tdXRleCk7XG4tLVxua2VybmVsL3NjaGVkL2V4dC9leHQuYz00OTA0PXN0YXRpYyBzMzIgc2N4X3NldF9jbWFza19zY3JhdGNoX2FsbG9jKHN0cnVjdCBzY3hfc2NoZWQgKnNjaClcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNS17XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MDY6XHRzaXplX3Qgc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjeF9jbWFzaywgYml0cyxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNy1cdFx0XHRcdCAgICBTQ1hfQ01BU0tfTlJfV09SRFMobnVtX3Bvc3NpYmxlX2NwdXMoKSkpO1xuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDkyOD1zdGF0aWMgdm9pZCBzY3hfc2V0X2NtYXNrX3NjcmF0Y2hfZnJlZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5Mjkte1xua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTMwOlx0c2l6ZV90IHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBzY3hfY21hc2ssIGJpdHMsXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jLTQ5MzEtXHRcdFx0XHQgICAgU0NYX0NNQVNLX05SX1dPUkRTKG51bV9wb3NzaWJsZV9jcHVzKCkpKTtcbi0tXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTY3ODQ9c3RhdGljIHN0cnVjdCBzY3hfc2NoZWQgKnNjeF9hbGxvY19hbmRfYWRkX3NjaGVkKHN0cnVjdCBzY3hfZW5hYmxlX2NtZCAqY21kLFxuLS1cbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjgyMy1cdHNjaC1cdTAwM2Vkc3BfbWF4X2JhdGNoID0gb3BzLVx1MDAzZWRpc3BhdGNoX21heF9iYXRjaCA/OiBTQ1hfRFNQX0RGTF9NQVhfQkFUQ0g7XG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjY4MjQ6XHRzY2gtXHUwMDNlcGNwdSA9IF9fYWxsb2NfcGVyY3B1KHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjeF9zY2hlZF9wY3B1LFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy02ODI1LVx0XHRcdFx0XHRcdCBkc3BfY3R4LmJ1Ziwgc2NoLVx1MDAzZWRzcF9tYXhfYmF0Y2gpLFxuLS1cbmxpYi90ZXN0cy9vdmVyZmxvd19rdW5pdC5jPTcwNj1zdGF0aWMgdm9pZCBvdmVyZmxvd19zaXplX2hlbHBlcnNfdGVzdChzdHJ1Y3Qga3VuaXQgKnRlc3QpXG4tLVxubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmMtNzA4LVx0LyogTWFrZSBzdXJlIHN0cnVjdF9zaXplKCkgY2FuIGJlIHVzZWQgaW4gYSBjb25zdGFudCBleHByZXNzaW9uLiAqL1xubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmM6NzA5Olx0dTggY2VfYXJyYXlbc3RydWN0X3NpemVfdChzdHJ1Y3QgX190ZXN0X2ZsZXhfYXJyYXksIGRhdGEsIDU1KV07XG5saWIvdGVzdHMvb3ZlcmZsb3dfa3VuaXQuYy03MTAtXHRzdHJ1Y3QgX190ZXN0X2ZsZXhfYXJyYXkgKm9iajtcbi0tXG5tbS9tZW1jb250cm9sLmM9NTYxMz1pbnQgX19pbml0IG1lbV9jZ3JvdXBfaW5pdCh2b2lkKVxuLS1cbm1tL21lbWNvbnRyb2wuYy01NjM4LVxubW0vbWVtY29udHJvbC5jOjU2Mzk6XHRtZW1jZ19zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX2Nncm91cCwgbm9kZWluZm8sIG5yX25vZGVfaWRzKTtcbm1tL21lbWNvbnRyb2wuYy01NjQwLVx0bWVtY2dfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGUoXCYjMzQ7bWVtX2Nncm91cFwmIzM0OywgbWVtY2dfc2l6ZSwgMCxcbi0tXG5tbS9zbHViLmM9Nzc1OT1zdGF0aWMgdW5zaWduZWQgaW50IGNhbGN1bGF0ZV9zaGVhZl9jYXBhY2l0eShzdHJ1Y3Qga21lbV9jYWNoZSAqcyxcbi0tXG5tbS9zbHViLmMtNzc5My1cdC8qIEluY3JlbWVudCBjYXBhY2l0eSB0byBtYWtlIHNoZWFmIGV4YWN0bHkgYSBrbWFsbG9jIHNpemUgYnVja2V0ICovXG5tbS9zbHViLmM6Nzc5NDpcdHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBzbGFiX3NoZWFmLCBvYmplY3RzLCBjYXBhY2l0eSk7XG5tbS9zbHViLmMtNzc5NS1cdHNpemUgPSBrbWFsbG9jX3NpemVfcm91bmR1cChzaXplKTtcbm1tL3NsdWIuYzo3Nzk2Olx0Y2FwYWNpdHkgPSAoc2l6ZSAtIHN0cnVjdF9zaXplX3Qoc3RydWN0IHNsYWJfc2hlYWYsIG9iamVjdHMsIDApKSAvIHNpemVvZih2b2lkICopO1xubW0vc2x1Yi5jLTc3OTctXG4tLVxubW0vc3BhcnNlLmg9NTE9c3RhdGljIGlubGluZSBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKVxubW0vc3BhcnNlLmgtNTIte1xubW0vc3BhcnNlLmg6NTM6XHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UsIHBhZ2VibG9ja19mbGFncyxcbm1tL3NwYXJzZS5oLTU0LVx0XHRcdCAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpO1xuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5jPTg3OT1ldGh0b29sX3J4ZmhfY3R4X2FsbG9jKGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyAqb3BzLFxuLS1cbm5ldC9ldGh0b29sL2NvbW1vbi5jLTg5NC1cdGZsZXhfbGVuID0gc2l6ZV9hZGQoa2V5X29mZiwga2V5X21heCk7XG5uZXQvZXRodG9vbC9jb21tb24uYzo4OTU6XHRzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgZXRodG9vbF9yeGZoX2NvbnRleHQsIGRhdGEsIGZsZXhfbGVuKTtcbm5ldC9ldGh0b29sL2NvbW1vbi5jLTg5Ni1cbi0tXG5uZXQvaHNyL2hzcl9mcmFtZXJlZy5oPTEyMD1zdGF0aWMgaW5saW5lIHNpemVfdCBoc3Jfc2VxX2Jsb2NrX3NpemUoc3RydWN0IGhzcl9ub2RlICpub2RlKVxuLS1cbm5ldC9oc3IvaHNyX2ZyYW1lcmVnLmgtMTIyLVx0V0FSTl9PTl9PTkNFKG5vZGUtXHUwMDNlc2VxX3BvcnRfY250ID09IDApO1xubmV0L2hzci9oc3JfZnJhbWVyZWcuaDoxMjM6XHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgaHNyX3NlcV9ibG9jaywgc2VxX25ycywgbm9kZS1cdTAwM2VzZXFfcG9ydF9jbnQpO1xubmV0L2hzci9oc3JfZnJhbWVyZWcuaC0xMjQtfVxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jPTc5MTI9c3RhdGljIGludCBuZnRfc2V0ZWxlbV9mbHVzaChjb25zdCBzdHJ1Y3QgbmZ0X2N0eCAqY3R4LFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc5MjMtXHR0cmFucyA9IG5mdF90cmFuc19hbGxvYyhjdHgsIE5GVF9NU0dfREVMU0VURUxFTSxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5MjQ6XHRcdFx0XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBuZnRfdHJhbnNfZWxlbSwgZWxlbXMsIDEpKTtcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jLTc5MjUtXHRpZiAoIXRyYW5zKVxuLS1cbm5ldC9yeHJwYy9rZXkuYz0xNjU9c3RhdGljIGludCByeHJwY19wcmVwYXJzZV94ZHJfeWZzX3J4Z2soc3RydWN0IGtleV9wcmVwYXJzZWRfcGF5bG9hZCAqcHJlcCxcbi0tXG5uZXQvcnhycGMva2V5LmMtMjEyLVxubmV0L3J4cnBjL2tleS5jOjIxMzpcdHRva2VuLVx1MDAzZXJ4Z2sgPSBremFsbG9jKHN0cnVjdF9zaXplX3Qoc3RydWN0IHJ4Z2tfa2V5LCBfa2V5LCByYXdfa2V5bGVuKSwgR0ZQX0tFUk5FTCk7XG5uZXQvcnhycGMva2V5LmMtMjE0LVx0aWYgKCF0b2tlbi1cdTAwM2VyeGdrKVxuLS1cbm5ldC9zY3RwL3NvY2tldC5jPTQxMDU9c3RhdGljIGludCBzY3RwX3NldHNvY2tvcHRfcmVzZXRfc3RyZWFtcyhzdHJ1Y3Qgc29jayAqc2ssXG4tLVxubmV0L3NjdHAvc29ja2V0LmMtNDExNC1cdG9wdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgb3B0bGVuLFxubmV0L3NjdHAvc29ja2V0LmM6NDExNTpcdFx0ICAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgc3JzX3N0cmVhbV9saXN0LFxubmV0L3NjdHAvc29ja2V0LmMtNDExNi1cdFx0XHRcdCAgICAgVVNIUlRfTUFYKSk7XG4tLVxubmV0L3NjdHAvc29ja2V0LmM9NDU3OT1zdGF0aWMgaW50IHNjdHBfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L3NjdHAvc29ja2V0LmMtNDYwMS1cdFx0b3B0bGVuID0gbWluX3QodW5zaWduZWQgaW50LCBvcHRsZW4sXG5uZXQvc2N0cC9zb2NrZXQuYzo0NjAyOlx0XHRcdCAgICAgICBQQUdFX0FMSUdOKHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcyxcbm5ldC9zY3RwL3NvY2tldC5jLTQ2MDMtXHRcdFx0XHRcdFx0XHRzcnNfc3RyZWFtX2xpc3QsIFVTSFJUX01BWCkpKTtcbi0tXG5zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2ttYWxsb2Nfb2Jqcy5jb2NjaT01OD1mcmVzaCBpZGVudGlmaWVyIEFMTE9DX09CSlMgPSBzY3JpcHQ6cHl0aG9uKEFMTE9DX0FSUkFZKSB7IGFsbG9jX2FycmF5KEFMTE9DX0FSUkFZKSB9O1xuLS1cbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMS18XG5zY3JpcHRzL2NvY2NpbmVsbGUvYXBpL2ttYWxsb2Nfb2Jqcy5jb2NjaToxMjI6LVx0QUxMT0Moc3RydWN0X3NpemVfdChUWVBFLCBGTEVYLCBDT1VOVCksIEdGUClcbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMy0mIzQzO1x0QUxMT0NfRkxFWChUWVBFLCBGTEVYLCBDT1VOVCwgR0ZQKVxuLS1cbnNlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5oPTM4PXN0cnVjdCBsYW5kbG9ja19kZXRhaWxzIHtcbi0tXG5zZWN1cml0eS9sYW5kbG9jay9kb21haW4uaC02NS0vKiBNYWtlcyBzdXJlIHRoZSBncmVhdGVzdCBsYW5kbG9ja19kZXRhaWxzIGNhbiBiZSBhbGxvY2F0ZWQuICovXG5zZWN1cml0eS9sYW5kbG9jay9kb21haW4uaDo2NjpzdGF0aWNfYXNzZXJ0KHN0cnVjdF9zaXplX3Qoc3RydWN0IGxhbmRsb2NrX2RldGFpbHMsIGV4ZV9wYXRoLFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmgtNjctXHRcdFx0ICAgIExBTkRMT0NLX1BBVEhfTUFYX1NJWkUpIFx1MDAzYz0gS01BTExPQ19NQVhfU0laRSk7XG4tLVxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYz0yMjE9c3RhdGljIGVmaV9zdGF0dXNfdCBjc19hbXBfbGliX3Rlc3RfZ2V0X2VmaV92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsXG4tLVxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYy0yNjEtI2RlZmluZSBDU19BTVBfTElCX1pFUk9fRklMTEVEX0JMT0JfU0laRSBcXFxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYzoyNjI6XHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBjaXJydXNfYW1wX2VmaV9kYXRhLCBkYXRhLCA4KVxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYy0yNjMtXG4tLVxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaD0xMDM3PXN0YXRpYyBpbmxpbmUgdTY0IHNjeF9jbG9ja19pcnEodTMyIGNwdSlcbi0tXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oLTEwNjEtXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oOjEwNjI6I2RlZmluZSBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpXHRcXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaC0xMDYzLVx0c3RydWN0X3NpemUoKHR5cGUgKilOVUxMLCBtZW1iZXIsIGNvdW50KVxuLS1cbnRvb2xzL3NjaGVkX2V4dC9zY3hfcW1hcC5icGYuYz0xNTE9c3RydWN0IHRhc2tfY3R4IHtcbi0tXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmMtMTY5LSNkZWZpbmUgVEFTS19DVFhfU1RSSURFXHRcdFx0XHRcdFx0XHRcXFxudG9vbHMvc2NoZWRfZXh0L3NjeF9xbWFwLmJwZi5jOjE3MDpcdHN0cnVjdF9zaXplX3Qoc3RydWN0IHRhc2tfY3R4LCBjcHVzX2FsbG93ZWQuYml0cyxcdFx0XFxcbnRvb2xzL3NjaGVkX2V4dC9zY3hfcW1hcC5icGYuYy0xNzEtXHRcdCAgICAgIENNQVNLX05SX1dPUkRTKFNDWF9RTUFQX01BWF9DUFVTKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAwMzoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjY2MwoJCQkJCQkJb3V0cHV0OiA4OQoJCQkJCQkJdGhvdWdodHM6IDQ3NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBsb29raW5nIGxpa2UgYSByZWZhY3RvcmluZy4gSSBzZWUgdGhhdCBgc3RydWN0X3NpemVfdGAsIGRlZmluZWQgaW4gYGluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaGAsIGlzIGJlaW5nIHVzZWQgdG8gcmVwbGFjZSB0aGUgZGlyZWN0IGNhbGN1bGF0aW9uIG9mIHRoZSBzaXplLiBQcmV2aW91c2x5LCBpdCB3YXMgYHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKClgLCBhbmQgbm93IGl0JiMzOTtzIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLCBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSlgLgoKVGhpcyBpcyBwdXJlbHkgYWJvdXQgY29kZSBjbGVhbmxpbmVzcy4gSXQmIzM5O3Mgbm90IGFsdGVyaW5nIGFueSBjb3JlIGZ1bmN0aW9uYWxpdHkuIExvb2tpbmcgYXQgYG1tL3NwYXJzZS5jYCBiZWZvcmUgYW5kIGFmdGVyLCB0aGUgbG9naWMgcmVtYWlucyBpZGVudGljYWwuIFRoZSBvbGQgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZ1bmN0aW9uIGNhbGN1bGF0ZWQgdGhlIHNpemUgZGlyZWN0bHk6CgpgYGBjCnN0YXRpYyB1bnNpZ25lZCBsb25nIHVzZW1hcF9zaXplKHZvaWQpCnsKCXJldHVybiBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTsKfQoKc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCkKewoJcmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICYjNDM7IHVzZW1hcF9zaXplKCk7Cn0KYGBgCgpBbmQgcG9zdC1wYXRjaDoKCmBgYGMKc3RhdGljIGlubGluZSBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKQp7CglyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UsIHBhZ2VibG9ja19mbGFncywKCQkJICAgICBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSk7Cn0KYGBgCgpOb3csIGBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpYCBleHBhbmRzIHRvIGBzaXplb2YodHlwZSkgJiM0MzsgY291bnQgKiBzaXplb2YodHlwZS0mZ3Q7bWVtYmVyKWAuIEhlcmUsIGB0eXBlYCBpcyBgc3RydWN0IG1lbV9zZWN0aW9uX3VzYWdlYCwgYG1lbWJlcmAgaXMgYHBhZ2VibG9ja19mbGFnc2AsIHdoaWNoIGlzIGFuIGFycmF5IG9mIGB1bnNpZ25lZCBsb25nYCwgYW5kIGBjb3VudGAgaXMgYEJJVFNfVE9fTE9OR1MoU0VDVElPTl9CTE9DS0ZMQUdTX0JJVFMpYC4gIFNvLCBgY291bnQgKiBzaXplb2YodW5zaWduZWQgbG9uZylgIGlzLCBpbiBmYWN0LCB0aGUgc2FtZSBhcyB0aGUgb2xkIGB1c2VtYXBfc2l6ZSgpYC4gIEFuZCB0aGUgYmFzZSBgc2l6ZW9mKHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSlgIHJlbWFpbnMgdGhlIGJhc2UuIEl0JiMzOTtzIHRoZSBzYW1lIG1hdGgsIGp1c3QgZXhwcmVzc2VkIGRpZmZlcmVudGx5LiBUaGVyZSYjMzk7cyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGNvZGUgcGF0aHMsIG5vIGFsdGVyZWQgYmVoYXZpb3IsIGl0JiMzOTtzIGp1c3QgYWJvdXQgdGhlIHByZXNlbnRhdGlvbi4KCkdpdmVuIGFsbCBvZiB0aGlzLCB0aGVyZSYjMzk7cyBubyBhZGRlZCB2YWx1ZSBpbiBmdXp6aW5nIHRoaXMgY2hhbmdlLiBJJiMzOTtsbCBmbGFnIGBXb3J0aEZ1enppbmdgIGFzIGBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMDM6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB0aGF0IG1vdmVzIHRoZSBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgZnVuY3Rpb24gdG8gYSBoZWFkZXIgZmlsZSBhbmQgc2ltcGxpZmllcyBpdHMgc2l6ZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgYHN0cnVjdF9zaXplX3RgIG1hY3JvLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBuZXcgcmVhY2hhYmxlIGNvZGUgcGF0aHMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogbnVsbCwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB0aGF0IG1vdmVzIHRoZSBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgZnVuY3Rpb24gdG8gYSBoZWFkZXIgZmlsZSBhbmQgc2ltcGxpZmllcyBpdHMgc2l6ZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgYHN0cnVjdF9zaXplX3RgIG1hY3JvLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBuZXcgcmVhY2hhYmxlIGNvZGUgcGF0aHMgdGhhdCByZXF1aXJlIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDM6MTc6NDcuNDMzMzcyMDA2WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE5MTcwMjkxMjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAzOjE3OjQ3LjQzMzM3Nzg0NloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2MDcxOTkyMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDQ3OTI1ZGNiNDg3YTQ2MGMyNWJmZjhjYmU1NDQzOTVlMWI0MjFmOTBcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAwMzoxNzo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L21tem9uZS5oIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbmluZGV4IGEyNmM4Yjg1NTIyMjIuLjg2ODkxMTYzZTBlZjQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvbW16b25lLmhcXG5AQCAtMjA3MCw3ICsyMDcwLDYgQEAgc3RhdGljIGlubGluZSBzdHJ1Y3QgbWVtX3NlY3Rpb24gKl9fbnJfdG9fc2VjdGlvbih1bnNpZ25lZCBsb25nIG5yKVxcbiAjZW5kaWZcXG4gXFx0cmV0dXJuIFxcdTAwMjZtZW1fc2VjdGlvbltyb290XVtuciBcXHUwMDI2IFNFQ1RJT05fUk9PVF9NQVNLXTtcXG4gfVxcbi1leHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCk7XFxuIFxcbiAvKlxcbiAgKiBXZSB1c2UgdGhlIGxvd2VyIGJpdHMgb2YgdGhlIG1lbV9tYXAgcG9pbnRlciB0byBzdG9yZSBhIGxpdHRsZSBiaXQgb2ZcXG5kaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLmMgYi9tbS9zcGFyc2UuY1xcbmluZGV4IDcwNGE5ZGVjMmI5YWYuLjQ2NDU4ZTUzMDBlMjYgMTAwNjQ0XFxuLS0tIGEvbW0vc3BhcnNlLmNcXG4rKysgYi9tbS9zcGFyc2UuY1xcbkBAIC0yMTMsMTYgKzIxMyw2IEBAIHN0YXRpYyB2b2lkIF9faW5pdCBtZW1ibG9ja3NfcHJlc2VudCh2b2lkKVxcbiBcXHRcXHRtZW1vcnlfcHJlc2VudChuaWQsIHN0YXJ0LCBlbmQpO1xcbiB9XFxuIFxcbi1zdGF0aWMgdW5zaWduZWQgbG9uZyB1c2VtYXBfc2l6ZSh2b2lkKVxcbi17XFxuLVxcdHJldHVybiBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSAqIHNpemVvZih1bnNpZ25lZCBsb25nKTtcXG4tfVxcbi1cXG4tc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcXG4te1xcbi1cXHRyZXR1cm4gc2l6ZW9mKHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSkgKyB1c2VtYXBfc2l6ZSgpO1xcbi19XFxuLVxcbiAjaWZkZWYgQ09ORklHX1NQQVJTRU1FTV9WTUVNTUFQXFxuIHVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcXG4ge1xcbmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuaCBiL21tL3NwYXJzZS5oXFxuaW5kZXggOTVhYTAzMTIxM2YyMi4uM2I3NDQ2NjdhN2U2MiAxMDA2NDRcXG4tLS0gYS9tbS9zcGFyc2UuaFxcbisrKyBiL21tL3NwYXJzZS5oXFxuQEAgLTQ3LDYgKzQ3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3NlY3Rpb25fbWFya19wcmVzZW50KHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsXFxuIFxcbiBcXHRtcy1cXHUwMDNlc2VjdGlvbl9tZW1fbWFwIHw9IFNFQ1RJT05fTUFSS0VEX1BSRVNFTlQ7XFxuIH1cXG4rXFxuK3N0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcXG4re1xcbitcXHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UsIHBhZ2VibG9ja19mbGFncyxcXG4rXFx0XFx0XFx0ICAgICBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSk7XFxuK31cXG4gI2Vsc2VcXG4gc3RhdGljIGlubGluZSB2b2lkIHNwYXJzZV9pbml0KHZvaWQpIHt9XFxuICNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAzOjE3OjQ4Ljg5NDkyMTI2NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwNDU1NDc0MTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpcyBhIHB1cmVseSBjb3NtZXRpYyByZWZhY3RvcmluZyB0aGF0IG1vdmVzIHRoZSBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgZnVuY3Rpb24gdG8gYSBoZWFkZXIgZmlsZSBhbmQgc2ltcGxpZmllcyBpdHMgc2l6ZSBjYWxjdWxhdGlvbiB1c2luZyB0aGUgYHN0cnVjdF9zaXplX3RgIG1hY3JvLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyBvciBuZXcgcmVhY2hhYmxlIGNvZGUgcGF0aHMgdGhhdCByZXF1aXJlIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA0NzkyNWRjYjQ4N2E0NjBjMjViZmY4Y2JlNTQ0Mzk1ZTFiNDIxZjkwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAwMzoxNzo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvbW16b25lLmggYi9pbmNsdWRlL2xpbnV4L21tem9uZS5oXG5pbmRleCBhMjZjOGI4NTUyMjIyLi44Njg5MTE2M2UwZWY0IDEwMDY0NFxuLS0tIGEvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuKysrIGIvaW5jbHVkZS9saW51eC9tbXpvbmUuaFxuQEAgLTIwNzAsNyArMjA3MCw2IEBAIHN0YXRpYyBpbmxpbmUgc3RydWN0IG1lbV9zZWN0aW9uICpfX25yX3RvX3NlY3Rpb24odW5zaWduZWQgbG9uZyBucilcbiAjZW5kaWZcbiBcdHJldHVybiBcdTAwMjZtZW1fc2VjdGlvbltyb290XVtuciBcdTAwMjYgU0VDVElPTl9ST09UX01BU0tdO1xuIH1cbi1leHRlcm4gc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZCk7XG4gXG4gLypcbiAgKiBXZSB1c2UgdGhlIGxvd2VyIGJpdHMgb2YgdGhlIG1lbV9tYXAgcG9pbnRlciB0byBzdG9yZSBhIGxpdHRsZSBiaXQgb2ZcbmRpZmYgLS1naXQgYS9tbS9zcGFyc2UuYyBiL21tL3NwYXJzZS5jXG5pbmRleCA3MDRhOWRlYzJiOWFmLi40NjQ1OGU1MzAwZTI2IDEwMDY0NFxuLS0tIGEvbW0vc3BhcnNlLmNcbisrKyBiL21tL3NwYXJzZS5jXG5AQCAtMjEzLDE2ICsyMTMsNiBAQCBzdGF0aWMgdm9pZCBfX2luaXQgbWVtYmxvY2tzX3ByZXNlbnQodm9pZClcbiBcdFx0bWVtb3J5X3ByZXNlbnQobmlkLCBzdGFydCwgZW5kKTtcbiB9XG4gXG4tc3RhdGljIHVuc2lnbmVkIGxvbmcgdXNlbWFwX3NpemUodm9pZClcbi17XG4tXHRyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7XG4tfVxuLVxuLXNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXG4te1xuLVx0cmV0dXJuIHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpICsgdXNlbWFwX3NpemUoKTtcbi19XG4tXG4gI2lmZGVmIENPTkZJR19TUEFSU0VNRU1fVk1FTU1BUFxuIHVuc2lnbmVkIGxvbmcgX19pbml0IHNlY3Rpb25fbWFwX3NpemUodm9pZClcbiB7XG5kaWZmIC0tZ2l0IGEvbW0vc3BhcnNlLmggYi9tbS9zcGFyc2UuaFxuaW5kZXggOTVhYTAzMTIxM2YyMi4uM2I3NDQ2NjdhN2U2MiAxMDA2NDRcbi0tLSBhL21tL3NwYXJzZS5oXG4rKysgYi9tbS9zcGFyc2UuaFxuQEAgLTQ3LDYgKzQ3LDEyIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBfX3NlY3Rpb25fbWFya19wcmVzZW50KHN0cnVjdCBtZW1fc2VjdGlvbiAqbXMsXG4gXG4gXHRtcy1cdTAwM2VzZWN0aW9uX21lbV9tYXAgfD0gU0VDVElPTl9NQVJLRURfUFJFU0VOVDtcbiB9XG4rXG4rc3RhdGljIGlubGluZSBzaXplX3QgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSh2b2lkKVxuK3tcbitcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLFxuK1x0XHRcdCAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpO1xuK31cbiAjZWxzZVxuIHN0YXRpYyBpbmxpbmUgdm9pZCBzcGFyc2VfaW5pdCh2b2lkKSB7fVxuICNlbmRpZiAvKiBDT05GSUdfU1BBUlNFTUVNICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMzoxNzo0OC44OTQ5MjM3OTVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NDE5Mjk4MjI5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFJlZmFjdG9yaW5nIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtb3ZpbmcgYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGZyb20gYG1tL3NwYXJzZS5jYCB0byBgbW0vc3BhcnNlLmhgIGFuZCBtYWtpbmcgaXQgYSBgc3RhdGljIGlubGluZWAgZnVuY3Rpb24uIFRoZSBjb2RlIGFsc28gc2ltcGxpZmllcyB0aGUgY2FsY3VsYXRpb24gaXRzZWxmIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90YC4gSG1tLCBJJ20gc2xpZ2h0bHkgdGhyb3duIGJ5IGBzdHJ1Y3Rfc2l6ZV90YOKAlEkgd2FudCB0byBiZSBzdXJlIGl0J3MgdGhlIHJpZ2h0IHR5cGUuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayBpZiBpdCdzIG5ldyBvciBpZiBJJ20ganVzdCBtaXNyZW1lbWJlcmluZyB0aGUgbmFtZSwgb3IgaWYgSSdtIGdldHRpbmcgbWl4ZWQgdXAgd2l0aCBgc3RydWN0X3NpemVgLlxuXG5SaWdodCwgbGV0IG1lIHNlZSBleGFjdGx5IHdoYXQgdGhlIGRpZmYgZG9lcy4gSXQgKnJlbW92ZXMqIGB1c2VtYXBfc2l6ZWAgYW5kIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmcm9tIGBtbS9zcGFyc2UuY2AgYW5kICphZGRzKiBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAgdG8gYG1tL3NwYXJzZS5oYC4gQWgsIGdvdCBpdDogdGhpcyBpcyBhIHB1cmUgcmVmYWN0b3JpbmcvY2xlYW51cC4gVGhlIGNoYW5nZXMgbG9vayBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkLiBOb3cgSSBuZWVkIHRvIGNvbnNpZGVyIGZ1bmN0aW9uYWwgaW1wYWN0LiBEb2VzIHRoaXMgY2hhbmdlIGFueSBvZiB0aGUgdW5kZXJseWluZyBsb2dpYz9cblxuYG1lbV9zZWN0aW9uX3VzYWdlX3NpemVgIGlzIHVzZWQgZHVyaW5nIG1lbW9yeSBob3RwbHVnIG9yIHNwYXJzZSBtZW1vcnkgaW5pdGlhbGl6YXRpb24sIHNvIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgYW55IHN1YnRsZSBjaGFuZ2VzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiBpdCdzIHdvcnRoIGZ1enppbmcuIEdlbmVyYWxseSwgdGhpcyBraW5kIG9mIHJlZmFjdG9yaW5nLCBtb3ZpbmcgYSBmdW5jdGlvbiB0byBhIGhlYWRlciBhbmQgbWFraW5nIGl0IGlubGluZSwgc2hvdWxkbid0IGludHJvZHVjZSBhbnkgbmV3IHJlYWNoYWJsZSBjb2RlIHBhdGhzIHRoYXQgd291bGQgbmVlZCBmdXp6aW5nIHVubGVzcywgYW5kIHRoaXMgaXMgdGhlIGltcG9ydGFudCBjYXZlYXQsIGl0IGFsc28gZml4ZXMgYSBwcmUtZXhpc3RpbmcgYnVnLiBUaGlzIGlzIHdoZXJlIEkgbmVlZCB0byBiZSBzdXJlLlxuXG5PbmUgbW9yZSBxdWljayBjaGVjazogYWdhaW4sIGBzdHJ1Y3Rfc2l6ZV90YD8gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgc3VyZSBvZiB0aGUgbmFtZS4gTGV0IG1lIGdyZXAgZm9yIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBhbmQgc2VlIHdoYXQgY29tZXMgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjQsIk91dHB1dFRva2VucyI6MjEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMDEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMzoxNzo1NC4zMTQyMjYyODVaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc3ODkxNTM4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJtZW1fc2VjdGlvbl91c2FnZV9zaXplXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL3NwYXJzZS12bWVtbWFwLmM9ODIzPXN0YXRpYyBzdHJ1Y3QgcGFnZSAqIF9fbWVtaW5pdCBzZWN0aW9uX2FjdGl2YXRlKGludCBuaWQsIHVuc2lnbmVkIGxvbmcgcGZuLFxcbi0tXFxubW0vc3BhcnNlLXZtZW1tYXAuYy04MzItXFx0aWYgKCFtcy1cXHUwMDNldXNhZ2UpIHtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jOjgzMzpcXHRcXHR1c2FnZSA9IGt6YWxsb2MobWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSgpLCBHRlBfS0VSTkVMKTtcXG5tbS9zcGFyc2Utdm1lbW1hcC5jLTgzNC1cXHRcXHRpZiAoIXVzYWdlKVxcbi0tXFxubW0vc3BhcnNlLmM9MjQ5PXZvaWQgX19pbml0IHNwYXJzZV9pbml0X2Vhcmx5X3NlY3Rpb24oaW50IG5pZCwgc3RydWN0IHBhZ2UgKm1hcCxcXG4tLVxcbm1tL3NwYXJzZS5jLTI1NC1cXHRcXHRcXHRzcGFyc2VfdXNhZ2VidWYsIFNFQ1RJT05fSVNfRUFSTFkgfCBmbGFncyk7XFxubW0vc3BhcnNlLmM6MjU1OlxcdHNwYXJzZV91c2FnZWJ1ZiA9ICh2b2lkICopc3BhcnNlX3VzYWdlYnVmICsgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZSgpO1xcbm1tL3NwYXJzZS5jLTI1Ni19XFxuLS1cXG5tbS9zcGFyc2UuYz0yNTg9c3RhdGljIGludCBfX2luaXQgc3BhcnNlX3VzYWdlX2luaXQoaW50IG5pZCwgdW5zaWduZWQgbG9uZyBtYXBfY291bnQpXFxuLS1cXG5tbS9zcGFyc2UuYy0yNjEtXFxubW0vc3BhcnNlLmM6MjYyOlxcdHNpemUgPSBtZW1fc2VjdGlvbl91c2FnZV9zaXplKCkgKiBtYXBfY291bnQ7XFxubW0vc3BhcnNlLmMtMjYzLVxcdHNwYXJzZV91c2FnZWJ1ZiA9IG1lbWJsb2NrX2FsbG9jX25vZGUoc2l6ZSwgU01QX0NBQ0hFX0JZVEVTLCBuaWQpO1xcbi0tXFxubW0vc3BhcnNlLmg9NDI9c3RhdGljIGlubGluZSB2b2lkIF9fc2VjdGlvbl9tYXJrX3ByZXNlbnQoc3RydWN0IG1lbV9zZWN0aW9uICptcyxcXG4tLVxcbm1tL3NwYXJzZS5oLTUwLVxcbm1tL3NwYXJzZS5oOjUxOnN0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcXG5tbS9zcGFyc2UuaC01Mi17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDAzOjE3OjU2LjA5MzE0NjIyM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3NDk0Nzc1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRoaXMg4oCTIGJhc2ljYWxseSwgd2hhdCBJJ20gdGhpbmtpbmcgYXMgSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGNoYW5nZS5cblxuKipSZWZhY3RvcmluZyBTY3J1dGlueSoqXG5cblJpZ2h0LCBzbyB0aGlzIGlzIGp1c3QgYSByZWZhY3RvcmluZyBvZiBgbWVtX3NlY3Rpb25fdXNhZ2Vfc2l6ZWAuICBUaGUgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzIGFsd2F5cywgXCJJcyB0aGlzIGV2ZW4gd29ydGggZnV6emluZz9cIiBJIG1lYW4sIGl0ICpsb29rcyogaW5jcmVkaWJseSBzaW1wbGUuIEl0J3MganVzdCBhIGNoYW5nZSBpbiBob3cgdGhlIHNpemUgaXMgY29tcHV0ZWQsIGFuZCB0aGV5J3ZlIG1vdmVkIHRoYXQgY2FsY3VsYXRpb24gaW50byBhIGhlYWRlci4gTm90IGV4YWN0bHkgcm9ja2V0IHNjaWVuY2UuIEkgaGF2ZSB0byBxdWlja2x5IGFzc2VzcyB0aGUgcmlzay9yZXdhcmQuXG5cbkhvbGQgb24uLi4gcmVhZGluZyBtb3JlIGNsb3NlbHkuIEFoLCBub3cgSSBzZWUuIEl0J3MgdXNpbmcgYHN0cnVjdF9zaXplX3RgLiBUaGF0IHJpbmdzIGEgYmVsbC4gIEl0IHNvdW5kcyBsaWtlIGEgbWFjcm8gZGVzaWduZWQgdG8gY2FsY3VsYXRlIHRoZSBzaXplIG9mIGEgc3RydWN0IHRoYXQgaGFzIGEgdHJhaWxpbmcgYXJyYXksIGRvZXNuJ3QgaXQ/IExldCBtZSBqdXN0IG1ha2Ugc3VyZS4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgdmVyaWZ5IHdoYXQgdGhpcyBpcy4gSXMgaXQgYHN0cnVjdF9zaXplX3RgPyBPciBpcyBpdCBzb21ldGhpbmcgZWxzZSwgbGlrZSBqdXN0IGBzdHJ1Y3Rfc2l6ZWA/ICBJIG5lZWQgdG8gY29uZmlybSB0aGUgdW5kZXJseWluZyBtZWNoYW5pc20gYmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGUgZnV6emluZyByYWJiaXQgaG9sZS4gVGhhdCBtYWNybyBpcyB3aGVyZSBhbGwgdGhlIHBvdGVudGlhbCB0cm91YmxlIHdpbGwgbGllLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTc2LCJPdXRwdXRUb2tlbnMiOjE5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDM6MTc6NTkuODQyNjMwNDM3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3NDQxODQ3ODEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RydWN0X3NpemVfdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX2Jpbi5jPTY0PXZvaWQgY3NfZHNwX21vY2tfYmluX2FkZF9yYXdfYmxvY2soc3RydWN0IGNzX2RzcF9tb2NrX2Jpbl9idWlsZGVyICpidWlsZGVyLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja19iaW4uYy02OS1cXHRzdHJ1Y3Qgd21md19jb2VmZl9pdGVtICppdGVtO1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmM6NzA6XFx0c2l6ZV90IGJ5dGVzX25lZWRlZCA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfY29lZmZfaXRlbSwgZGF0YSwgcGF5bG9hZF9sZW5fYnl0ZXMpO1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfYmluLmMtNzEtXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYz05OT12b2lkIGNzX2RzcF9tb2NrX3dtZndfYWRkX3Jhd19ibG9jayhzdHJ1Y3QgY3NfZHNwX21vY2tfd21md19idWlsZGVyICpidWlsZGVyLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMTAzLVxcdHN0cnVjdCB3bWZ3X3JlZ2lvbiAqaGVhZGVyID0gYnVpbGRlci1cXHUwMDNld3JpdGVfcDtcXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzoxMDQ6XFx0dW5zaWduZWQgaW50IGJ5dGVzX25lZWRlZCA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfcmVnaW9uLCBkYXRhLCBwYXlsb2FkX2xlbl9ieXRlcyk7XFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMTA1LVxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM9MTcwPXZvaWQgY3NfZHNwX21vY2tfd21md19zdGFydF9hbGdfaW5mb19ibG9jayhzdHJ1Y3QgY3NfZHNwX21vY2tfd21md19idWlsZGVyICpidWlsZGVyLFxcbi0tXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMjQ3LVxcdFxcdC8qIFJvdW5kIHVwIHRvIG5leHQgX19sZTMyICovXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmM6MjQ4OlxcdFxcdG9mZnNldCA9IHJvdW5kX3VwKDQgKyBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgbmFtZV9sZW4pLFxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTI0OS1cXHRcXHRcXHRcXHQgIHNpemVvZihfX2xlMzIpKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTI2ND12b2lkIGNzX2RzcF9tb2NrX3dtZndfYWRkX2NvZWZmX2Rlc2Moc3RydWN0IGNzX2RzcF9tb2NrX3dtZndfYnVpbGRlciAqYnVpbGRlcixcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTMyNy1cXHRcXHQvKiBSb3VuZCB1cCB0byBuZXh0IF9fbGUzMiBtdWx0aXBsZSAqL1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjMyODpcXHRcXHRwbGUzMiArPSByb3VuZF91cChzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB3bWZ3X3Nob3J0X3N0cmluZywgZGF0YSwgc2hvcnRuYW1lX2xlbiksXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzI5LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwbGUzMikpIC8gc2l6ZW9mKCpwbGUzMik7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zMzUtXFx0XFx0LyogUm91bmQgdXAgdG8gbmV4dCBfX2xlMzIgbXVsdGlwbGUgKi9cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozMzY6XFx0XFx0cGxlMzIgKz0gcm91bmRfdXAoc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19zaG9ydF9zdHJpbmcsIGRhdGEsIGZ1bGxuYW1lX2xlbiksXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzM3LVxcdFxcdFxcdFxcdCAgc2l6ZW9mKCpwbGUzMikpIC8gc2l6ZW9mKCpwbGUzMik7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zNDMtXFx0XFx0LyogUm91bmQgdXAgdG8gbmV4dCBfX2xlMzIgbXVsdGlwbGUgKi9cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozNDQ6XFx0XFx0cGxlMzIgKz0gcm91bmRfdXAoc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19sb25nX3N0cmluZywgZGF0YSwgZGVzY3JpcHRpb25fbGVuKSxcXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zNDUtXFx0XFx0XFx0XFx0ICBzaXplb2YoKnBsZTMyKSkgLyBzaXplb2YoKnBsZTMyKTtcXG4tLVxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jPTM1OD12b2lkIGNzX2RzcF9tb2NrX3dtZndfZW5kX2FsZ19pbmZvX2Jsb2NrKHN0cnVjdCBjc19kc3BfbW9ja193bWZ3X2J1aWxkZXIgKmJ1aWxkZXIpXFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zODMtXFx0XFx0c2hvcnRzdHJpbmcgPSAoY29uc3Qgc3RydWN0IHdtZndfc2hvcnRfc3RyaW5nICopXFx1MDAyNnJnbi1cXHUwMDNlZGF0YVtvZmZzZXRdO1xcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jOjM4NDpcXHRcXHRvZmZzZXQgKz0gcm91bmRfdXAoc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21md19zaG9ydF9zdHJpbmcsIGRhdGEsIHNob3J0c3RyaW5nLVxcdTAwM2VsZW4pLFxcbmRyaXZlcnMvZmlybXdhcmUvY2lycnVzL3Rlc3QvY3NfZHNwX21vY2tfd21mdy5jLTM4NS1cXHRcXHRcXHRcXHQgICBzaXplb2YoX19sZTMyKSk7XFxuLS1cXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYy0zODgtXFx0XFx0bG9uZ3N0cmluZyA9IChjb25zdCBzdHJ1Y3Qgd21md19sb25nX3N0cmluZyAqKVxcdTAwMjZyZ24tXFx1MDAzZWRhdGFbb2Zmc2V0XTtcXG5kcml2ZXJzL2Zpcm13YXJlL2NpcnJ1cy90ZXN0L2NzX2RzcF9tb2NrX3dtZncuYzozODk6XFx0XFx0b2Zmc2V0ICs9IHJvdW5kX3VwKHN0cnVjdF9zaXplX3Qoc3RydWN0IHdtZndfbG9uZ19zdHJpbmcsIGRhdGEsXFxuZHJpdmVycy9maXJtd2FyZS9jaXJydXMvdGVzdC9jc19kc3BfbW9ja193bWZ3LmMtMzkwLVxcdFxcdFxcdFxcdCAgIGxlMTZfdG9fY3B1KGxvbmdzdHJpbmctXFx1MDAzZWxlbikpLFxcbi0tXFxuZHJpdmVycy9tZC9kbS1wY2FjaGUvY2FjaGUuaC0xOC0jZGVmaW5lIFBDQUNIRV9DQUNIRV9TRUdTX01BWFxcdFxcdCgxMDI0ICogMTAyNClcXHQvKiBtYXhpbXVtIGNhY2hlIHNpemUgZm9yIGVhY2ggZGV2aWNlIGlzIDE2VCAqL1xcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg6MTk6I2RlZmluZSBQQ0FDSEVfS1NFVF9PTk1FRElBX1NJWkVfTUFYXFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgcGNhY2hlX2NhY2hlX2tzZXRfb25tZWRpYSwgZGF0YSwgUENBQ0hFX0tTRVRfS0VZU19NQVgpXFxuZHJpdmVycy9tZC9kbS1wY2FjaGUvY2FjaGUuaC0yMC0jZGVmaW5lIFBDQUNIRV9LU0VUX1NJWkVcXHRcXHQoc2l6ZW9mKHN0cnVjdCBwY2FjaGVfY2FjaGVfa3NldCkgKyBzaXplb2Yoc3RydWN0IHBjYWNoZV9jYWNoZV9rZXlfb25tZWRpYSkgKiBQQ0FDSEVfS1NFVF9LRVlTX01BWClcXG4tLVxcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmg9NTA2PXN0YXRpYyBpbmxpbmUgdTMyIGdldF9rc2V0X29ubWVkaWFfc2l6ZShzdHJ1Y3QgcGNhY2hlX2NhY2hlX2tzZXRfb25tZWRpYSAqa3NldF9vbm1lZGlhKVxcbmRyaXZlcnMvbWQvZG0tcGNhY2hlL2NhY2hlLmgtNTA3LXtcXG5kcml2ZXJzL21kL2RtLXBjYWNoZS9jYWNoZS5oOjUwODpcXHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgcGNhY2hlX2NhY2hlX2tzZXRfb25tZWRpYSwgZGF0YSwga3NldF9vbm1lZGlhLVxcdTAwM2VrZXlfbnVtKTtcXG5kcml2ZXJzL21kL2RtLXBjYWNoZS9jYWNoZS5oLTUwOS19XFxuLS1cXG5kcml2ZXJzL21kL3JhaWQ1LmM9MjQyMD1zdGF0aWMgaW50IGdyb3dfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbnVtKVxcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jLTI0MzUtXFx0c2MgPSBrbWVtX2NhY2hlX2NyZWF0ZShjb25mLVxcdTAwM2VjYWNoZV9uYW1lW2NvbmYtXFx1MDAzZWFjdGl2ZV9uYW1lXSxcXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjQzNjpcXHRcXHRcXHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgZGV2cyksXFxuZHJpdmVycy9tZC9yYWlkNS5jLTI0MzctXFx0XFx0XFx0ICAgICAgIDAsIDAsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9tZC9yYWlkNS5jPTI1MjM9c3RhdGljIGludCByZXNpemVfc3RyaXBlcyhzdHJ1Y3QgcjVjb25mICpjb25mLCBpbnQgbmV3c2l6ZSlcXG4tLVxcbmRyaXZlcnMvbWQvcmFpZDUuYy0yNTU5LVxcdHNjID0ga21lbV9jYWNoZV9jcmVhdGUoY29uZi1cXHUwMDNlY2FjaGVfbmFtZVsxLWNvbmYtXFx1MDAzZWFjdGl2ZV9uYW1lXSxcXG5kcml2ZXJzL21kL3JhaWQ1LmM6MjU2MDpcXHRcXHRcXHQgICAgICAgc3RydWN0X3NpemVfdChzdHJ1Y3Qgc3RyaXBlX2hlYWQsIGRldiwgbmV3c2l6ZSksXFxuZHJpdmVycy9tZC9yYWlkNS5jLTI1NjEtXFx0XFx0XFx0ICAgICAgIDAsIDAsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2hmaV9jbWRzLmM9MjIzPWludCBwa3Rfc2Vzc2lvbl91bnNldF9idWZmZXJzKHN0cnVjdCBoZmlfc2Vzc2lvbl9yZWxlYXNlX2J1ZmZlcl9wa3QgKnBrdCxcXG4tLVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9oZmlfY21kcy5jLTI1My1cXHRcXHRwa3QtXFx1MDAzZXNoZHIuaGRyLnNpemUgPVxcbmRyaXZlcnMvbWVkaWEvcGxhdGZvcm0vcWNvbS92ZW51cy9oZmlfY21kcy5jOjI1NDpcXHRcXHRcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBoZmlfc2Vzc2lvbl9zZXRfYnVmZmVyc19wa3QsXFxuZHJpdmVycy9tZWRpYS9wbGF0Zm9ybS9xY29tL3ZlbnVzL2hmaV9jbWRzLmMtMjU1LVxcdFxcdFxcdFxcdCAgICAgIGJ1ZmZlcl9pbmZvLCBiZC1cXHUwMDNlbnVtX2J1ZmZlcnMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaD0yMDY9c3RydWN0IGljZV9idWZfaGRyIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMjEzLVxcdCgoSUNFX1BLR19CVUZfU0laRSAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaDoyMTQ6XFx0ICBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYnVmX2hkciwgIHNlY3Rpb25fZW50cnksIDEpIC0gKGhkX3N6KSkgLyBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0yMTUtXFx0IChlbnRfc3opKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaD0zMjg9c3RydWN0IGljZV9sYWJlbF9zZWN0aW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzMzLSNkZWZpbmUgSUNFX01BWF9MQUJFTFNfSU5fQlVGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg6MzM0OlxcdElDRV9NQVhfRU5UUklFU19JTl9CVUYoc3RydWN0X3NpemVfdChzdHJ1Y3QgaWNlX2xhYmVsX3NlY3Rpb24sICBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaC0zMzUtXFx0XFx0XFx0XFx0XFx0ICAgbGFiZWwsIDEpIC0gICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9MzgyPXN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzg4LSNkZWZpbmUgSUNFX01BWF9CU1RfVENBTVNfSU5fQlVGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxcXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9kZHAuaDozODk6XFx0SUNFX01BWF9FTlRSSUVTX0lOX0JVRihzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpY2VfYm9vc3RfdGNhbV9zZWN0aW9uLCAgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtMzkwLVxcdFxcdFxcdFxcdFxcdCAgIHRjYW0sIDEpIC0gICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmg9NDAyPXN0cnVjdCBpY2VfbWFya2VyX3B0eXBlX3RjYW1fc2VjdGlvbiB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oLTQwOC0jZGVmaW5lIElDRV9NQVhfTUFSS0VSX1BUWVBFX1RDQU1TX0lOX0JVRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXFxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2RkcC5oOjQwOTpcXHRJQ0VfTUFYX0VOVFJJRVNfSU5fQlVGKHN0cnVjdF9zaXplX3Qoc3RydWN0IGljZV9tYXJrZXJfcHR5cGVfdGNhbV9zZWN0aW9uLCAgdGNhbSwgXFxcXFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfZGRwLmgtNDEwLVxcdFxcdFxcdCAgICAxKSAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTgxOD1zdGF0aWMgdm9pZCBuZXR2c2Nfc2VuZF9jb21wbGV0aW9uKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTg2OS1cXHRcXHRpZiAobXNnbGVuIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBudnNwX21lc3NhZ2VfaGVhZGVyKSArXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjg3MDpcXHRcXHRcXHRcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBudnNwXzFfbWVzc2FnZV9zZW5kX3JlY2VpdmVfYnVmZmVyX2NvbXBsZXRlLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy04NzEtXFx0XFx0XFx0XFx0XFx0ICAgICAgc2VjdGlvbnMsIDEpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jPTE2NTQ9aW50IGNkY19uY21fcnhfdmVyaWZ5X25kcDE2KHN0cnVjdCBza19idWZmICpza2JfaW4sIGludCBuZHBvZmZzZXQpXFxuLS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE2NzgtXFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYzoxNjc5OlxcdG5kcF9sZW4gPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB1c2JfY2RjX25jbV9uZHAxNiwgZHBlMTYsIHJldCk7XFxuZHJpdmVycy9uZXQvdXNiL2NkY19uY20uYy0xNjgwLVxcdGlmIChuZHBvZmZzZXQgKyBuZHBfbGVuIFxcdTAwM2Ugc2tiX2luLVxcdTAwM2VsZW4pIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmM9MTY5MT1pbnQgY2RjX25jbV9yeF92ZXJpZnlfbmRwMzIoc3RydWN0IHNrX2J1ZmYgKnNrYl9pbiwgaW50IG5kcG9mZnNldClcXG4tLVxcbmRyaXZlcnMvbmV0L3VzYi9jZGNfbmNtLmMtMTcxNS1cXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jOjE3MTY6XFx0bmRwX2xlbiA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHVzYl9jZGNfbmNtX25kcDMyLCBkcGUzMiwgcmV0KTtcXG5kcml2ZXJzL25ldC91c2IvY2RjX25jbS5jLTE3MTctXFx0aWYgKG5kcG9mZnNldCArIG5kcF9sZW4gXFx1MDAzZSBza2JfaW4tXFx1MDAzZWxlbikge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NzM1Nz1zdGF0aWMgaW50IHJ0dzg5X2NvcmVfcmVnaXN0ZXJfaHcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNzM2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcwOlxcdGh3LVxcdTAwM2V2aWZfZGF0YV9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgcnR3ODlfdmlmLCBsaW5rc19pbnN0LCBuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo3MzcxOlxcdGh3LVxcdTAwM2VzdGFfZGF0YV9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgcnR3ODlfc3RhLCBsaW5rc19pbnN0LCBuKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy03MzcyLVxcdGh3LVxcdTAwM2V0eHFfZGF0YV9zaXplID0gc2l6ZW9mKHN0cnVjdCBydHc4OV90eHEpO1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYz0yODYwPW52bWVfZmNfY3JlYXRlX2lvX3F1ZXVlcyhzdHJ1Y3QgbnZtZV9mY19jdHJsICpjdHJsKVxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODgyLVxcdFxcdFxcdFxcdTAwMjZudm1lX2ZjX21xX29wcywgMSxcXG5kcml2ZXJzL252bWUvaG9zdC9mYy5jOjI4ODM6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgbnZtZV9mY3Bfb3Bfd19zZ2wsIHByaXYsXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0yODg0LVxcdFxcdFxcdFxcdCAgICAgIGN0cmwtXFx1MDAzZWxwb3J0LVxcdTAwM2VvcHMtXFx1MDAzZWZjcHJxc3RfcHJpdl9zeikpO1xcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYz0zNTQzPW52bWVfZmNfaW5pdF9jdHJsKHN0cnVjdCBkZXZpY2UgKmRldiwgc3RydWN0IG52bWZfY3RybF9vcHRpb25zICpvcHRzLFxcbi0tXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0zNTU5LVxcdFxcdFxcdFxcdTAwMjZudm1lX2ZjX2FkbWluX21xX29wcyxcXG5kcml2ZXJzL252bWUvaG9zdC9mYy5jOjM1NjA6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgbnZtZV9mY3Bfb3Bfd19zZ2wsIHByaXYsXFxuZHJpdmVycy9udm1lL2hvc3QvZmMuYy0zNTYxLVxcdFxcdFxcdFxcdCAgICAgIGN0cmwtXFx1MDAzZWxwb3J0LVxcdTAwM2VvcHMtXFx1MDAzZWZjcHJxc3RfcHJpdl9zeikpO1xcbi0tXFxuZHJpdmVycy9wZXJmL2FybV9wbXV2My5jPTEzNTQ9c3RhdGljIGludCBicmFuY2hfcmVjb3Jkc19hbGxvYyhzdHJ1Y3QgYXJtX3BtdSAqYXJtcG11KVxcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU1LXtcXG5kcml2ZXJzL3BlcmYvYXJtX3BtdXYzLmM6MTM1NjpcXHRzaXplX3Qgc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IHBlcmZfYnJhbmNoX3N0YWNrLCBlbnRyaWVzLFxcbmRyaXZlcnMvcGVyZi9hcm1fcG11djMuYy0xMzU3LVxcdFxcdFxcdFxcdCAgICBicmJlX251bV9icmFuY2hfcmVjb3Jkcyhhcm1wbXUpKTtcXG4tLVxcbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmM9MjA9c3RhdGljIGludCB3bWlfYWRqdXN0X2J1ZmZlcl9sZW5ndGgoc2l6ZV90ICpsZW5ndGgsIGNvbnN0IHVuaW9uIGFjcGlfb2JqZWN0ICpvYmopXFxuLS1cXG5kcml2ZXJzL3BsYXRmb3JtL3dtaS9tYXJzaGFsbGluZy5jLTQyLVxcdFxcdGFsaWdubWVudCA9IDI7XFxuZHJpdmVycy9wbGF0Zm9ybS93bWkvbWFyc2hhbGxpbmcuYzo0MzpcXHRcXHRzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgd21pX3N0cmluZywgY2hhcnMsIG9iai1cXHUwMDNlc3RyaW5nLmxlbmd0aCArIDEpO1xcbmRyaXZlcnMvcGxhdGZvcm0vd21pL21hcnNoYWxsaW5nLmMtNDQtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM9MTI3Mj1zdGF0aWMgaW50IGhwdGlvcF9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGNpZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2RldmljZV9pZCAqaWQpXFxuLS1cXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmMtMTM5Ni1cXG5kcml2ZXJzL3Njc2kvaHB0aW9wLmM6MTM5NzpcXHRyZXFfc2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IGhwdF9pb3BfcmVxdWVzdF9zY3NpX2NvbW1hbmQsXFxuZHJpdmVycy9zY3NpL2hwdGlvcC5jLTEzOTgtXFx0XFx0XFx0XFx0IHNnX2xpc3QsIGhiYS1cXHUwMDNlbWF4X3NnX2Rlc2NyaXB0b3JzKTtcXG4tLVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jPTUxMTg9c3RhdGljIHZvaWQgbWVnYXNhc191cGRhdGVfZXh0X3ZkX2RldGFpbHMoc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlKVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmMtNTE1Ny1cXHRcXHRmdXNpb24tXFx1MDAzZW9sZF9tYXBfc3ogPVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjUxNTg6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfRldfUkFJRF9NQVAsIGxkU3Bhbk1hcCxcXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy01MTU5LVxcdFxcdFxcdFxcdCAgICAgIGluc3RhbmNlLVxcdTAwM2Vmd19zdXBwb3J0ZWRfdmRfY291bnQpO1xcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9NTc4OD1tZWdhc2FzX3NldHVwX2pib2RfbWFwKHN0cnVjdCBtZWdhc2FzX2luc3RhbmNlICppbnN0YW5jZSlcXG4tLVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU3OTMtXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM6NTc5NDpcXHRwZF9zZXFfbWFwX3N6ID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQywgc2VxLFxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jLTU3OTUtXFx0XFx0XFx0XFx0ICAgICAgTUFYX1BIWVNJQ0FMX0RFVklDRVMpO1xcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19iYXNlLmM9Nzk2Nz1zdGF0aWMgdm9pZCBtZWdhc2FzX2RldGFjaF9vbmUoc3RydWN0IHBjaV9kZXYgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy04MDQ1LVxcdFxcdHBkX3NlcV9tYXBfc3ogPVxcbmRyaXZlcnMvc2NzaS9tZWdhcmFpZC9tZWdhcmFpZF9zYXNfYmFzZS5jOjgwNDY6XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfUERfQ0ZHX1NFUV9OVU1fU1lOQyxcXG5kcml2ZXJzL3Njc2kvbWVnYXJhaWQvbWVnYXJhaWRfc2FzX2Jhc2UuYy04MDQ3LVxcdFxcdFxcdFxcdCAgICAgIHNlcSwgTUFYX1BIWVNJQ0FMX0RFVklDRVMpO1xcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jPTMwMj11OCBNUl9WYWxpZGF0ZU1hcEluZm8oc3RydWN0IG1lZ2FzYXNfaW5zdGFuY2UgKmluc3RhbmNlLCB1NjQgbWFwX2lkKVxcbi0tXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jLTMyOC1cXHRlbHNlXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jOjMyOTpcXHRcXHRleHBlY3RlZF9zaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgTVJfRldfUkFJRF9NQVAsXFxuZHJpdmVycy9zY3NpL21lZ2FyYWlkL21lZ2FyYWlkX3Nhc19mcC5jLTMzMC1cXHRcXHRcXHRcXHRcXHQgICAgICBsZFNwYW5NYXAsXFxuLS1cXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jPTUwNDk9c3RhdGljIGludCBwcWlfY3JlYXRlX3F1ZXVlcyhzdHJ1Y3QgcHFpX2N0cmxfaW5mbyAqY3RybF9pbmZvKVxcbi0tXFxuZHJpdmVycy9zY3NpL3NtYXJ0cHFpL3NtYXJ0cHFpX2luaXQuYy01MDc0LSNkZWZpbmUgUFFJX1JFUE9SVF9FVkVOVF9DT05GSUdfQlVGRkVSX0xFTkdUSFxcdFxcXFxcXG5kcml2ZXJzL3Njc2kvc21hcnRwcWkvc21hcnRwcWlfaW5pdC5jOjUwNzU6XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgcHFpX2V2ZW50X2NvbmZpZywgIGRlc2NyaXB0b3JzLCBQUUlfTUFYX0VWRU5UX0RFU0NSSVBUT1JTKVxcbmRyaXZlcnMvc2NzaS9zbWFydHBxaS9zbWFydHBxaV9pbml0LmMtNTA3Ni1cXG4tLVxcbmRyaXZlcnMvdGVlL3Fjb210ZWUvcWNvbXRlZV9tc2cuaD0xNTY9c3RydWN0IHFjb210ZWVfbXNnX2NhbGxiYWNrIHtcXG4tLVxcbmRyaXZlcnMvdGVlL3Fjb210ZWUvcWNvbXRlZV9tc2cuaC0xNjUtI2RlZmluZSBxY29tdGVlX21zZ19idWZmZXJfYXJncyh0LCBuKSBcXFxcXFxuZHJpdmVycy90ZWUvcWNvbXRlZS9xY29tdGVlX21zZy5oOjE2NjpcXHRxY29tdGVlX21zZ19vZmZzZXRfYWxpZ24oc3RydWN0X3NpemVfdCh0LCBhcmdzLCBuKSlcXG5kcml2ZXJzL3RlZS9xY29tdGVlL3Fjb210ZWVfbXNnLmgtMTY3LS8qIFBvaW50ZXIgdG8gdGhlIGJlZ2lubmluZyBvZiBhIGJ1ZmZlciBhcmd1bWVudCdzIGNvbnRlbnQgYXQgYW4gb2Zmc2V0LiAqL1xcbi0tXFxuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaD0zMTY9eGZzX2J0cmVlX2N1cl9zaXplb2YodW5zaWduZWQgaW50IG5sZXZlbHMpXFxuZnMveGZzL2xpYnhmcy94ZnNfYnRyZWUuaC0zMTcte1xcbmZzL3hmcy9saWJ4ZnMveGZzX2J0cmVlLmg6MzE4OlxcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCB4ZnNfYnRyZWVfY3VyLCBiY19sZXZlbHMsIG5sZXZlbHMpO1xcbmZzL3hmcy9saWJ4ZnMveGZzX2J0cmVlLmgtMzE5LX1cXG4tLVxcbmZzL3hmcy9zY3J1Yi9idHJlZS5oPTYxPXhjaGtfYnRyZWVfc2l6ZW9mKHVuc2lnbmVkIGludCBubGV2ZWxzKVxcbmZzL3hmcy9zY3J1Yi9idHJlZS5oLTYyLXtcXG5mcy94ZnMvc2NydWIvYnRyZWUuaDo2MzpcXHRyZXR1cm4gc3RydWN0X3NpemVfdChzdHJ1Y3QgeGNoa19idHJlZSwgbGFzdGtleSwgbmxldmVscyAtIDEpO1xcbmZzL3hmcy9zY3J1Yi9idHJlZS5oLTY0LX1cXG4tLVxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaD0zNzA9c3RhdGljIF9fYWx3YXlzX2lubGluZSBzaXplX3QgX19tdXN0X2NoZWNrIHNpemVfc3ViKHNpemVfdCBtaW51ZW5kLCBzaXplX3Qgc3VidHJhaGVuZClcXG4tLVxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00MzktLyoqXFxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oOjQ0MDogKiBzdHJ1Y3Rfc2l6ZV90KCkgLSBDYWxjdWxhdGUgc2l6ZSBvZiBzdHJ1Y3R1cmUgd2l0aCB0cmFpbGluZyBmbGV4aWJsZSBhcnJheVxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00NDEtICogQHR5cGU6IHN0cnVjdHVyZSB0eXBlIG5hbWUuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L292ZXJmbG93LmgtNDUxLSAqL1xcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaDo0NTI6I2RlZmluZSBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpXFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00NTMtXFx0c3RydWN0X3NpemUoKHR5cGUgKilOVUxMLCBtZW1iZXIsIGNvdW50KVxcbi0tXFxuaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oLTQ4MC1cXHR1bmlvbiB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaDo0ODE6XFx0XFx0dTggYnl0ZXNbc3RydWN0X3NpemVfdCh0eXBlLCBtZW1iZXIsIGNvdW50KV07XFx0XFx0XFx0XFxcXFxcbmluY2x1ZGUvbGludXgvb3ZlcmZsb3cuaC00ODItXFx0XFx0dHlwZSBvYmo7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9saW51eC9zbGFiLmg9MTA3MD12b2lkICprbWFsbG9jX25vbG9jayhzaXplX3Qgc2l6ZSwgZ2ZwX3QgZ2ZwX2ZsYWdzLCBpbnQgbm9kZSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3NsYWIuaC0xMTA1LVxcdGNvbnN0IHNpemVfdCBfX2NvdW50ID0gKENPVU5UKTtcXHRcXHRcXHRcXHRcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmg6MTEwNjpcXHRjb25zdCBzaXplX3QgX19vYmpfc2l6ZSA9IHN0cnVjdF9zaXplX3QoVFlQRSwgRkFNLCBfX2NvdW50KTtcXHRcXFxcXFxuaW5jbHVkZS9saW51eC9zbGFiLmgtMTEwNy1cXHRUWVBFICpfX29ial9wdHIgPSBLTUFMTE9DKF9fb2JqX3NpemUsIEdGUCk7XFx0XFx0XFx0XFxcXFxcbi0tXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oPTYxPXN0YXRpY19hc3NlcnQoSVNfQUxJR05FRChzaXplb2Yoc3RydWN0IHhkcF9idWZmX3hzayksXFxuLS1cXG5pbmNsdWRlL25ldC9saWJldGgveGRwLmgtOTYtXFx0c3RhdGljX2Fzc2VydChvZmZzZXRvZmVuZChzdHJ1Y3QgeGRwX2J1ZmZfeHNrLCBjYikgXFx1MDAzZT1cXHRcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oOjk3OlxcdFxcdCAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IGxpYmV0aF94ZHBfYnVmZiwgcHJpdixcXHQgICAgICBcXFxcXFxuaW5jbHVkZS9uZXQvbGliZXRoL3hkcC5oLTk4LVxcdFxcdFxcdFxcdCAgICBMSUJFVEhfWERQX1BSSVZfU1ooc3opKSlcXG4tLVxcbmlvX3VyaW5nL3JzcmMuYz0yNDI9Ym9vbCBpb19yc3JjX2NhY2hlX2luaXQoc3RydWN0IGlvX3JpbmdfY3R4ICpjdHgpXFxuaW9fdXJpbmcvcnNyYy5jLTI0My17XFxuaW9fdXJpbmcvcnNyYy5jOjI0NDpcXHRjb25zdCBpbnQgaW11X2NhY2hlX3NpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBpb19tYXBwZWRfdWJ1ZiwgYnZlYyxcXG5pb191cmluZy9yc3JjLmMtMjQ1LVxcdFxcdFxcdFxcdFxcdFxcdCBJT19DQUNIRURfQlZFQ1NfU0VHUyk7XFxuLS1cXG5rZXJuZWwvcGlkLmM9ODQ4PXZvaWQgX19pbml0IHBpZF9pZHJfaW5pdCh2b2lkKVxcbi0tXFxua2VybmVsL3BpZC5jLTg2Mi1cXHRpbml0X3BpZF9ucy5waWRfY2FjaGVwID0ga21lbV9jYWNoZV9jcmVhdGUoXFxcInBpZFxcXCIsXFxua2VybmVsL3BpZC5jOjg2MzpcXHRcXHRcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBwaWQsIG51bWJlcnMsIDEpLFxcbmtlcm5lbC9waWQuYy04NjQtXFx0XFx0XFx0X19hbGlnbm9mX18oc3RydWN0IHBpZCksXFxuLS1cXG5rZXJuZWwvcGlkX25hbWVzcGFjZS5jPTQwPXN0YXRpYyBzdHJ1Y3Qga21lbV9jYWNoZSAqY3JlYXRlX3BpZF9jYWNoZXAodW5zaWduZWQgaW50IGxldmVsKVxcbi0tXFxua2VybmVsL3BpZF9uYW1lc3BhY2UuYy01Mi1cXHRzbnByaW50ZihuYW1lLCBzaXplb2YobmFtZSksIFxcXCJwaWRfJXVcXFwiLCBsZXZlbCArIDEpO1xcbmtlcm5lbC9waWRfbmFtZXNwYWNlLmM6NTM6XFx0bGVuID0gc3RydWN0X3NpemVfdChzdHJ1Y3QgcGlkLCBudW1iZXJzLCBsZXZlbCArIDEpO1xcbmtlcm5lbC9waWRfbmFtZXNwYWNlLmMtNTQtXFx0bXV0ZXhfbG9jayhcXHUwMDI2cGlkX2NhY2hlc19tdXRleCk7XFxuLS1cXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jPTQ5MDQ9c3RhdGljIHMzMiBzY3hfc2V0X2NtYXNrX3NjcmF0Y2hfYWxsb2Moc3RydWN0IHNjeF9zY2hlZCAqc2NoKVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNS17XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo0OTA2OlxcdHNpemVfdCBzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgc2N4X2NtYXNrLCBiaXRzLFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNDkwNy1cXHRcXHRcXHRcXHQgICAgU0NYX0NNQVNLX05SX1dPUkRTKG51bV9wb3NzaWJsZV9jcHVzKCkpKTtcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmM9NDkyOD1zdGF0aWMgdm9pZCBzY3hfc2V0X2NtYXNrX3NjcmF0Y2hfZnJlZShzdHJ1Y3Qgc2N4X3NjaGVkICpzY2gpXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTI5LXtcXG5rZXJuZWwvc2NoZWQvZXh0L2V4dC5jOjQ5MzA6XFx0c2l6ZV90IHNpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBzY3hfY21hc2ssIGJpdHMsXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYy00OTMxLVxcdFxcdFxcdFxcdCAgICBTQ1hfQ01BU0tfTlJfV09SRFMobnVtX3Bvc3NpYmxlX2NwdXMoKSkpO1xcbi0tXFxua2VybmVsL3NjaGVkL2V4dC9leHQuYz02Nzg0PXN0YXRpYyBzdHJ1Y3Qgc2N4X3NjaGVkICpzY3hfYWxsb2NfYW5kX2FkZF9zY2hlZChzdHJ1Y3Qgc2N4X2VuYWJsZV9jbWQgKmNtZCxcXG4tLVxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjgyMy1cXHRzY2gtXFx1MDAzZWRzcF9tYXhfYmF0Y2ggPSBvcHMtXFx1MDAzZWRpc3BhdGNoX21heF9iYXRjaCA/OiBTQ1hfRFNQX0RGTF9NQVhfQkFUQ0g7XFxua2VybmVsL3NjaGVkL2V4dC9leHQuYzo2ODI0OlxcdHNjaC1cXHUwMDNlcGNwdSA9IF9fYWxsb2NfcGVyY3B1KHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjeF9zY2hlZF9wY3B1LFxcbmtlcm5lbC9zY2hlZC9leHQvZXh0LmMtNjgyNS1cXHRcXHRcXHRcXHRcXHRcXHQgZHNwX2N0eC5idWYsIHNjaC1cXHUwMDNlZHNwX21heF9iYXRjaCksXFxuLS1cXG5saWIvdGVzdHMvb3ZlcmZsb3dfa3VuaXQuYz03MDY9c3RhdGljIHZvaWQgb3ZlcmZsb3dfc2l6ZV9oZWxwZXJzX3Rlc3Qoc3RydWN0IGt1bml0ICp0ZXN0KVxcbi0tXFxubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmMtNzA4LVxcdC8qIE1ha2Ugc3VyZSBzdHJ1Y3Rfc2l6ZSgpIGNhbiBiZSB1c2VkIGluIGEgY29uc3RhbnQgZXhwcmVzc2lvbi4gKi9cXG5saWIvdGVzdHMvb3ZlcmZsb3dfa3VuaXQuYzo3MDk6XFx0dTggY2VfYXJyYXlbc3RydWN0X3NpemVfdChzdHJ1Y3QgX190ZXN0X2ZsZXhfYXJyYXksIGRhdGEsIDU1KV07XFxubGliL3Rlc3RzL292ZXJmbG93X2t1bml0LmMtNzEwLVxcdHN0cnVjdCBfX3Rlc3RfZmxleF9hcnJheSAqb2JqO1xcbi0tXFxubW0vbWVtY29udHJvbC5jPTU2MTM9aW50IF9faW5pdCBtZW1fY2dyb3VwX2luaXQodm9pZClcXG4tLVxcbm1tL21lbWNvbnRyb2wuYy01NjM4LVxcbm1tL21lbWNvbnRyb2wuYzo1NjM5OlxcdG1lbWNnX3NpemUgPSBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fY2dyb3VwLCBub2RlaW5mbywgbnJfbm9kZV9pZHMpO1xcbm1tL21lbWNvbnRyb2wuYy01NjQwLVxcdG1lbWNnX2NhY2hlcCA9IGttZW1fY2FjaGVfY3JlYXRlKFxcXCJtZW1fY2dyb3VwXFxcIiwgbWVtY2dfc2l6ZSwgMCxcXG4tLVxcbm1tL3NsdWIuYz03NzU5PXN0YXRpYyB1bnNpZ25lZCBpbnQgY2FsY3VsYXRlX3NoZWFmX2NhcGFjaXR5KHN0cnVjdCBrbWVtX2NhY2hlICpzLFxcbi0tXFxubW0vc2x1Yi5jLTc3OTMtXFx0LyogSW5jcmVtZW50IGNhcGFjaXR5IHRvIG1ha2Ugc2hlYWYgZXhhY3RseSBhIGttYWxsb2Mgc2l6ZSBidWNrZXQgKi9cXG5tbS9zbHViLmM6Nzc5NDpcXHRzaXplID0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgc2xhYl9zaGVhZiwgb2JqZWN0cywgY2FwYWNpdHkpO1xcbm1tL3NsdWIuYy03Nzk1LVxcdHNpemUgPSBrbWFsbG9jX3NpemVfcm91bmR1cChzaXplKTtcXG5tbS9zbHViLmM6Nzc5NjpcXHRjYXBhY2l0eSA9IChzaXplIC0gc3RydWN0X3NpemVfdChzdHJ1Y3Qgc2xhYl9zaGVhZiwgb2JqZWN0cywgMCkpIC8gc2l6ZW9mKHZvaWQgKik7XFxubW0vc2x1Yi5jLTc3OTctXFxuLS1cXG5tbS9zcGFyc2UuaD01MT1zdGF0aWMgaW5saW5lIHNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXFxubW0vc3BhcnNlLmgtNTIte1xcbm1tL3NwYXJzZS5oOjUzOlxcdHJldHVybiBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLFxcbm1tL3NwYXJzZS5oLTU0LVxcdFxcdFxcdCAgICAgQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykpO1xcbi0tXFxubmV0L2V0aHRvb2wvY29tbW9uLmM9ODc5PWV0aHRvb2xfcnhmaF9jdHhfYWxsb2MoY29uc3Qgc3RydWN0IGV0aHRvb2xfb3BzICpvcHMsXFxuLS1cXG5uZXQvZXRodG9vbC9jb21tb24uYy04OTQtXFx0ZmxleF9sZW4gPSBzaXplX2FkZChrZXlfb2ZmLCBrZXlfbWF4KTtcXG5uZXQvZXRodG9vbC9jb21tb24uYzo4OTU6XFx0c2l6ZSA9IHN0cnVjdF9zaXplX3Qoc3RydWN0IGV0aHRvb2xfcnhmaF9jb250ZXh0LCBkYXRhLCBmbGV4X2xlbik7XFxubmV0L2V0aHRvb2wvY29tbW9uLmMtODk2LVxcbi0tXFxubmV0L2hzci9oc3JfZnJhbWVyZWcuaD0xMjA9c3RhdGljIGlubGluZSBzaXplX3QgaHNyX3NlcV9ibG9ja19zaXplKHN0cnVjdCBoc3Jfbm9kZSAqbm9kZSlcXG4tLVxcbm5ldC9oc3IvaHNyX2ZyYW1lcmVnLmgtMTIyLVxcdFdBUk5fT05fT05DRShub2RlLVxcdTAwM2VzZXFfcG9ydF9jbnQgPT0gMCk7XFxubmV0L2hzci9oc3JfZnJhbWVyZWcuaDoxMjM6XFx0cmV0dXJuIHN0cnVjdF9zaXplX3Qoc3RydWN0IGhzcl9zZXFfYmxvY2ssIHNlcV9ucnMsIG5vZGUtXFx1MDAzZXNlcV9wb3J0X2NudCk7XFxubmV0L2hzci9oc3JfZnJhbWVyZWcuaC0xMjQtfVxcbi0tXFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmM9NzkxMj1zdGF0aWMgaW50IG5mdF9zZXRlbGVtX2ZsdXNoKGNvbnN0IHN0cnVjdCBuZnRfY3R4ICpjdHgsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX3RhYmxlc19hcGkuYy03OTIzLVxcdHRyYW5zID0gbmZ0X3RyYW5zX2FsbG9jKGN0eCwgTkZUX01TR19ERUxTRVRFTEVNLFxcbm5ldC9uZXRmaWx0ZXIvbmZfdGFibGVzX2FwaS5jOjc5MjQ6XFx0XFx0XFx0XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgbmZ0X3RyYW5zX2VsZW0sIGVsZW1zLCAxKSk7XFxubmV0L25ldGZpbHRlci9uZl90YWJsZXNfYXBpLmMtNzkyNS1cXHRpZiAoIXRyYW5zKVxcbi0tXFxubmV0L3J4cnBjL2tleS5jPTE2NT1zdGF0aWMgaW50IHJ4cnBjX3ByZXBhcnNlX3hkcl95ZnNfcnhnayhzdHJ1Y3Qga2V5X3ByZXBhcnNlZF9wYXlsb2FkICpwcmVwLFxcbi0tXFxubmV0L3J4cnBjL2tleS5jLTIxMi1cXG5uZXQvcnhycGMva2V5LmM6MjEzOlxcdHRva2VuLVxcdTAwM2VyeGdrID0ga3phbGxvYyhzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCByeGdrX2tleSwgX2tleSwgcmF3X2tleWxlbiksIEdGUF9LRVJORUwpO1xcbm5ldC9yeHJwYy9rZXkuYy0yMTQtXFx0aWYgKCF0b2tlbi1cXHUwMDNlcnhnaylcXG4tLVxcbm5ldC9zY3RwL3NvY2tldC5jPTQxMDU9c3RhdGljIGludCBzY3RwX3NldHNvY2tvcHRfcmVzZXRfc3RyZWFtcyhzdHJ1Y3Qgc29jayAqc2ssXFxuLS1cXG5uZXQvc2N0cC9zb2NrZXQuYy00MTE0LVxcdG9wdGxlbiA9IG1pbl90KHVuc2lnbmVkIGludCwgb3B0bGVuLFxcbm5ldC9zY3RwL3NvY2tldC5jOjQxMTU6XFx0XFx0ICAgICAgIHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcywgc3JzX3N0cmVhbV9saXN0LFxcbm5ldC9zY3RwL3NvY2tldC5jLTQxMTYtXFx0XFx0XFx0XFx0ICAgICBVU0hSVF9NQVgpKTtcXG4tLVxcbm5ldC9zY3RwL3NvY2tldC5jPTQ1Nzk9c3RhdGljIGludCBzY3RwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L3NjdHAvc29ja2V0LmMtNDYwMS1cXHRcXHRvcHRsZW4gPSBtaW5fdCh1bnNpZ25lZCBpbnQsIG9wdGxlbixcXG5uZXQvc2N0cC9zb2NrZXQuYzo0NjAyOlxcdFxcdFxcdCAgICAgICBQQUdFX0FMSUdOKHN0cnVjdF9zaXplX3Qoc3RydWN0IHNjdHBfcmVzZXRfc3RyZWFtcyxcXG5uZXQvc2N0cC9zb2NrZXQuYy00NjAzLVxcdFxcdFxcdFxcdFxcdFxcdFxcdHNyc19zdHJlYW1fbGlzdCwgVVNIUlRfTUFYKSkpO1xcbi0tXFxuc2NyaXB0cy9jb2NjaW5lbGxlL2FwaS9rbWFsbG9jX29ianMuY29jY2k9NTg9ZnJlc2ggaWRlbnRpZmllciBBTExPQ19PQkpTID0gc2NyaXB0OnB5dGhvbihBTExPQ19BUlJBWSkgeyBhbGxvY19hcnJheShBTExPQ19BUlJBWSkgfTtcXG4tLVxcbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMS18XFxuc2NyaXB0cy9jb2NjaW5lbGxlL2FwaS9rbWFsbG9jX29ianMuY29jY2k6MTIyOi1cXHRBTExPQyhzdHJ1Y3Rfc2l6ZV90KFRZUEUsIEZMRVgsIENPVU5UKSwgR0ZQKVxcbnNjcmlwdHMvY29jY2luZWxsZS9hcGkva21hbGxvY19vYmpzLmNvY2NpLTEyMy0rXFx0QUxMT0NfRkxFWChUWVBFLCBGTEVYLCBDT1VOVCwgR0ZQKVxcbi0tXFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmg9Mzg9c3RydWN0IGxhbmRsb2NrX2RldGFpbHMge1xcbi0tXFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmgtNjUtLyogTWFrZXMgc3VyZSB0aGUgZ3JlYXRlc3QgbGFuZGxvY2tfZGV0YWlscyBjYW4gYmUgYWxsb2NhdGVkLiAqL1xcbnNlY3VyaXR5L2xhbmRsb2NrL2RvbWFpbi5oOjY2OnN0YXRpY19hc3NlcnQoc3RydWN0X3NpemVfdChzdHJ1Y3QgbGFuZGxvY2tfZGV0YWlscywgZXhlX3BhdGgsXFxuc2VjdXJpdHkvbGFuZGxvY2svZG9tYWluLmgtNjctXFx0XFx0XFx0ICAgIExBTkRMT0NLX1BBVEhfTUFYX1NJWkUpIFxcdTAwM2M9IEtNQUxMT0NfTUFYX1NJWkUpO1xcbi0tXFxuc291bmQvc29jL2NvZGVjcy9jcy1hbXAtbGliLXRlc3QuYz0yMjE9c3RhdGljIGVmaV9zdGF0dXNfdCBjc19hbXBfbGliX3Rlc3RfZ2V0X2VmaV92YXJpYWJsZShlZmlfY2hhcjE2X3QgKm5hbWUsXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL2NzLWFtcC1saWItdGVzdC5jLTI2MS0jZGVmaW5lIENTX0FNUF9MSUJfWkVST19GSUxMRURfQkxPQl9TSVpFIFxcXFxcXG5zb3VuZC9zb2MvY29kZWNzL2NzLWFtcC1saWItdGVzdC5jOjI2MjpcXHRzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBjaXJydXNfYW1wX2VmaV9kYXRhLCBkYXRhLCA4KVxcbnNvdW5kL3NvYy9jb2RlY3MvY3MtYW1wLWxpYi10ZXN0LmMtMjYzLVxcbi0tXFxudG9vbHMvc2NoZWRfZXh0L2luY2x1ZGUvc2N4L2NvbW1vbi5icGYuaD0xMDM3PXN0YXRpYyBpbmxpbmUgdTY0IHNjeF9jbG9ja19pcnEodTMyIGNwdSlcXG4tLVxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMTA2MS1cXG50b29scy9zY2hlZF9leHQvaW5jbHVkZS9zY3gvY29tbW9uLmJwZi5oOjEwNjI6I2RlZmluZSBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpXFx0XFxcXFxcbnRvb2xzL3NjaGVkX2V4dC9pbmNsdWRlL3NjeC9jb21tb24uYnBmLmgtMTA2My1cXHRzdHJ1Y3Rfc2l6ZSgodHlwZSAqKU5VTEwsIG1lbWJlciwgY291bnQpXFxuLS1cXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmM9MTUxPXN0cnVjdCB0YXNrX2N0eCB7XFxuLS1cXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmMtMTY5LSNkZWZpbmUgVEFTS19DVFhfU1RSSURFXFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbnRvb2xzL3NjaGVkX2V4dC9zY3hfcW1hcC5icGYuYzoxNzA6XFx0c3RydWN0X3NpemVfdChzdHJ1Y3QgdGFza19jdHgsIGNwdXNfYWxsb3dlZC5iaXRzLFxcdFxcdFxcXFxcXG50b29scy9zY2hlZF9leHQvc2N4X3FtYXAuYnBmLmMtMTcxLVxcdFxcdCAgICAgIENNQVNLX05SX1dPUkRTKFNDWF9RTUFQX01BWF9DUFVTKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMDM6MTg6MDEuNTg2ODI1MzI3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc2MzU0MjYyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFBhdGNoIGZvciBGdXp6aW5nIFdvcnRoaW5lc3MqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGxvb2tpbmcgbGlrZSBhIHJlZmFjdG9yaW5nLiBJIHNlZSB0aGF0IGBzdHJ1Y3Rfc2l6ZV90YCwgZGVmaW5lZCBpbiBgaW5jbHVkZS9saW51eC9vdmVyZmxvdy5oYCwgaXMgYmVpbmcgdXNlZCB0byByZXBsYWNlIHRoZSBkaXJlY3QgY2FsY3VsYXRpb24gb2YgdGhlIHNpemUuIFByZXZpb3VzbHksIGl0IHdhcyBgc2l6ZW9mKHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSkgKyB1c2VtYXBfc2l6ZSgpYCwgYW5kIG5vdyBpdCdzIHVzaW5nIGBzdHJ1Y3Rfc2l6ZV90KHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZSwgcGFnZWJsb2NrX2ZsYWdzLCBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKSlgLlxuXG5UaGlzIGlzIHB1cmVseSBhYm91dCBjb2RlIGNsZWFubGluZXNzLiBJdCdzIG5vdCBhbHRlcmluZyBhbnkgY29yZSBmdW5jdGlvbmFsaXR5LiBMb29raW5nIGF0IGBtbS9zcGFyc2UuY2AgYmVmb3JlIGFuZCBhZnRlciwgdGhlIGxvZ2ljIHJlbWFpbnMgaWRlbnRpY2FsLiBUaGUgb2xkIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiBjYWxjdWxhdGVkIHRoZSBzaXplIGRpcmVjdGx5OlxuXG5gYGBjXG5zdGF0aWMgdW5zaWduZWQgbG9uZyB1c2VtYXBfc2l6ZSh2b2lkKVxue1xuXHRyZXR1cm4gQklUU19UT19MT05HUyhTRUNUSU9OX0JMT0NLRkxBR1NfQklUUykgKiBzaXplb2YodW5zaWduZWQgbG9uZyk7XG59XG5cbnNpemVfdCBtZW1fc2VjdGlvbl91c2FnZV9zaXplKHZvaWQpXG57XG5cdHJldHVybiBzaXplb2Yoc3RydWN0IG1lbV9zZWN0aW9uX3VzYWdlKSArIHVzZW1hcF9zaXplKCk7XG59XG5gYGBcblxuQW5kIHBvc3QtcGF0Y2g6XG5cbmBgYGNcbnN0YXRpYyBpbmxpbmUgc2l6ZV90IG1lbV9zZWN0aW9uX3VzYWdlX3NpemUodm9pZClcbntcblx0cmV0dXJuIHN0cnVjdF9zaXplX3Qoc3RydWN0IG1lbV9zZWN0aW9uX3VzYWdlLCBwYWdlYmxvY2tfZmxhZ3MsXG5cdFx0XHQgICAgIEJJVFNfVE9fTE9OR1MoU0VDVElPTl9CTE9DS0ZMQUdTX0JJVFMpKTtcbn1cbmBgYFxuXG5Ob3csIGBzdHJ1Y3Rfc2l6ZV90KHR5cGUsIG1lbWJlciwgY291bnQpYCBleHBhbmRzIHRvIGBzaXplb2YodHlwZSkgKyBjb3VudCAqIHNpemVvZih0eXBlLVx1MDAzZW1lbWJlcilgLiBIZXJlLCBgdHlwZWAgaXMgYHN0cnVjdCBtZW1fc2VjdGlvbl91c2FnZWAsIGBtZW1iZXJgIGlzIGBwYWdlYmxvY2tfZmxhZ3NgLCB3aGljaCBpcyBhbiBhcnJheSBvZiBgdW5zaWduZWQgbG9uZ2AsIGFuZCBgY291bnRgIGlzIGBCSVRTX1RPX0xPTkdTKFNFQ1RJT05fQkxPQ0tGTEFHU19CSVRTKWAuICBTbywgYGNvdW50ICogc2l6ZW9mKHVuc2lnbmVkIGxvbmcpYCBpcywgaW4gZmFjdCwgdGhlIHNhbWUgYXMgdGhlIG9sZCBgdXNlbWFwX3NpemUoKWAuICBBbmQgdGhlIGJhc2UgYHNpemVvZihzdHJ1Y3QgbWVtX3NlY3Rpb25fdXNhZ2UpYCByZW1haW5zIHRoZSBiYXNlLiBJdCdzIHRoZSBzYW1lIG1hdGgsIGp1c3QgZXhwcmVzc2VkIGRpZmZlcmVudGx5LiBUaGVyZSdzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgY29kZSBwYXRocywgbm8gYWx0ZXJlZCBiZWhhdmlvciwgaXQncyBqdXN0IGFib3V0IHRoZSBwcmVzZW50YXRpb24uXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCB0aGVyZSdzIG5vIGFkZGVkIHZhbHVlIGluIGZ1enppbmcgdGhpcyBjaGFuZ2UuIEknbGwgZmxhZyBgV29ydGhGdXp6aW5nYCBhcyBgZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjY2MywiT3V0cHV0VG9rZW5zIjo4OSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ3NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQwMzoxODowOS4zNTAzNzA1NjZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGlzIGEgcHVyZWx5IGNvc21ldGljIHJlZmFjdG9yaW5nIHRoYXQgbW92ZXMgdGhlIGBtZW1fc2VjdGlvbl91c2FnZV9zaXplYCBmdW5jdGlvbiB0byBhIGhlYWRlciBmaWxlIGFuZCBzaW1wbGlmaWVzIGl0cyBzaXplIGNhbGN1bGF0aW9uIHVzaW5nIHRoZSBgc3RydWN0X3NpemVfdGAgbWFjcm8uIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgZnVuY3Rpb25hbCBjaGFuZ2VzIG9yIG5ldyByZWFjaGFibGUgY29kZSBwYXRocyB0aGF0IHJlcXVpcmUgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowww6jh[1] Phase: Running StartedAt: 2026-08-05 03:18:20 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowww6jh[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-08-05 03:18:20 +0000 UTC FinishedAt: 2026-08-05 03:18:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}