Name: series-workflowhzzv6 Phase: Succeeded StartedAt: 2026-07-08 17:26:44 +0000 UTC FinishedAt: 2026-07-08 18:49:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[0] Phase: Succeeded StartedAt: 2026-07-08 17:26:44 +0000 UTC FinishedAt: 2026-07-08 18:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[0].run-triage Phase: Succeeded StartedAt: 2026-07-08 17:26:44 +0000 UTC FinishedAt: 2026-07-08 18:21:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "49c37c2b-9795-42a4-8e22-5a4f58801a69" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_cfg80211_connect", "brcmf_cfg80211_start_ap", "brcmf_p2p_send_action_frame" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfY2ZnODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZjhkOWMzZGU3ZmM4NWJlYzUwNjkwNGM1MTMwOWE2NWU5NWUxMWQ2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxODoxOTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA0YjcwODQ1ZTFhMjY0My4uZDYxYzNlMDNhMTA2YTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC04LDYgJiM0Mzs4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGxpbmsuaFx1MDAzZVxuQEAgLTIxNTQsNiAmIzQzOzIxNTUsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XG4gXHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6XG4mIzQzO1x0XHRcdHZhbCA9IFdGQV9BVVRIX0RQUDtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7aW52YWxpZCBha20gc3VpdGUgKCVkKVxcblwmIzM0OyxcbiBcdFx0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0pO1xuQEAgLTI0NjYsNDMgJiM0MzsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdGdvdG8gZG9uZTtcbiBcdH1cbiBcbi1cdGlmIChzbWUtXHUwMDNlY3J5cHRvLnBzayBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRvbmU7XG4tXHRcdH1cbi1cdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXFxuXCYjMzQ7KTtcbi1cdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbi1cdH1cbi1cbi1cdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbi1cdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG4tXHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCYjMzQ7c3VwX3dwYVwmIzM0OywgMSk7XG4tXHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXG5cJiMzNDspO1xuLVx0XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpIHtcbiYjNDM7XHRcdHUzMiBha20gPSBzbWUtXHUwMDNlY3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS1cdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA6IDA7XG4mIzQzO1x0XHRib29sIGlzX3NhZV9ha20gPSBha20gPT0gV0xBTl9BS01fU1VJVEVfU0FFIHx8XG4mIzQzO1x0XHRcdGFrbSA9PSBXTEFOX0FLTV9TVUlURV9GVF9PVkVSX1NBRTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2ICFpc19zYWVfYWttIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4mIzQzO1x0XHRcdGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9XG4mIzQzO1x0XHRcdFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbiYjNDM7XHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xuIFx0XHR9XG4tXHR9XG4tXG4tXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXG4tXHRcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXHUwMDNlY3J5cHRvLnBzayxcbi1cdFx0XHRcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcbi1cdGVsc2UgaWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4tXHRcdC8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqL1xuLVx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDt3cGFpZVwmIzM0OywgTlVMTCwgMCk7XG4tXHRcdGlmIChlcnIpIHtcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXFxuXCYjMzQ7KTtcbi1cdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4mIzQzO1x0XHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuJiM0MztcdFx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwmIzM0O3N1cF93cGFcJiMzNDssIDEpO1xuJiM0MztcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCYjMzQ7c3VwX3dwYVwmIzM0OywgMCk7XG4gXHRcdH1cbi1cdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuLVx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4mIzQzO1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXG4gXHRcdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4mIzQzO1x0XHRlbHNlIGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0IHNtZS1cdTAwM2VjcnlwdG8uc2FlX3B3ZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkge1xuJiM0MztcdFx0XHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cbiYjNDM7XHRcdFx0aWYgKGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwmIzM0O3dwYWllXCYjMzQ7LCBOVUxMLCAwKSkge1xuJiM0MztcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2ZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRlcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgXHUwMDI2c21lLVx1MDAzZWNyeXB0byk7XG4mIzQzO1x0XHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBzbWUtXHUwMDNlY3J5cHRvLnBzaylcbiYjNDM7XHRcdFx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdGdvdG8gZG9uZTtcbiBcdH1cbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gZG9uZTtcbi1cbiBcdC8qIEpvaW4gd2l0aCBzcGVjaWZpYyBCU1NJRCBhbmQgY2FjaGVkIFNTSURcbiBcdCAqIElmIFNTSUQgaXMgemVybyBqb2luIGJhc2VkIG9uIEJTU0lEIG9ubHlcbiBcdCAqL1xuQEAgLTQ1MTksNiAmIzQzOzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSlcbiBcdHJldHVybiAobWVtY21wKG91aSwgV1BBX09VSSwgVExWX09VSV9MRU4pID09IDApO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfZHBwX3N1aXRlKHU4ICpvdWkpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKG91aSkgPT0gV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgczMyXG4gYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXG5AQCAtNDYzMiw0MiAmIzQzOzQ2NDgsNDcgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjb3VudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFicmNtZl92YWxpZF93cGFfb3VpKFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xuJiM0MztcdFx0aWYgKGJyY21mX3ZhbGlkX2RwcF9zdWl0ZShcdTAwMjZkYXRhW29mZnNldF0pKSB7XG4mIzQzO1x0XHRcdHdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDtcbiYjNDM7XHRcdFx0b2Zmc2V0ICYjNDM7PSBUTFZfT1VJX0xFTjtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbiYjNDM7XHRcdFx0b2Zmc2V0ICYjNDM7PSBUTFZfT1VJX0xFTjtcbiYjNDM7XHRcdFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX05PTkU6XG4mIzQzO1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX05PTkVcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9VTlNQRUNJRklFRDpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fVU5TUEVDSUZJRURcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGlzX3Jzbl9pZSA/XG4mIzQzO1x0XHRcdFx0XHQod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XG4mIzQzO1x0XHRcdFx0XHQod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fUFNLOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9QU0tcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XG4mIzQzO1x0XHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9NRlBfUFNLXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX1NIQTI1Nl8xWDpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTUZQXzFYXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfMVhfU0hBMjU2O1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fU0FFOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9TQUVcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0ludmFsaWQga2V5IG1nbXQgaW5mb1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtpbnZhbGlkIE9VSVxcblwmIzM0Oyk7XG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4tXHRcdG9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47XG4tXHRcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XG4tXHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9OT05FXFxuXCYjMzQ7KTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1VOU1BFQ0lGSUVEXFxuXCYjMzQ7KTtcbi1cdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XG4tXHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1BTSzpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fUFNLXFxuXCYjMzQ7KTtcbi1cdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTUZQX1BTS1xcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX01GUF8xWFxcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1Njtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1NBRTpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fU0FFXFxuXCYjMzQ7KTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbi1cdFx0XHRicmVhaztcbi1cdFx0ZGVmYXVsdDpcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cXG5cJiMzNDspO1xuLVx0XHR9XG4gXHRcdG9mZnNldCYjNDM7JiM0Mzs7XG4gXHR9XG4gXG5AQCAtNDY4NywxMCAmIzQzOzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoISh3cGFfYXV0aCBcdTAwMjYgKFdQQTJfQVVUSF9QU0tfU0hBMjU2IHxcbiBcdFx0XHRcdFx0XHQgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfFxuJiM0MztcdFx0XHRcdFx0XHQgIFdGQV9BVVRIX0RQUCB8XG4gXHRcdFx0XHRcdFx0ICBXUEEzX0FVVEhfU0FFX1BTSykpKSB7XG4gXHRcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0XHRcdH1cbiYjNDM7XG4gXHRcdFx0XHQvKiBGaXJtd2FyZSBoYXMgcmVxdWlyZW1lbnQgdGhhdCBXUEEyX0FVVEhfUFNLL1xuIFx0XHRcdFx0ICogV1BBMl9BVVRIX1VOU1BFQ0lGSUVEIGJlIHNldCwgaWYgU0hBMjU2IE9VSVxuIFx0XHRcdFx0ICogaXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJzbiBpZS5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbmluZGV4IDZlMGM5MGY0NzE4YjU4Li4yYzFmNTJlZDUxMzgwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5AQCAtNiw2ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2JyY211X3dpZmkuaFx1MDAzZVxuQEAgLTQ0LDkgJiM0Mzs0NSw2IEBAXG4gXG4gI2RlZmluZSBCUkNNRl9TQ0JfVElNRU9VVF9WQUxVRVx0MjBcbiBcbi0jZGVmaW5lIFAyUF9WRVJcdFx0XHQ5XHQvKiBQMlAgdmVyc2lvbjogOT1XaUZpIFAyUCB2MS4wICovXG4tI2RlZmluZSBQMlBfUFVCX0FGX0NBVEVHT1JZXHQweDA0XG4tI2RlZmluZSBQMlBfUFVCX0FGX0FDVElPTlx0MHgwOVxuICNkZWZpbmUgUDJQX0FGX0NBVEVHT1JZXHRcdDB4N2ZcbiAjZGVmaW5lIFAyUF9PVUlcdFx0XHRcJiMzNDtcXHg1MFxceDZGXFx4OUFcJiMzNDtcdC8qIFAyUCBPVUkgKi9cbiAjZGVmaW5lIFAyUF9PVUlfTEVOXHRcdDNcdFx0LyogUDJQIE9VSSBsZW5ndGggKi9cbkBAIC0xNDMsMTAgJiM0MzsxNDEsMTAgQEAgc3RydWN0IGJyY21mX3AycF9zY2FuX2xlIHtcbiAvKipcbiAgKiBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgLSBXaUZpIFAyUCBQdWJsaWMgQWN0aW9uIEZyYW1lXG4gICpcbi0gKiBAY2F0ZWdvcnk6IFAyUF9QVUJfQUZfQ0FURUdPUllcbi0gKiBAYWN0aW9uOiBQMlBfUFVCX0FGX0FDVElPTlxuJiM0MzsgKiBAY2F0ZWdvcnk6IFdMQU5fQ0FURUdPUllfUFVCTElDXG4mIzQzOyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUNcbiAgKiBAb3VpOiBQMlBfT1VJXG4tICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFAyUF9WRVJcbiYjNDM7ICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxuICAqIEBzdWJ0eXBlOiBPVUkgc3VidHlwZSAtIFAyUF9UWVBFXypcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yc3AgdHJhbnNhY3Rpb25cbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxuQEAgLTE2Niw3ICYjNDM7MTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHtcbiAgKlxuICAqIEBjYXRlZ29yeTogUDJQX0FGX0NBVEVHT1JZXG4gICogQG91aTogT1VJIC0gUDJQX09VSVxuLSAqIEB0eXBlOiBPVUkgVHlwZSAtIFAyUF9WRVJcbiYjNDM7ICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXG4gICogQHN1YnR5cGU6IE9VSSBTdWJ0eXBlIC0gUDJQX0FGXypcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yZXNwIHRyYW5hY3Rpb25cbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxuQEAgLTIyOCwxMCAmIzQzOzIyNiwzOCBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbiBcdGlmIChmcmFtZV9sZW4gXHUwMDNjIHNpemVvZigqcGFjdF9mcm0pKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gUDJQX1BVQl9BRl9DQVRFR09SWSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gUDJQX1BVQl9BRl9BQ1RJT04gXHUwMDI2XHUwMDI2XG4tXHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gUDJQX1ZFUiBcdTAwMjZcdTAwMjZcbi1cdCAgICBtZW1jbXAocGFjdF9mcm0tXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcbiYjNDM7XHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLlxuJiM0MzsgKlxuJiM0MzsgKiBAZnJhbWU6IGFjdGlvbiBmcmFtZSBkYXRhLlxuJiM0MzsgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuXG4mIzQzOyAqXG4mIzQzOyAqIERldGVybWluZSBpZiBhY3Rpb24gZnJhbWUgaXMgZHBwIHB1YmxpYyBhY3Rpb24gdHlwZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICpwYWN0X2ZybTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFmcmFtZSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7XG4mIzQzO1x0aWYgKGZyYW1lX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSkgLSAxKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9EUFAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtMjU3LDcgJiM0MzsyODMsNyBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gUDJQX0FGX0NBVEVHT1JZIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGFjdF9mcm0tXHUwMDNldHlwZSAgPT0gUDJQX1ZFUiBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgYWN0X2ZybS1cdTAwM2V0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXHUwMDI2XHUwMDI2XG4gXHQgICAgbWVtY21wKGFjdF9mcm0tXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtMTI4MSw2ICYjNDM7MTMwNyw5IEBAIHN0YXRpYyBzMzIgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gXG4gXHR2aWYgPSBwMnAtXHUwMDNlYnNzX2lkeFtQMlBBUElfQlNTQ0ZHX0RFVklDRV0udmlmO1xuJiM0MztcdGlmICghdmlmKVxuJiM0MztcdFx0dmlmID0gcDJwLVx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19QUklNQVJZXS52aWY7XG4mIzQzO1xuIFx0ZXJyID0gYnJjbWZfZmlsX2Jzc2NmZ19kYXRhX3NldCh2aWYtXHUwMDNlaWZwLCBcJiMzNDthY3RmcmFtZV9hYm9ydFwmIzM0OywgXHUwMDI2aW50X3ZhbCxcbiBcdFx0XHRcdFx0c2l6ZW9mKHMzMikpO1xuIFx0aWYgKGVycilcbkBAIC0xNzg5LDcgJiM0MzsxODE4LDkgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAoYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4tXHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4mIzQzO1x0XHRcdFx0XHQgICBhY3Rpb25fZnJhbWVfbGVuKSB8fFxuJiM0MztcdFx0ICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS1cdTAwM2VkYXRhLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4gXHRcdC8qIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuIGl0IHdpbGwgYmUgKi9cbiBcdFx0Lyogc2VudCB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uICAgICAqL1xuIFx0fSBlbHNlIHtcbkBAIC0xODI2LDYgJiM0MzsxODU3LDcgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdC8qIHZhbGlkYXRlIGNoYW5uZWwgYW5kIHAycCBpZXMgKi9cbiBcdGlmIChjb25maWdfYWZfcGFyYW1zLnNlYXJjaF9jaGFubmVsIFx1MDAyNlx1MDAyNlxuIFx0ICAgIElTX1AyUF9TT0NJQUxfQ0hBTk5FTChsZTMyX3RvX2NwdShhZl9wYXJhbXMtXHUwMDNlY2hhbm5lbCkpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwMnAtXHUwMDNlYnNzX2lkeFtQMlBBUElfQlNTQ0ZHX0RFVklDRV0udmlmIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHAycC1cdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYtXHUwMDNlc2F2ZWRfaWUucHJvYmVfcmVxX2llX2xlbikge1xuIFx0XHRhZnhfaGRsID0gXHUwMDI2cDJwLVx1MDAzZWFmeF9oZGw7XG4gXHRcdGFmeF9oZGwtXHUwMDNlcGVlcl9saXN0ZW5fY2hhbiA9IGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cdTAwM2VjaGFubmVsKTtcbkBAIC0yNTQzLDQgJiM0MzsyNTc1LDMgQEAgdm9pZCBicmNtZl9wMnBfZGV0YWNoKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwKVxuIFx0LyoganVzdCBzZXQgaXQgYWxsIHRvIHplcm8gKi9cbiBcdG1lbXNldChwMnAsIDAsIHNpemVvZigqcDJwKSk7XG4gfVxuLVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuaW5kZXggNzU1MmJkYjkxOTkxY2UuLmM0NjUyMDhjNDMzMTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4mIzQzOyNkZWZpbmUgV0ZBX0FVVEhfRFBQXHRcdDB4MjAwMDAwIC8qIFdGQSBEUFAgQVVUSCAqL1xuJiM0MztcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTlx0XHQyMzQ3XG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOXHRcdDIzNDZcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9jZmc4MDIxMV9jb25uZWN0JiMzNDssCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX3N0YXJ0X2FwJiMzNDssCiAgICAmIzM0O2JyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBhbmQgYWN0aW9uIGZyYW1lcyBpbiB0aGUgQnJvYWRjb20gYnJjbWZtYWMgZHJpdmVyLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGxvZ2ljLCBBUCBzZWN1cml0eSBjb25maWd1cmF0aW9uLCBhbmQgUDJQIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZjhkOWMzZGU3ZmM4NWJlYzUwNjkwNGM1MTMwOWE2NWU5NWUxMWQ2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxODoxOTo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKaW5kZXggNGI3MDg0NWUxYTI2NDMuLmQ2MWMzZTAzYTEwNmE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtOCw2ICYjNDM7OCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXRoZXJkZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdm1hbGxvYy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9jZmc4MDIxMS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRsaW5rLmgmZ3Q7CkBAIC0yMTU0LDYgJiM0MzsyMTU1LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSkKIAkJCXZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7CiAJCQlwcm9maWxlLSZndDtpc19mdCA9IHRydWU7CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDoKJiM0MzsJCQl2YWwgPSBXRkFfQVVUSF9EUFA7CiYjNDM7CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicGh5X2VycihkcnZyLCAmIzM0O2ludmFsaWQgYWttIHN1aXRlICglZClcbiYjMzQ7LAogCQkJCSBzbWUtJmd0O2NyeXB0by5ha21fc3VpdGVzWzBdKTsKQEAgLTI0NjYsNDMgJiM0MzsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCWdvdG8gZG9uZTsKIAl9CiAKLQlpZiAoc21lLSZndDtjcnlwdG8ucHNrICZhbXA7JmFtcDsKLQkgICAgcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7Ci0JCWlmIChXQVJOX09OKHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBkb25lOwotCQl9Ci0JCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXG4mIzM0Oyk7Ci0JCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLOwotCX0KLQotCWlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7Ci0JCS8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqLwotCQllcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsICYjMzQ7c3VwX3dwYSYjMzQ7LCAxKTsKLQkJaWYgKGVyciAmbHQ7IDApIHsKLQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XG4mIzM0Oyk7Ci0JCQlnb3RvIGRvbmU7CiYjNDM7CWlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSkgewomIzQzOwkJdTMyIGFrbSA9IHNtZS0mZ3Q7Y3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS0mZ3Q7Y3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwOwomIzQzOwkJYm9vbCBpc19zYWVfYWttID0gYWttID09IFdMQU5fQUtNX1NVSVRFX1NBRSB8fAomIzQzOwkJCWFrbSA9PSBXTEFOX0FLTV9TVUlURV9GVF9PVkVSX1NBRTsKJiM0MzsKJiM0MzsJCWlmIChzbWUtJmd0O2NyeXB0by5wc2sgJmFtcDsmYW1wOyAhaXNfc2FlX2FrbSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7CiYjNDM7CQkJaWYgKFdBUk5fT04ocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9CiYjNDM7CQkJCSAgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7CiYjNDM7CQkJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gZG9uZTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJjbWZfZGJnKElORk8sICYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcbiYjMzQ7KTsKJiM0MzsJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKIAkJfQotCX0KLQotCWlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spCi0JCWVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtJmd0O2NyeXB0by5wc2ssCi0JCQkJICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pOwotCWVsc2UgaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewotCQkvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi8KLQkJZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDt3cGFpZSYjMzQ7LCBOVUxMLCAwKTsKLQkJaWYgKGVycikgewotCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXG4mIzM0Oyk7Ci0JCQlnb3RvIGRvbmU7CiYjNDM7CQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewomIzQzOwkJCS8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqLwomIzQzOwkJCWVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgJiMzNDtzdXBfd3BhJiMzNDssIDEpOwomIzQzOwkJCWlmIChlcnIgJmx0OyAwKSB7CiYjNDM7CQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XG4mIzM0Oyk7CiYjNDM7CQkJCWdvdG8gZG9uZTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgJiMzNDtzdXBfd3BhJiMzNDssIDApOwogCQl9Ci0JCWVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCAmYW1wO3NtZS0mZ3Q7Y3J5cHRvKTsKLQkJaWYgKCFlcnIgJmFtcDsmYW1wOyBzbWUtJmd0O2NyeXB0by5wc2spCiYjNDM7CQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKQogCQkJZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS0mZ3Q7Y3J5cHRvLnBzaywKIAkJCQkJICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pOwomIzQzOwkJZWxzZSBpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFICZhbXA7JmFtcDsKJiM0MzsJCQkgc21lLSZndDtjcnlwdG8uc2FlX3B3ZCAmYW1wOyZhbXA7CiYjNDM7CQkJIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkgewomIzQzOwkJCS8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqLwomIzQzOwkJCWlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCAmIzM0O3dwYWllJiMzNDssIE5VTEwsIDApKSB7CiYjNDM7CQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxuJiMzNDspOwomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQkJfQomIzQzOwkJCWVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCAmYW1wO3NtZS0mZ3Q7Y3J5cHRvKTsKJiM0MzsJCQlpZiAoIWVyciAmYW1wOyZhbXA7IHNtZS0mZ3Q7Y3J5cHRvLnBzaykKJiM0MzsJCQkJZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS0mZ3Q7Y3J5cHRvLnBzaywKJiM0MzsJCQkJCQkgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7CiYjNDM7CQl9CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCWdvdG8gZG9uZTsKIAl9Ci0JaWYgKGVycikKLQkJZ290byBkb25lOwotCiAJLyogSm9pbiB3aXRoIHNwZWNpZmljIEJTU0lEIGFuZCBjYWNoZWQgU1NJRAogCSAqIElmIFNTSUQgaXMgemVybyBqb2luIGJhc2VkIG9uIEJTU0lEIG9ubHkKIAkgKi8KQEAgLTQ1MTksNiAmIzQzOzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSkKIAlyZXR1cm4gKG1lbWNtcChvdWksIFdQQV9PVUksIFRMVl9PVUlfTEVOKSA9PSAwKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGJyY21mX3ZhbGlkX2RwcF9zdWl0ZSh1OCAqb3VpKQomIzQzO3sKJiM0MzsJcmV0dXJuIGdldF91bmFsaWduZWRfYmUzMihvdWkpID09IFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA7CiYjNDM7fQomIzQzOwogc3RhdGljIHMzMgogYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsCkBAIC00NjMyLDQyICYjNDM7NDY0OCw0NyBAQCBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsCiAJCWdvdG8gZXhpdDsKIAl9CiAJZm9yIChpID0gMDsgaSAmbHQ7IGNvdW50OyBpJiM0MzsmIzQzOykgewotCQlpZiAoIWJyY21mX3ZhbGlkX3dwYV9vdWkoJmFtcDtkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHsKJiM0MzsJCWlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoJmFtcDtkYXRhW29mZnNldF0pKSB7CiYjNDM7CQkJd3BhX2F1dGggfD0gV0ZBX0FVVEhfRFBQOwomIzQzOwkJCW9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47CiYjNDM7CQl9IGVsc2UgaWYgKGJyY21mX3ZhbGlkX3dwYV9vdWkoJmFtcDtkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHsKJiM0MzsJCQlvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOOwomIzQzOwkJCXN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7CiYjNDM7CQkJY2FzZSBSU05fQUtNX05PTkU6CiYjNDM7CQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX05PTkVcbiYjMzQ7KTsKJiM0MzsJCQkJd3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9VTlNQRUNJRklFRFxuJiMzNDspOwomIzQzOwkJCQlpc19yc25faWUgPwomIzQzOwkJCQkJKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOgomIzQzOwkJCQkJKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1BTSzoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fUFNLXG4mIzM0Oyk7CiYjNDM7CQkJCWlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6CiYjNDM7CQkJCQkgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9NRlBfUFNLXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2OwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQljYXNlIFJTTl9BS01fU0hBMjU2XzFYOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9NRlBfMVhcbiYjMzQ7KTsKJiM0MzsJCQkJd3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1NBRToKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fU0FFXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQlkZWZhdWx0OgomIzQzOwkJCQlicGh5X2VycihkcnZyLCAmIzM0O0ludmFsaWQga2V5IG1nbXQgaW5mb1xuJiMzNDspOwomIzQzOwkJCX0KJiM0MzsJCX0gZWxzZSB7CiAJCQllcnIgPSAtRUlOVkFMOwogCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtpbnZhbGlkIE9VSVxuJiMzNDspOwogCQkJZ290byBleGl0OwogCQl9Ci0JCW9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47Ci0JCXN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7Ci0JCWNhc2UgUlNOX0FLTV9OT05FOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTk9ORVxuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6Ci0JCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9VTlNQRUNJRklFRFxuJiMzNDspOwotCQkJaXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOgotCQkJCSAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpOwotCQkJYnJlYWs7Ci0JCWNhc2UgUlNOX0FLTV9QU0s6Ci0JCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9QU0tcbiYjMzQ7KTsKLQkJCWlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6Ci0JCQkJICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spOwotCQkJYnJlYWs7Ci0JCWNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTUZQX1BTS1xuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7Ci0JCQlicmVhazsKLQkJY2FzZSBSU05fQUtNX1NIQTI1Nl8xWDoKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX01GUF8xWFxuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fU0FFOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fU0FFXG4mIzM0Oyk7Ci0JCQl3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSzsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cbiYjMzQ7KTsKLQkJfQogCQlvZmZzZXQmIzQzOyYjNDM7OwogCX0KIApAQCAtNDY4NywxMCAmIzQzOzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkJCSAqLwogCQkJCWlmICghKHdwYV9hdXRoICZhbXA7IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8CiAJCQkJCQkgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfAomIzQzOwkJCQkJCSAgV0ZBX0FVVEhfRFBQIHwKIAkJCQkJCSAgV1BBM19BVVRIX1NBRV9QU0spKSkgewogCQkJCQllcnIgPSAtRUlOVkFMOwogCQkJCQlnb3RvIGV4aXQ7CiAJCQkJfQomIzQzOwogCQkJCS8qIEZpcm13YXJlIGhhcyByZXF1aXJlbWVudCB0aGF0IFdQQTJfQVVUSF9QU0svCiAJCQkJICogV1BBMl9BVVRIX1VOU1BFQ0lGSUVEIGJlIHNldCwgaWYgU0hBMjU2IE9VSQogCQkJCSAqIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByc24gaWUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKaW5kZXggNmUwYzkwZjQ3MThiNTguLjJjMWY1MmVkNTEzODAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCkBAIC02LDYgJiM0Mzs2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9uZXRkZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ldGhlcmRldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3J0bmV0bGluay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvY2ZnODAyMTEuaCZndDsKIAogI2luY2x1ZGUgJmx0O2JyY211X3dpZmkuaCZndDsKQEAgLTQ0LDkgJiM0Mzs0NSw2IEBACiAKICNkZWZpbmUgQlJDTUZfU0NCX1RJTUVPVVRfVkFMVUUJMjAKIAotI2RlZmluZSBQMlBfVkVSCQkJOQkvKiBQMlAgdmVyc2lvbjogOT1XaUZpIFAyUCB2MS4wICovCi0jZGVmaW5lIFAyUF9QVUJfQUZfQ0FURUdPUlkJMHgwNAotI2RlZmluZSBQMlBfUFVCX0FGX0FDVElPTgkweDA5CiAjZGVmaW5lIFAyUF9BRl9DQVRFR09SWQkJMHg3ZgogI2RlZmluZSBQMlBfT1VJCQkJJiMzNDtceDUwXHg2Rlx4OUEmIzM0OwkvKiBQMlAgT1VJICovCiAjZGVmaW5lIFAyUF9PVUlfTEVOCQkzCQkvKiBQMlAgT1VJIGxlbmd0aCAqLwpAQCAtMTQzLDEwICYjNDM7MTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7CiAvKioKICAqIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAtIFdpRmkgUDJQIFB1YmxpYyBBY3Rpb24gRnJhbWUKICAqCi0gKiBAY2F0ZWdvcnk6IFAyUF9QVUJfQUZfQ0FURUdPUlkKLSAqIEBhY3Rpb246IFAyUF9QVUJfQUZfQUNUSU9OCiYjNDM7ICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQwomIzQzOyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMKICAqIEBvdWk6IFAyUF9PVUkKLSAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBQMlBfVkVSCiYjNDM7ICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUAogICogQHN1YnR5cGU6IE9VSSBzdWJ0eXBlIC0gUDJQX1RZUEVfKgogICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uCiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLgpAQCAtMTY2LDcgJiM0MzsxNjQsNyBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgewogICoKICAqIEBjYXRlZ29yeTogUDJQX0FGX0NBVEVHT1JZCiAgKiBAb3VpOiBPVUkgLSBQMlBfT1VJCi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSCiYjNDM7ICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQCiAgKiBAc3VidHlwZTogT1VJIFN1YnR5cGUgLSBQMlBfQUZfKgogICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcmVzcCB0cmFuYWN0aW9uCiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLgpAQCAtMjI4LDEwICYjNDM7MjI2LDM4IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKQogCWlmIChmcmFtZV9sZW4gJmx0OyBzaXplb2YoKnBhY3RfZnJtKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKHBhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBQMlBfUFVCX0FGX0NBVEVHT1JZICZhbXA7JmFtcDsKLQkgICAgcGFjdF9mcm0tJmd0O2FjdGlvbiA9PSBQMlBfUFVCX0FGX0FDVElPTiAmYW1wOyZhbXA7Ci0JICAgIHBhY3RfZnJtLSZndDtvdWlfdHlwZSA9PSBQMlBfVkVSICZhbXA7JmFtcDsKLQkgICAgbWVtY21wKHBhY3RfZnJtLSZndDtvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKQomIzQzOwlpZiAocGFjdF9mcm0tJmd0O2NhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDICZhbXA7JmFtcDsKJiM0MzsJICAgIHBhY3RfZnJtLSZndDthY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBwYWN0X2ZybS0mZ3Q7b3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQICZhbXA7JmFtcDsKJiM0MzsJICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS0mZ3Q7b3VpKSA9PSBXTEFOX09VSV9XRkEpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcmV0dXJuIGZhbHNlOwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLgomIzQzOyAqCiYjNDM7ICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS4KJiM0MzsgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuCiYjNDM7ICoKJiM0MzsgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKnBhY3RfZnJtOwomIzQzOwomIzQzOwlpZiAoIWZyYW1lKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlwYWN0X2ZybSA9IChzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKilmcmFtZTsKJiM0MzsJaWYgKGZyYW1lX2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUpIC0gMSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKHBhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBwYWN0X2ZybS0mZ3Q7YWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgJmFtcDsmYW1wOwomIzQzOwkgICAgcGFjdF9mcm0tJmd0O291aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX0RQUCAmYW1wOyZhbXA7CiYjNDM7CSAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tJmd0O291aSkgPT0gV0xBTl9PVUlfV0ZBKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTI1Nyw3ICYjNDM7MjgzLDcgQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBQMlBfQUZfQ0FURUdPUlkgJmFtcDsmYW1wOwotCSAgICBhY3RfZnJtLSZndDt0eXBlICA9PSBQMlBfVkVSICZhbXA7JmFtcDsKJiM0MzsJICAgIGFjdF9mcm0tJmd0O3R5cGUgID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCAmYW1wOyZhbXA7CiAJICAgIG1lbWNtcChhY3RfZnJtLSZndDtvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKQogCQlyZXR1cm4gdHJ1ZTsKIApAQCAtMTI4MSw2ICYjNDM7MTMwNyw5IEBAIHN0YXRpYyBzMzIgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKQogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwogCiAJdmlmID0gcDJwLSZndDtic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWY7CiYjNDM7CWlmICghdmlmKQomIzQzOwkJdmlmID0gcDJwLSZndDtic3NfaWR4W1AyUEFQSV9CU1NDRkdfUFJJTUFSWV0udmlmOwomIzQzOwogCWVyciA9IGJyY21mX2ZpbF9ic3NjZmdfZGF0YV9zZXQodmlmLSZndDtpZnAsICYjMzQ7YWN0ZnJhbWVfYWJvcnQmIzM0OywgJmFtcDtpbnRfdmFsLAogCQkJCQlzaXplb2YoczMyKSk7CiAJaWYgKGVycikKQEAgLTE3ODksNyAmIzQzOzE4MTgsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCQkJZ290byBleGl0OwogCQl9CiAJfSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtJmd0O2RhdGEsCi0JCQkJCSAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7CiYjNDM7CQkJCQkgICBhY3Rpb25fZnJhbWVfbGVuKSB8fAomIzQzOwkJICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS0mZ3Q7ZGF0YSwKJiM0MzsJCQkJCSAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkgewogCQkvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovCiAJCS8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi8KIAl9IGVsc2UgewpAQCAtMTgyNiw2ICYjNDM7MTg1Nyw3IEBAIGJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsCiAJLyogdmFsaWRhdGUgY2hhbm5lbCBhbmQgcDJwIGllcyAqLwogCWlmIChjb25maWdfYWZfcGFyYW1zLnNlYXJjaF9jaGFubmVsICZhbXA7JmFtcDsKIAkgICAgSVNfUDJQX1NPQ0lBTF9DSEFOTkVMKGxlMzJfdG9fY3B1KGFmX3BhcmFtcy0mZ3Q7Y2hhbm5lbCkpICZhbXA7JmFtcDsKJiM0MzsJICAgIHAycC0mZ3Q7YnNzX2lkeFtQMlBBUElfQlNTQ0ZHX0RFVklDRV0udmlmICZhbXA7JmFtcDsKIAkgICAgcDJwLSZndDtic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYtJmd0O3NhdmVkX2llLnByb2JlX3JlcV9pZV9sZW4pIHsKIAkJYWZ4X2hkbCA9ICZhbXA7cDJwLSZndDthZnhfaGRsOwogCQlhZnhfaGRsLSZndDtwZWVyX2xpc3Rlbl9jaGFuID0gbGUzMl90b19jcHUoYWZfcGFyYW1zLSZndDtjaGFubmVsKTsKQEAgLTI1NDMsNCAmIzQzOzI1NzUsMyBAQCB2b2lkIGJyY21mX3AycF9kZXRhY2goc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnApCiAJLyoganVzdCBzZXQgaXQgYWxsIHRvIHplcm8gKi8KIAltZW1zZXQocDJwLCAwLCBzaXplb2YoKnAycCkpOwogfQotCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmgKaW5kZXggNzU1MmJkYjkxOTkxY2UuLmM0NjUyMDhjNDMzMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oCkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpCiAKICNkZWZpbmUgV1BBM19BVVRIX1NBRV9QU0sJMHg0MDAwMAkvKiBTQUUgd2l0aCA0LXdheSBoYW5kc2hha2UgKi8KIAomIzQzOyNkZWZpbmUgV0ZBX0FVVEhfRFBQCQkweDIwMDAwMCAvKiBXRkEgRFBQIEFVVEggKi8KJiM0MzsKICNkZWZpbmUgRE9UMTFfREVGQVVMVF9SVFNfTEVOCQkyMzQ3CiAjZGVmaW5lIERPVDExX0RFRkFVTFRfRlJBR19MRU4JCTIzNDYKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzY4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbiBmb3IgYSBEUFAvU0FFIEVuaGFuY2VtZW50IGluIGJyY21mbWFjKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gYW5kIGFjdGlvbiBmcmFtZSBzdXBwb3J0IHdpdGhpbiB0aGUgQnJvYWRjb20gYGJyY21mbWFjYCBkcml2ZXIuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGNmZzgwMjExLmNgIGFuZCBgcDJwLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gaGFuZGxlIFNBRS9EUFAgYW5kIFBTSyBvZmZsb2FkIGxvZ2ljLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSB0byBhIHdpcmVsZXNzIGRyaXZlciwgc28gaXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGV2ZW4gcmVhY2ggdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gYGJyY21mbWFjYCBpcyBCcm9hZGNvbSYjMzk7cyBJRUVFODAyLjExbi9hYyBkcml2ZXIgZm9yIFBDSWUvU0RJTy9VU0IuIEx1Y2tpbHksIFVTQiBpcyBvZnRlbiBlbXVsYXRhYmxlLiBXZSBjb3VsZCB1c2UgYGR1bW15X2hjZGAgb3IsIGV2ZW4gYmV0dGVyLCBJIHJlbWVtYmVyIHN5emthbGxlciBoYXMgYSBVU0IgZnV6emVyIHNwZWNpZmljYWxseSBmb3IgdGhpcyBraW5kIG9mIHRoaW5nLiBTRElPIG1pZ2h0IGJlIHRyaWNraWVyLCBidXQgUENJZSBjYW4gYmUgZW11bGF0ZWQgYXMgd2VsbC4gVGhlIFVTQiBmdXp6ZXIgaXMga2V5IGhlcmUuIEl0IGNhbiBlbXVsYXRlIHdpcmVsZXNzIGRvbmdsZXMuIFRoaXMgaXMgZnVsbE1BQywgc28gaXQgaW50ZXJmYWNlcyBkaXJlY3RseSB3aXRoIGNmZzgwMjExLiBXZSBjYW4gZnV6eiBicmNtZm1hYyB0aHJvdWdoIFVTQiwgd2hpY2ggc3l6a2FsbGVyIHN1cHBvcnRzLiBJdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuCgpMZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGFmZmVjdHMuIEkgbmVlZCB0byBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzIG9uIHRoZXNlOgoKKiAgIGBicmNtZl9zZXRfa2V5X21nbXRgCiogICBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAKKiAgIGBicmNtZl92YWxpZF9kcHBfc3VpdGVgCiogICBgYnJjbWZfY29uZmlndXJlX3dwYWllYAoqICAgYGJyY21mX3AycF9pc19wdWJfYWN0aW9uYAoqICAgYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAKKiAgIGBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbmAKKiAgIGBicmNtZl9wMnBfYWJvcnRfYWN0aW9uX2ZyYW1lYAoqICAgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAKCkZvciBlbmFibGluZyB0aGUgZHJpdmVyLCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZXNlIGNvbmZpZ3Mgc2V0OiBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCBmb3IgdGhlIFVTQiBmdXp6aW5nLCBhbmQgYENGRzgwMjExYCwgb2YgY291cnNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY29uZmlybSBob3cgdGhvc2UgYXJlIHNldCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTItXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE0OmNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXHRib29sIFwmIzM0O1NESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNjkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbWluZyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gQnJvYWRjb20mIzM5O3MgZmlybXdhcmUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gYWRkIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIHRvIGBFbmFibGVDb25maWdzYC4gVGhhdCBjb3ZlcnMgdGhlIGNvcmUgTUFDIGFuZCB0aGUgVVNCLXNwZWNpZmljIGludGVyZmFjZS4gSSYjMzk7bSBhc3N1bWluZyB0aGUgb3RoZXIgUENJZSBhbmQgU0RJTyB2YXJpYW50cywgYEJSQ01GTUFDX1NESU9gIGFuZCBgQlJDTUZNQUNfUENJRWAsIGFyZSBoYW5kbGVkIGVsc2V3aGVyZSBvciBhcmUgbGVzcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgdGFzay4gSSYjMzk7bSBub3RpbmcgdGhlc2UgYXMgdGhpcyBpbmZvcm1hdGlvbiBtYXkgYmVjb21lIGltcG9ydGFudCBsYXRlciwgYXMgY29udGV4dC4KCk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBmdW5jdGlvbnMgd2l0aGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgb25lcyB0aGF0IGFyZSBzdGFuZGluZyBvdXQgcmlnaHQgbm93IGFyZTogYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFsbCBzZWVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQsIGNvbm5lY3Rpb24gaGFuZGxpbmcsIGFuZCBwb3RlbnRpYWxseSBQMlAgd2l0aCBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpLgoKSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjazogc2luY2UgYEJSQ01GTUFDYCBpcyB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLCBpdCBpbXBsaWNpdGx5IGJyaW5ncyBpbiBgQ0ZHODAyMTFgIGFzIGEgZGVwZW5kZW5jeS4gTm8gbmVlZCB0byBleHBsaWNpdGx5IGxpc3QgaXQuIFRoYXQgc2F2ZXMgYSBzdGVwLiBJJiMzOTttIGdvaW5nIHRvIHZlcmlmeSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIG5leHQgcGhhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY2ZnODAyMTFfY29ubmVjdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMzYzPXN0YXRpYyBzMzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjIzNjQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTIzNjUtXHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01OTU3PXN0YXRpYyBzdHJ1Y3QgY2ZnODAyMTFfb3BzIGJyY21mX2NmZzgwMjExX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01OTc0LVx0LnNldF9wb3dlcl9tZ210ID0gYnJjbWZfY2ZnODAyMTFfc2V0X3Bvd2VyX21nbXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1OTc1Olx0LmNvbm5lY3QgPSBicmNtZl9jZmc4MDIxMV9jb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTk3Ni1cdC5kaXNjb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02MTQ2PXN0YXRpYyB2b2lkIGJyY21mX2NsZWFyX2Fzc29jX2llcyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjE0Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2MTQ4Olx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYxNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjI5Nj1zdGF0aWMgczMyIGJyY21mX2dldF9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzAwLVx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Fzc29jX2llbGVuX2xlICphc3NvY19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjMwMTpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzAyLVx0c3RydWN0IGJyY21mX2NmZzgwMjExX2VkY2ZfYWNwYXJhbSBlZGNmX2FjcGFyYW1faW5mb1tFRENGX0FDX0NPVU5UXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02Mzc4PWJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzgzLVx0c3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2Mzg0Olx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYzODUtXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gY2ZnX3RvX3dpcGh5KGNmZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjQ1MT1icmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1Ni1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjQ1NzpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02NDU4LVx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9MjIwPXN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNS0vKiBhc3NvY2lhdGlvbiBpbmZvcm0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oOjIzNjpzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNy1cdHU4ICpyZXFfaWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9MzQyPXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0zNDktXHRzdHJ1Y3Qgd2xfY2ZnODAyMTFfYnNzX2luZm8gKmJzc19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6MzUwOlx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyBjb25uX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0zNTEtXHRzdHJ1Y3QgYnJjbWZfcG1rX2xpc3RfbGUgcG1rX2xpc3Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9NDMzPXN0YXRpYyBpbmxpbmUgc3RydWN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDo0MzQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjZmdfdG9fY29ubihzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtNDM1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU0NAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpLUZpIERyaXZlciBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBzZXQgb2YgZnVuY3Rpb25zLiBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgQnJvYWRjb20gV2ktRmkgZHJpdmVyLCBsaWtlbHkgQ0ZHODAyMTEtcmVsYXRlZCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBNeSBpbW1lZGlhdGUgZm9jdXMsIGFzIGFuIGV4cGVydCwgaXMgb24gaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoaW4gYSBzcGVjaWZpYyBjb250cm9sIGZsb3csIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHNlY3VyaXR5IGFuZCBwZWVyLXRvLXBlZXIgKFAyUCkgY29ubmVjdGlvbnMuCgpGaXJzdCwgd2UgaGF2ZSB0aGUgY29ubmVjdGlvbiBzZXR1cCAoYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgKSwga2V5IG1hbmFnZW1lbnQgKGBicmNtZl9zZXRfa2V5X21nbXRgKSwgYW5kIFdQQSBpbmZvcm1hdGlvbiBlbGVtZW50IGNvbmZpZ3VyYXRpb24gKGBicmNtZl9jb25maWd1cmVfd3BhaWVgKS4gU3RhbmRhcmQgc3R1ZmYsIGJ1dCB3ZSBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgdXNlZC4gVGhlbiwgd2UgaGF2ZSBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZSBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIGFzcGVjdCBpcyBpbnRlcmVzdGluZy4KClJpZ2h0LCBzbyBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYCBpcyBzdGF0aWMuIFRoYXQmIzM5O3MgYSBiaXQgb2YgYSByb2FkYmxvY2sgZm9yIGRpcmVjdCBhbmFseXNpcywgYXNzdW1pbmcgaXQmIzM5O3MgaW5saW5lZC4gVGhpcyBtZWFucyB3ZSBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIGNhbGwgc2l0ZXMgb2YgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAsIHdoaWNoIHNob3VsZCBnaXZlIG1lIGluc2lnaHQgaW50byBob3cgRFBQIGFjdGlvbnMgYXJlIGluaXRpYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIHRodXMgZXhwb3NlIHRoZSB1c2FnZSBvZiB0aGF0IGBzdGF0aWNgIGZ1bmN0aW9uIGluIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTUzNj1icmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU2Mjg6XHRcdGFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShjZmcsIGNmZ190b19uZGV2KGNmZyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI5LVx0XHRcdFx0XHRcdCAgYWZfcGFyYW1zKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM9MTcyOT1zdGF0aWMgYm9vbCBicmNtZl9wMnBfY2hlY2tfZHdlbGxfb3ZlcmZsb3codTMyIHJlcXVlc3RlZF9kd2VsbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0MC0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzQxOiAqIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSgpIC0gc2VuZCBhY3Rpb24gZnJhbWUgLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDItICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzQ3OmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0OC1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg9MTY4PWludCBicmNtZl9wMnBfbm90aWZ5X2FjdGlvbl90eF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcwLVx0XHRcdFx0XHR2b2lkICpkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaDoxNzE6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzItXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MjUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IEkmIzM5O20gdGhpbmtpbmcgaGVyZSwgZnJvbSBhIHRlY2huaWNhbCBwZXJzcGVjdGl2ZS4uLgoKKipFeHBsb3JpbmcgdGhlIFdMQU4gRHJpdmVyJiMzOTtzIENvbnRyb2wgUGxhbmUqKgoKUmlnaHQsIHNvIEkmIzM5O20gY3VycmVudGx5IG1hcHBpbmcgb3V0IHRoZSBjb250cm9sIHBsYW5lIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBCcm9hZGNvbSBXaUZpIGRyaXZlci4gSSYjMzk7dmUgbm90ZWQgdGhhdCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gR29vZCB0byBrbm93LiBBbmQgdGhlIGNvbm5lY3Rpb24gc2V0dXAgcm91dGluZSwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCB0aGF0JiMzOTtzIGFjY2Vzc2libGUgdG9vLiBOb3csIHRoZSBgYnJjbWZfc2V0X2tleV9tZ210YCBmdW5jdGlvbiwgdGhhdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGF0LCBpZiBpdCBpcyBzdGF0aWMsIHRoZW4gb25seSB0aGUgY29kZSBpbiB0aGlzIHNvdXJjZSBmaWxlIGNhbiBjYWxsIGl0LiBCZXN0IGNoZWNrIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBmaWxlLCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGludm9raW5nIGl0LiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgc2hlZCBsaWdodCBvbiB0aGUga2V5IG1hbmFnZW1lbnQgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTIwODc9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MjA4ODpicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2ND1icmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTI0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyNDYxOlx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYyLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQ4MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgV1BBIEtleSBNYW5hZ2VtZW50KioKCk9rYXksIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgQnJvYWRjb20gZHJpdmVyIGhhbmRsZXMga2V5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB3aXRoIFdQQS4gSSBzZWUgdGhhdCB0aGUgYGJyY21mX3NldF9rZXlfbWdtdGAgZnVuY3Rpb24gaXMgZ2V0dGluZyBjYWxsZWQsIGFuZCBhIHF1aWNrIGxvb2sgc2hvd3MgbWUgdGhhdCBpdCYjMzk7cyBiZWluZyB0cmlnZ2VyZWQgYnkgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLiBUaGF0IG1ha2VzIHNlbnNlOyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgaXMgd2hlcmUgeW91JiMzOTtkIGV4cGVjdCBrZXkgY29uZmlndXJhdGlvbiB0byBoYXBwZW4uIE5vdywgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAuLi50aGF0JiMzOTtzIHN0YXRpYywgc28gaXTigJlzIGxpa2VseSBpbnRlcm5hbCB0byBhIG1vZHVsZS4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgY2FsbGluZyAqaXQqLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBXUEEgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGlzIGJlaW5nIGNvbnN0cnVjdGVkIGFuZCBzZXQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgYnJjbWZfY29uZmlndXJlX3dwYWllYCB3aWxsIGdpdmUgbWUgY3JpdGljYWwgaW5zaWdodHMgaW50byB0aGUgb3ZlcmFsbCBXUEEgc2V0dXAgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY29uZmlndXJlX3dwYWllJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQ1Mzg9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00NTQwLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4ND1icmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTEwMy1cdFx0XHQvKiBXUEEgSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMDQ6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgd3BhX2llLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cdFx0XHQvKiBSU04gSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMTM6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgdG1wX2llLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMTQtXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyODMKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gU2VjdXJpdHkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgc2VjdXJpdHkgY29uZmlndXJhdGlvbi4gQW5kIGl0IGxvb2tzIGxpa2UgaXQgY2FsbHMgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRoZSBjYWxscyB0byBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YC4gS25vd2luZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBzZWN1cml0eSBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLiBUaGlzIGNvdWxkIGJlIGEgY3JpdGljYWwgcG9pbnQgb2YgZW50cnkgZm9yIHNlY3VyaXR5LXJlbGF0ZWQgcGFyYW1ldGVycywgYW5kIHBvdGVudGlhbGx5IGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4Mz1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUwODUtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9hcF9zZXR0aW5ncyAqc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcdFx0ZXJyID0gYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5KGlmcCwgc2V0dGluZ3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVx0XHRcdFx0XHRcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5NS1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5NjpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5Ny1cdFx0XHRnb3RvIGV4aXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUzMzU6XHRcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNi1cdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfSUZUWVBFX1AyUF9HTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM3LVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4Olx0XHRcdGJyY21mX2VycihcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzOS1cdFx0XHRnb3RvIGV4aXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzIwCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDM2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgYnJjbWZtYWMgRHJpdmVyKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIHBsYW4uIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGJyY21mbWFjIGRyaXZlciBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBmZXcga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gSSBzZWUgdGhhdCBgYnJjbWZfY2ZnODAyMTFfc3RhcnRfYXBgIGlzIGNhbGxpbmcgYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAsIHdoaWNoIGxvb2tzIGludGVyZXN0aW5nLiBBZGRpdGlvbmFsbHksIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYXJlIGFsc28gcHJpbWUgdGFyZ2V0cy4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY29yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgbmV3IERQUCBhbmQgYWN0aW9uIGZyYW1lIGZ1bmN0aW9uYWxpdHkuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgZ2V0dGluZyB0aGlzIHNldCB1cCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBidWlsZCBjb25maWd1cmF0aW9ucy4gSSYjMzk7dmUgbm90ZWQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAuIEdvb2QuIFRoZSBgQlJDTUZNQUNfVVNCYCBjb25maWcgbG9va3MgcGFydGljdWxhcmx5IHByb21pc2luZyBzaW5jZSBpdCBlbmFibGVzIHRoZSBVU0IgZHJpdmVyLCBtZWFuaW5nIEkgY2FuIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emVyLiBJdCBzaG91bGQgc2ltcGxpZnkgdGhlIGZ1enppbmcgcHJvY2VzcyBzaW5jZSB0aGUgdGFyZ2V0IGlzIGNvbm5lY3RlZCB0byB0aGUgaG9zdCB2aWEgVVNCIGVtdWxhdGlvbi4KClNpbmNlIGBDRkc4MDIxMWAgaXMgYWxyZWFkeSBpbXBsaWVkLCBJIGRvbiYjMzk7dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQgZXhwbGljaXRseS4gQW5kIGBXTEFOX0FLTV9TVUlURV9XRkFfRFBQYCBpcyBhIGNvbnN0YW50IHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhhdCBhdCB0aGUgbW9tZW50LgoKU28sIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCBwbGFuOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgZGVmaW5pdGVseS4KKiAgICoqRm9jdXMgU3ltYm9sczoqKgogICAgKiAgIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YAogICAgKiAgIGBicmNtZl9jZmc4MDIxMV9zdGFydF9hcGAKICAgICogICBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYAoqICAgKipFbmFibGUgQ29uZmlndXJhdGlvbnM6KioKICAgICogICBgQlJDTUZNQUNgCiAgICAqICAgYEJSQ01GTUFDX1VTQmAKClRoZSByZWFzb24gSSYjMzk7bSBkb2luZyB0aGlzIGlzIGJlY2F1c2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIERQUCBzdXBwb3J0IGFuZCBhY3Rpb24gZnJhbWUgaGFuZGxpbmcuIFRoaXMgYWx0ZXJzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5LCBhbmQgUDJQIGFjdGlvbiBmcmFtZXMuIEdpdmVuIHRoYXQsIGFuZCB0aGUgZWFzZSBvZiB1c2luZyBVU0IgZW11bGF0aW9uIGZvciBmdXp6aW5nIHRoaXMgZHJpdmVyLCBpdCYjMzk7cyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuIEl0IHNob3VsZCBiZSBhIGdvb2QgdGFyZ2V0IGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfY2ZnODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfY2ZnODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0NS41MTc3NDUzMDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTY1OTE3NTc3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX2NmZzgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBhbmQgYWN0aW9uIGZyYW1lcyBpbiB0aGUgQnJvYWRjb20gYnJjbWZtYWMgZHJpdmVyLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGxvZ2ljLCBBUCBzZWN1cml0eSBjb25maWd1cmF0aW9uLCBhbmQgUDJQIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0NS41MTc3NTA4ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTY5NTY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJmOGQ5YzNkZTdmYzg1YmVjNTA2OTA0YzUxMzA5YTY1ZTk1ZTExZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAxODoxOTo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuaW5kZXggNGI3MDg0NWUxYTI2NDMuLmQ2MWMzZTAzYTEwNmE1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvY2ZnODAyMTEuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuQEAgLTIxNTQsNiArMjE1NSw5IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXFxuIFxcdFxcdFxcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XFxuIFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZWlzX2Z0ID0gdHJ1ZTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDpcXG4rXFx0XFx0XFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xcbitcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImludmFsaWQgYWttIHN1aXRlICglZClcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBzbWUtXFx1MDAzZWNyeXB0by5ha21fc3VpdGVzWzBdKTtcXG5AQCAtMjQ2Niw0MyArMjQ3MCw1MCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChzbWUtXFx1MDAzZWNyeXB0by5wc2sgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xcbi1cXHRcXHRpZiAoV0FSTl9PTihwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xcbi1cXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHRcXHRnb3RvIGRvbmU7XFxuLVxcdFxcdH1cXG4tXFx0XFx0YnJjbWZfZGJnKElORk8sIFxcXCJ1c2luZyBQU0sgb2ZmbG9hZFxcXFxuXFxcIik7XFxuLVxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xcbi1cXHR9XFxuLVxcbi1cXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xcbi1cXHRcXHQvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi9cXG4tXFx0XFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcXFwic3VwX3dwYVxcXCIsIDEpO1xcbi1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0Z290byBkb25lO1xcbitcXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpIHtcXG4rXFx0XFx0dTMyIGFrbSA9IHNtZS1cXHUwMDNlY3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS1cXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwO1xcbitcXHRcXHRib29sIGlzX3NhZV9ha20gPSBha20gPT0gV0xBTl9BS01fU1VJVEVfU0FFIHx8XFxuK1xcdFxcdFxcdGFrbSA9PSBXTEFOX0FLTV9TVUlURV9GVF9PVkVSX1NBRTtcXG4rXFxuK1xcdFxcdGlmIChzbWUtXFx1MDAzZWNyeXB0by5wc2sgXFx1MDAyNlxcdTAwMjYgIWlzX3NhZV9ha20gXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xcbitcXHRcXHRcXHRpZiAoV0FSTl9PTihwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT1cXG4rXFx0XFx0XFx0XFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcXG4rXFx0XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4rXFx0XFx0XFx0XFx0Z290byBkb25lO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGJyY21mX2RiZyhJTkZPLCBcXFwidXNpbmcgUFNLIG9mZmxvYWRcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcXG4gXFx0XFx0fVxcbi1cXHR9XFxuLVxcbi1cXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxcbi1cXHRcXHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVxcdTAwM2VjcnlwdG8ucHNrLFxcbi1cXHRcXHRcXHRcXHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XFxuLVxcdGVsc2UgaWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xcbi1cXHRcXHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cXG4tXFx0XFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcIndwYWllXFxcIiwgTlVMTCwgMCk7XFxuLVxcdFxcdGlmIChlcnIpIHtcXG4tXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XFxuK1xcdFxcdFxcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xcbitcXHRcXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFxcXCJzdXBfd3BhXFxcIiwgMSk7XFxuK1xcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcXFwic3VwX3dwYVxcXCIsIDApO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcXHUwMDI2c21lLVxcdTAwM2VjcnlwdG8pO1xcbi1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBzbWUtXFx1MDAzZWNyeXB0by5wc2spXFxuK1xcdFxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXFxuIFxcdFxcdFxcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXFx1MDAzZWNyeXB0by5wc2ssXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcXG4rXFx0XFx0ZWxzZSBpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCBzbWUtXFx1MDAzZWNyeXB0by5zYWVfcHdkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpIHtcXG4rXFx0XFx0XFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXFxuK1xcdFxcdFxcdGlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcXFwid3BhaWVcXFwiLCBOVUxMLCAwKSkge1xcbitcXHRcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRlcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgXFx1MDAyNnNtZS1cXHUwMDNlY3J5cHRvKTtcXG4rXFx0XFx0XFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgc21lLVxcdTAwM2VjcnlwdG8ucHNrKVxcbitcXHRcXHRcXHRcXHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVxcdTAwM2VjcnlwdG8ucHNrLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0Z290byBkb25lO1xcbiBcXHR9XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gZG9uZTtcXG4tXFxuIFxcdC8qIEpvaW4gd2l0aCBzcGVjaWZpYyBCU1NJRCBhbmQgY2FjaGVkIFNTSURcXG4gXFx0ICogSWYgU1NJRCBpcyB6ZXJvIGpvaW4gYmFzZWQgb24gQlNTSUQgb25seVxcbiBcXHQgKi9cXG5AQCAtNDUxOSw2ICs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpXFxuIFxcdHJldHVybiAobWVtY21wKG91aSwgV1BBX09VSSwgVExWX09VSV9MRU4pID09IDApO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl92YWxpZF9kcHBfc3VpdGUodTggKm91aSlcXG4re1xcbitcXHRyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKG91aSkgPT0gV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDtcXG4rfVxcbitcXG4gc3RhdGljIHMzMlxcbiBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBicmNtZl92c190bHYgKndwYV9pZSxcXG5AQCAtNDYzMiw0MiArNDY0OCw0NyBAQCBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY291bnQ7IGkrKykge1xcbi1cXHRcXHRpZiAoIWJyY21mX3ZhbGlkX3dwYV9vdWkoXFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xcbitcXHRcXHRpZiAoYnJjbWZfdmFsaWRfZHBwX3N1aXRlKFxcdTAwMjZkYXRhW29mZnNldF0pKSB7XFxuK1xcdFxcdFxcdHdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDtcXG4rXFx0XFx0XFx0b2Zmc2V0ICs9IFRMVl9PVUlfTEVOO1xcbitcXHRcXHR9IGVsc2UgaWYgKGJyY21mX3ZhbGlkX3dwYV9vdWkoXFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xcbitcXHRcXHRcXHRvZmZzZXQgKz0gVExWX09VSV9MRU47XFxuK1xcdFxcdFxcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9OT05FOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX05PTkVcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1VOU1BFQ0lGSUVEXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0aXNfcnNuX2llID9cXG4rXFx0XFx0XFx0XFx0XFx0KHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxcbitcXHRcXHRcXHRcXHRcXHQod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Y2FzZSBSU05fQUtNX1BTSzpcXG4rXFx0XFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9QU0tcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxcbitcXHRcXHRcXHRcXHRcXHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcXG4rXFx0XFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9NRlBfUFNLXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF8xWFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fU0FFOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1NBRVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImludmFsaWQgT1VJXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0Z290byBleGl0O1xcbiBcXHRcXHR9XFxuLVxcdFxcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcXG4tXFx0XFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcXG4tXFx0XFx0Y2FzZSBSU05fQUtNX05PTkU6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTk9ORVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fVU5TUEVDSUZJRURcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XFxuLVxcdFxcdFxcdFxcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0Y2FzZSBSU05fQUtNX1BTSzpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9QU0tcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxcbi1cXHRcXHRcXHRcXHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9NRlBfUFNLXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF8xWFxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fU0FFOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1NBRVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0ZGVmYXVsdDpcXG4tXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcXFxuXFxcIik7XFxuLVxcdFxcdH1cXG4gXFx0XFx0b2Zmc2V0Kys7XFxuIFxcdH1cXG4gXFxuQEAgLTQ2ODcsMTAgKzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbiBcXHRcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0XFx0aWYgKCEod3BhX2F1dGggXFx1MDAyNiAoV1BBMl9BVVRIX1BTS19TSEEyNTYgfFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIFdGQV9BVVRIX0RQUCB8XFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgV1BBM19BVVRIX1NBRV9QU0spKSkge1xcbiBcXHRcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdFxcdFxcdH1cXG4rXFxuIFxcdFxcdFxcdFxcdC8qIEZpcm13YXJlIGhhcyByZXF1aXJlbWVudCB0aGF0IFdQQTJfQVVUSF9QU0svXFxuIFxcdFxcdFxcdFxcdCAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUlcXG4gXFx0XFx0XFx0XFx0ICogaXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJzbiBpZS5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuaW5kZXggNmUwYzkwZjQ3MThiNTguLjJjMWY1MmVkNTEzODAwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xcbkBAIC02LDYgKzYsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9jZmc4MDIxMS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2JyY211X3dpZmkuaFxcdTAwM2VcXG5AQCAtNDQsOSArNDUsNiBAQFxcbiBcXG4gI2RlZmluZSBCUkNNRl9TQ0JfVElNRU9VVF9WQUxVRVxcdDIwXFxuIFxcbi0jZGVmaW5lIFAyUF9WRVJcXHRcXHRcXHQ5XFx0LyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqL1xcbi0jZGVmaW5lIFAyUF9QVUJfQUZfQ0FURUdPUllcXHQweDA0XFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT05cXHQweDA5XFxuICNkZWZpbmUgUDJQX0FGX0NBVEVHT1JZXFx0XFx0MHg3ZlxcbiAjZGVmaW5lIFAyUF9PVUlcXHRcXHRcXHRcXFwiXFxcXHg1MFxcXFx4NkZcXFxceDlBXFxcIlxcdC8qIFAyUCBPVUkgKi9cXG4gI2RlZmluZSBQMlBfT1VJX0xFTlxcdFxcdDNcXHRcXHQvKiBQMlAgT1VJIGxlbmd0aCAqL1xcbkBAIC0xNDMsMTAgKzE0MSwxMCBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3NjYW5fbGUge1xcbiAvKipcXG4gICogc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIC0gV2lGaSBQMlAgUHVibGljIEFjdGlvbiBGcmFtZVxcbiAgKlxcbi0gKiBAY2F0ZWdvcnk6IFAyUF9QVUJfQUZfQ0FURUdPUllcXG4tICogQGFjdGlvbjogUDJQX1BVQl9BRl9BQ1RJT05cXG4rICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQ1xcbisgKiBAYWN0aW9uOiBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDXFxuICAqIEBvdWk6IFAyUF9PVUlcXG4tICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFAyUF9WRVJcXG4rICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxcbiAgKiBAc3VidHlwZTogT1VJIHN1YnR5cGUgLSBQMlBfVFlQRV8qXFxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3JzcCB0cmFuc2FjdGlvblxcbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxcbkBAIC0xNjYsNyArMTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHtcXG4gICpcXG4gICogQGNhdGVnb3J5OiBQMlBfQUZfQ0FURUdPUllcXG4gICogQG91aTogT1VJIC0gUDJQX09VSVxcbi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSXFxuKyAqIEB0eXBlOiBPVUkgVHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxcbiAgKiBAc3VidHlwZTogT1VJIFN1YnR5cGUgLSBQMlBfQUZfKlxcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yZXNwIHRyYW5hY3Rpb25cXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cXG5AQCAtMjI4LDEwICsyMjYsMzggQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXFxuIFxcdGlmIChmcmFtZV9sZW4gXFx1MDAzYyBzaXplb2YoKnBhY3RfZnJtKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4tXFx0aWYgKHBhY3RfZnJtLVxcdTAwM2VjYXRlZ29yeSA9PSBQMlBfUFVCX0FGX0NBVEVHT1JZIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwYWN0X2ZybS1cXHUwMDNlYWN0aW9uID09IFAyUF9QVUJfQUZfQUNUSU9OIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwYWN0X2ZybS1cXHUwMDNlb3VpX3R5cGUgPT0gUDJQX1ZFUiBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgbWVtY21wKHBhY3RfZnJtLVxcdTAwM2VvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKVxcbitcXHRpZiAocGFjdF9mcm0tXFx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwYWN0X2ZybS1cXHUwMDNlYWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuK1xcbisvKipcXG4rICogYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKCkgLSB0cnVlIGlmIGRwcCBwdWJsaWMgdHlwZSBmcmFtZS5cXG4rICpcXG4rICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS5cXG4rICogQGZyYW1lX2xlbjogbGVuZ3RoIG9mIGFjdGlvbiBmcmFtZSBkYXRhLlxcbisgKlxcbisgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGVcXG4rICovXFxuK3N0YXRpYyBib29sIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcXG4re1xcbitcXHRzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKnBhY3RfZnJtO1xcbitcXG4rXFx0aWYgKCFmcmFtZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7XFxuK1xcdGlmIChmcmFtZV9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lKSAtIDEpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChwYWN0X2ZybS1cXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGFjdF9mcm0tXFx1MDAzZW91aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX0RQUCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLVxcdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTI1Nyw3ICsyODMsNyBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0aWYgKGFjdF9mcm0tXFx1MDAzZWNhdGVnb3J5ID09IFAyUF9BRl9DQVRFR09SWSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgYWN0X2ZybS1cXHUwMDNldHlwZSAgPT0gUDJQX1ZFUiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgYWN0X2ZybS1cXHUwMDNldHlwZSAgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBtZW1jbXAoYWN0X2ZybS1cXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbkBAIC0xMjgxLDYgKzEzMDcsOSBAQCBzdGF0aWMgczMyIGJyY21mX3AycF9hYm9ydF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcXG4gXFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiRW50ZXJcXFxcblxcXCIpO1xcbiBcXG4gXFx0dmlmID0gcDJwLVxcdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWY7XFxuK1xcdGlmICghdmlmKVxcbitcXHRcXHR2aWYgPSBwMnAtXFx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19QUklNQVJZXS52aWY7XFxuK1xcbiBcXHRlcnIgPSBicmNtZl9maWxfYnNzY2ZnX2RhdGFfc2V0KHZpZi1cXHUwMDNlaWZwLCBcXFwiYWN0ZnJhbWVfYWJvcnRcXFwiLCBcXHUwMDI2aW50X3ZhbCxcXG4gXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKHMzMikpO1xcbiBcXHRpZiAoZXJyKVxcbkBAIC0xNzg5LDcgKzE4MTgsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtXFx1MDAzZWRhdGEsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XFxuK1xcdFxcdFxcdFxcdFxcdCAgIGFjdGlvbl9mcmFtZV9sZW4pIHx8XFxuK1xcdFxcdCAgIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbihhY3Rpb25fZnJhbWUtXFx1MDAzZWRhdGEsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkge1xcbiBcXHRcXHQvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovXFxuIFxcdFxcdC8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi9cXG4gXFx0fSBlbHNlIHtcXG5AQCAtMTgyNiw2ICsxODU3LDcgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4gXFx0LyogdmFsaWRhdGUgY2hhbm5lbCBhbmQgcDJwIGllcyAqL1xcbiBcXHRpZiAoY29uZmlnX2FmX3BhcmFtcy5zZWFyY2hfY2hhbm5lbCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgSVNfUDJQX1NPQ0lBTF9DSEFOTkVMKGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cXHUwMDNlY2hhbm5lbCkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwMnAtXFx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19ERVZJQ0VdLnZpZiBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgcDJwLVxcdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYtXFx1MDAzZXNhdmVkX2llLnByb2JlX3JlcV9pZV9sZW4pIHtcXG4gXFx0XFx0YWZ4X2hkbCA9IFxcdTAwMjZwMnAtXFx1MDAzZWFmeF9oZGw7XFxuIFxcdFxcdGFmeF9oZGwtXFx1MDAzZXBlZXJfbGlzdGVuX2NoYW4gPSBsZTMyX3RvX2NwdShhZl9wYXJhbXMtXFx1MDAzZWNoYW5uZWwpO1xcbkBAIC0yNTQzLDQgKzI1NzUsMyBAQCB2b2lkIGJyY21mX3AycF9kZXRhY2goc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnApXFxuIFxcdC8qIGp1c3Qgc2V0IGl0IGFsbCB0byB6ZXJvICovXFxuIFxcdG1lbXNldChwMnAsIDAsIHNpemVvZigqcDJwKSk7XFxuIH1cXG4tXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxcbmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXFxuIFxcbiAjZGVmaW5lIFdQQTNfQVVUSF9TQUVfUFNLXFx0MHg0MDAwMFxcdC8qIFNBRSB3aXRoIDQtd2F5IGhhbmRzaGFrZSAqL1xcbiBcXG4rI2RlZmluZSBXRkFfQVVUSF9EUFBcXHRcXHQweDIwMDAwMCAvKiBXRkEgRFBQIEFVVEggKi9cXG4rXFxuICNkZWZpbmUgRE9UMTFfREVGQVVMVF9SVFNfTEVOXFx0XFx0MjM0N1xcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfRlJBR19MRU5cXHRcXHQyMzQ2XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0Ni4xMDAxNzk5MTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNjAwOTMxNDY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY2ZnODAyMTFfY29ubmVjdFwiLFxuICAgIFwiYnJjbWZfY2ZnODAyMTFfc3RhcnRfYXBcIixcbiAgICBcImJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmY4ZDljM2RlN2ZjODViZWM1MDY5MDRjNTEzMDlhNjVlOTVlMTFkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTg6MTk6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA0YjcwODQ1ZTFhMjY0My4uZDYxYzNlMDNhMTA2YTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRsaW5rLmhcdTAwM2VcbkBAIC0yMTU0LDYgKzIxNTUsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XG4gXHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDpcbitcdFx0XHR2YWwgPSBXRkFfQVVUSF9EUFA7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJpbnZhbGlkIGFrbSBzdWl0ZSAoJWQpXFxuXCIsXG4gXHRcdFx0XHQgc21lLVx1MDAzZWNyeXB0by5ha21fc3VpdGVzWzBdKTtcbkBAIC0yNDY2LDQzICsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdGdvdG8gZG9uZTtcbiBcdH1cbiBcbi1cdGlmIChzbWUtXHUwMDNlY3J5cHRvLnBzayBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRvbmU7XG4tXHRcdH1cbi1cdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgUFNLIG9mZmxvYWRcXG5cIik7XG4tXHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4tXHR9XG4tXG4tXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4tXHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuLVx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwic3VwX3dwYVwiLCAxKTtcbi1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuLVx0XHRcdGJwaHlfZXJyKGRydnIsIFwiZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxuXCIpO1xuLVx0XHRcdGdvdG8gZG9uZTtcbitcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSkge1xuK1x0XHR1MzIgYWttID0gc21lLVx1MDAzZWNyeXB0by5uX2FrbV9zdWl0ZXMgPyBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwO1xuK1x0XHRib29sIGlzX3NhZV9ha20gPSBha20gPT0gV0xBTl9BS01fU1VJVEVfU0FFIHx8XG4rXHRcdFx0YWttID09IFdMQU5fQUtNX1NVSVRFX0ZUX09WRVJfU0FFO1xuK1xuK1x0XHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2ICFpc19zYWVfYWttIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbitcdFx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuK1x0XHRcdFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbitcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIGRvbmU7XG4rXHRcdFx0fVxuK1x0XHRcdGJyY21mX2RiZyhJTkZPLCBcInVzaW5nIFBTSyBvZmZsb2FkXFxuXCIpO1xuK1x0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4gXHRcdH1cbi1cdH1cbi1cbi1cdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSylcbi1cdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuLVx0XHRcdFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xuLVx0ZWxzZSBpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbi1cdFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXG4tXHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwid3BhaWVcIiwgTlVMTCwgMCk7XG4tXHRcdGlmIChlcnIpIHtcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcImZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXG5cIik7XG4tXHRcdFx0Z290byBkb25lO1xuK1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4rXHRcdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG4rXHRcdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcInN1cF93cGFcIiwgMSk7XG4rXHRcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuK1x0XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXG5cIik7XG4rXHRcdFx0XHRnb3RvIGRvbmU7XG4rXHRcdFx0fVxuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCJzdXBfd3BhXCIsIDApO1xuIFx0XHR9XG4tXHRcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcdTAwMjZzbWUtXHUwMDNlY3J5cHRvKTtcbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHNtZS1cdTAwM2VjcnlwdG8ucHNrKVxuK1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXG4gXHRcdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4rXHRcdGVsc2UgaWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFIFx1MDAyNlx1MDAyNlxuK1x0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLnNhZV9wd2QgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkge1xuK1x0XHRcdC8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqL1xuK1x0XHRcdGlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcIndwYWllXCIsIE5VTEwsIDApKSB7XG4rXHRcdFx0XHRicGh5X2VycihkcnZyLCBcImZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXG5cIik7XG4rXHRcdFx0XHRnb3RvIGRvbmU7XG4rXHRcdFx0fVxuK1x0XHRcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcdTAwMjZzbWUtXHUwMDNlY3J5cHRvKTtcbitcdFx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4rXHRcdFx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4rXHRcdFx0XHRcdFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xuK1x0XHR9XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0Z290byBkb25lO1xuIFx0fVxuLVx0aWYgKGVycilcbi1cdFx0Z290byBkb25lO1xuLVxuIFx0LyogSm9pbiB3aXRoIHNwZWNpZmljIEJTU0lEIGFuZCBjYWNoZWQgU1NJRFxuIFx0ICogSWYgU1NJRCBpcyB6ZXJvIGpvaW4gYmFzZWQgb24gQlNTSUQgb25seVxuIFx0ICovXG5AQCAtNDUxOSw2ICs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpXG4gXHRyZXR1cm4gKG1lbWNtcChvdWksIFdQQV9PVUksIFRMVl9PVUlfTEVOKSA9PSAwKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfZHBwX3N1aXRlKHU4ICpvdWkpXG4re1xuK1x0cmV0dXJuIGdldF91bmFsaWduZWRfYmUzMihvdWkpID09IFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA7XG4rfVxuK1xuIHN0YXRpYyBzMzJcbiBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBicmNtZl92c190bHYgKndwYV9pZSxcbkBAIC00NjMyLDQyICs0NjQ4LDQ3IEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkrKykge1xuLVx0XHRpZiAoIWJyY21mX3ZhbGlkX3dwYV9vdWkoXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XG4rXHRcdGlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoXHUwMDI2ZGF0YVtvZmZzZXRdKSkge1xuK1x0XHRcdHdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDtcbitcdFx0XHRvZmZzZXQgKz0gVExWX09VSV9MRU47XG4rXHRcdH0gZWxzZSBpZiAoYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbitcdFx0XHRvZmZzZXQgKz0gVExWX09VSV9MRU47XG4rXHRcdFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcbitcdFx0XHRjYXNlIFJTTl9BS01fTk9ORTpcbitcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX05PTkVcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fVU5TUEVDSUZJRURcXG5cIik7XG4rXHRcdFx0XHRpc19yc25faWUgP1xuK1x0XHRcdFx0XHQod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XG4rXHRcdFx0XHRcdCh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fUFNLOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fUFNLXFxuXCIpO1xuK1x0XHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0spIDpcbitcdFx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0Y2FzZSBSU05fQUtNX1NIQTI1Nl9QU0s6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9NRlBfUFNLXFxuXCIpO1xuK1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTUZQXzFYXFxuXCIpO1xuK1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9TQUU6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9TQUVcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGRlZmF1bHQ6XG4rXHRcdFx0XHRicGh5X2VycihkcnZyLCBcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcblwiKTtcbitcdFx0XHR9XG4rXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRicGh5X2VycihkcnZyLCBcImludmFsaWQgT1VJXFxuXCIpO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuLVx0XHRvZmZzZXQgKz0gVExWX09VSV9MRU47XG4tXHRcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XG4tXHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX05PTkVcXG5cIik7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1VOU1BFQ0lGSUVEXFxuXCIpO1xuLVx0XHRcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDpcbi1cdFx0XHRcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fUFNLOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1BTS1xcblwiKTtcbi1cdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9NRlBfUFNLXFxuXCIpO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2O1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX01GUF8xWFxcblwiKTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfMVhfU0hBMjU2O1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0FFOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1NBRVxcblwiKTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbi1cdFx0XHRicmVhaztcbi1cdFx0ZGVmYXVsdDpcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcblwiKTtcbi1cdFx0fVxuIFx0XHRvZmZzZXQrKztcbiBcdH1cbiBcbkBAIC00Njg3LDEwICs0NzA4LDEyIEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aWYgKCEod3BhX2F1dGggXHUwMDI2IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8XG4gXHRcdFx0XHRcdFx0ICBXUEEyX0FVVEhfMVhfU0hBMjU2IHxcbitcdFx0XHRcdFx0XHQgIFdGQV9BVVRIX0RQUCB8XG4gXHRcdFx0XHRcdFx0ICBXUEEzX0FVVEhfU0FFX1BTSykpKSB7XG4gXHRcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0XHRcdH1cbitcbiBcdFx0XHRcdC8qIEZpcm13YXJlIGhhcyByZXF1aXJlbWVudCB0aGF0IFdQQTJfQVVUSF9QU0svXG4gXHRcdFx0XHQgKiBXUEEyX0FVVEhfVU5TUEVDSUZJRUQgYmUgc2V0LCBpZiBTSEEyNTYgT1VJXG4gXHRcdFx0XHQgKiBpcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcnNuIGllLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuaW5kZXggNmUwYzkwZjQ3MThiNTguLjJjMWY1MmVkNTEzODAwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbkBAIC02LDYgKzYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2JyY211X3dpZmkuaFx1MDAzZVxuQEAgLTQ0LDkgKzQ1LDYgQEBcbiBcbiAjZGVmaW5lIEJSQ01GX1NDQl9USU1FT1VUX1ZBTFVFXHQyMFxuIFxuLSNkZWZpbmUgUDJQX1ZFUlx0XHRcdDlcdC8qIFAyUCB2ZXJzaW9uOiA5PVdpRmkgUDJQIHYxLjAgKi9cbi0jZGVmaW5lIFAyUF9QVUJfQUZfQ0FURUdPUllcdDB4MDRcbi0jZGVmaW5lIFAyUF9QVUJfQUZfQUNUSU9OXHQweDA5XG4gI2RlZmluZSBQMlBfQUZfQ0FURUdPUllcdFx0MHg3ZlxuICNkZWZpbmUgUDJQX09VSVx0XHRcdFwiXFx4NTBcXHg2RlxceDlBXCJcdC8qIFAyUCBPVUkgKi9cbiAjZGVmaW5lIFAyUF9PVUlfTEVOXHRcdDNcdFx0LyogUDJQIE9VSSBsZW5ndGggKi9cbkBAIC0xNDMsMTAgKzE0MSwxMCBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3NjYW5fbGUge1xuIC8qKlxuICAqIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAtIFdpRmkgUDJQIFB1YmxpYyBBY3Rpb24gRnJhbWVcbiAgKlxuLSAqIEBjYXRlZ29yeTogUDJQX1BVQl9BRl9DQVRFR09SWVxuLSAqIEBhY3Rpb246IFAyUF9QVUJfQUZfQUNUSU9OXG4rICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQ1xuKyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUNcbiAgKiBAb3VpOiBQMlBfT1VJXG4tICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFAyUF9WRVJcbisgKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXG4gICogQHN1YnR5cGU6IE9VSSBzdWJ0eXBlIC0gUDJQX1RZUEVfKlxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3JzcCB0cmFuc2FjdGlvblxuICAqIEBlbHRzOiBWYXJpYWJsZSBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudHMuXG5AQCAtMTY2LDcgKzE2NCw3IEBAIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSB7XG4gICpcbiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWVxuICAqIEBvdWk6IE9VSSAtIFAyUF9PVUlcbi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSXG4rICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXG4gICogQHN1YnR5cGU6IE9VSSBTdWJ0eXBlIC0gUDJQX0FGXypcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yZXNwIHRyYW5hY3Rpb25cbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxuQEAgLTIyOCwxMCArMjI2LDM4IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxuIFx0aWYgKGZyYW1lX2xlbiBcdTAwM2Mgc2l6ZW9mKCpwYWN0X2ZybSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbi1cdGlmIChwYWN0X2ZybS1cdTAwM2VjYXRlZ29yeSA9PSBQMlBfUFVCX0FGX0NBVEVHT1JZIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBQMlBfUFVCX0FGX0FDVElPTiBcdTAwMjZcdTAwMjZcbi1cdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBQMlBfVkVSIFx1MDAyNlx1MDAyNlxuLVx0ICAgIG1lbWNtcChwYWN0X2ZybS1cdTAwM2VvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKVxuK1x0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBhY3RfZnJtLVx1MDAzZW91aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCBcdTAwMjZcdTAwMjZcbitcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisvKipcbisgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLlxuKyAqXG4rICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS5cbisgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuXG4rICpcbisgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGVcbisgKi9cbitzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4re1xuK1x0c3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICpwYWN0X2ZybTtcbitcbitcdGlmICghZnJhbWUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHBhY3RfZnJtID0gKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqKWZyYW1lO1xuK1x0aWYgKGZyYW1lX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSkgLSAxKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfRFBQIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtMjU3LDcgKzI4Myw3IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wMnBfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRpZiAoYWN0X2ZybS1cdTAwM2VjYXRlZ29yeSA9PSBQMlBfQUZfQ0FURUdPUlkgXHUwMDI2XHUwMDI2XG4tXHQgICAgYWN0X2ZybS1cdTAwM2V0eXBlICA9PSBQMlBfVkVSIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGFjdF9mcm0tXHUwMDNldHlwZSAgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG1lbWNtcChhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuQEAgLTEyODEsNiArMTMwNyw5IEBAIHN0YXRpYyBzMzIgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcIkVudGVyXFxuXCIpO1xuIFxuIFx0dmlmID0gcDJwLVx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19ERVZJQ0VdLnZpZjtcbitcdGlmICghdmlmKVxuK1x0XHR2aWYgPSBwMnAtXHUwMDNlYnNzX2lkeFtQMlBBUElfQlNTQ0ZHX1BSSU1BUlldLnZpZjtcbitcbiBcdGVyciA9IGJyY21mX2ZpbF9ic3NjZmdfZGF0YV9zZXQodmlmLVx1MDAzZWlmcCwgXCJhY3RmcmFtZV9hYm9ydFwiLCBcdTAwMjZpbnRfdmFsLFxuIFx0XHRcdFx0XHRzaXplb2YoczMyKSk7XG4gXHRpZiAoZXJyKVxuQEAgLTE3ODksNyArMTgxOCw5IEBAIGJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4gXHR9IGVsc2UgaWYgKGJyY21mX3AycF9pc19wMnBfYWN0aW9uKGFjdGlvbl9mcmFtZS1cdTAwM2VkYXRhLFxuLVx0XHRcdFx0XHQgICBhY3Rpb25fZnJhbWVfbGVuKSkge1xuK1x0XHRcdFx0XHQgICBhY3Rpb25fZnJhbWVfbGVuKSB8fFxuK1x0XHQgICBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4rXHRcdFx0XHRcdCAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkge1xuIFx0XHQvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovXG4gXHRcdC8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi9cbiBcdH0gZWxzZSB7XG5AQCAtMTgyNiw2ICsxODU3LDcgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdC8qIHZhbGlkYXRlIGNoYW5uZWwgYW5kIHAycCBpZXMgKi9cbiBcdGlmIChjb25maWdfYWZfcGFyYW1zLnNlYXJjaF9jaGFubmVsIFx1MDAyNlx1MDAyNlxuIFx0ICAgIElTX1AyUF9TT0NJQUxfQ0hBTk5FTChsZTMyX3RvX2NwdShhZl9wYXJhbXMtXHUwMDNlY2hhbm5lbCkpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHAycC1cdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYgXHUwMDI2XHUwMDI2XG4gXHQgICAgcDJwLVx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19ERVZJQ0VdLnZpZi1cdTAwM2VzYXZlZF9pZS5wcm9iZV9yZXFfaWVfbGVuKSB7XG4gXHRcdGFmeF9oZGwgPSBcdTAwMjZwMnAtXHUwMDNlYWZ4X2hkbDtcbiBcdFx0YWZ4X2hkbC1cdTAwM2VwZWVyX2xpc3Rlbl9jaGFuID0gbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpO1xuQEAgLTI1NDMsNCArMjU3NSwzIEBAIHZvaWQgYnJjbWZfcDJwX2RldGFjaChzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycClcbiBcdC8qIGp1c3Qgc2V0IGl0IGFsbCB0byB6ZXJvICovXG4gXHRtZW1zZXQocDJwLCAwLCBzaXplb2YoKnAycCkpO1xuIH1cbi1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4rI2RlZmluZSBXRkFfQVVUSF9EUFBcdFx0MHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovXG4rXG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX1JUU19MRU5cdFx0MjM0N1xuICNkZWZpbmUgRE9UMTFfREVGQVVMVF9GUkFHX0xFTlx0XHQyMzQ2XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0Ni4xMDAxODE2NDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzk4ODA0NjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIGEgRFBQL1NBRSBFbmhhbmNlbWVudCBpbiBicmNtZm1hYyoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gYW5kIGFjdGlvbiBmcmFtZSBzdXBwb3J0IHdpdGhpbiB0aGUgQnJvYWRjb20gYGJyY21mbWFjYCBkcml2ZXIuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGNmZzgwMjExLmNgIGFuZCBgcDJwLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gaGFuZGxlIFNBRS9EUFAgYW5kIFBTSyBvZmZsb2FkIGxvZ2ljLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSB0byBhIHdpcmVsZXNzIGRyaXZlciwgc28gaXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzLCBjYW4gd2UgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBgYnJjbWZtYWNgIGlzIEJyb2FkY29tJ3MgSUVFRTgwMi4xMW4vYWMgZHJpdmVyIGZvciBQQ0llL1NESU8vVVNCLiBMdWNraWx5LCBVU0IgaXMgb2Z0ZW4gZW11bGF0YWJsZS4gV2UgY291bGQgdXNlIGBkdW1teV9oY2RgIG9yLCBldmVuIGJldHRlciwgSSByZW1lbWJlciBzeXprYWxsZXIgaGFzIGEgVVNCIGZ1enplciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMga2luZCBvZiB0aGluZy4gU0RJTyBtaWdodCBiZSB0cmlja2llciwgYnV0IFBDSWUgY2FuIGJlIGVtdWxhdGVkIGFzIHdlbGwuIFRoZSBVU0IgZnV6emVyIGlzIGtleSBoZXJlLiBJdCBjYW4gZW11bGF0ZSB3aXJlbGVzcyBkb25nbGVzLiBUaGlzIGlzIGZ1bGxNQUMsIHNvIGl0IGludGVyZmFjZXMgZGlyZWN0bHkgd2l0aCBjZmc4MDIxMS4gV2UgY2FuIGZ1enogYnJjbWZtYWMgdGhyb3VnaCBVU0IsIHdoaWNoIHN5emthbGxlciBzdXBwb3J0cy4gSXQncyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbkxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBhZmZlY3RzLiBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZTpcblxuKiAgIGBicmNtZl9zZXRfa2V5X21nbXRgXG4qICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgXG4qICAgYGJyY21mX3ZhbGlkX2RwcF9zdWl0ZWBcbiogICBgYnJjbWZfY29uZmlndXJlX3dwYWllYFxuKiAgIGBicmNtZl9wMnBfaXNfcHViX2FjdGlvbmBcbiogICBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYFxuKiAgIGBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbmBcbiogICBgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZWBcbiogICBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYFxuXG5Gb3IgZW5hYmxpbmcgdGhlIGRyaXZlciwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZXNlIGNvbmZpZ3Mgc2V0OiBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCBmb3IgdGhlIFVTQiBmdXp6aW5nLCBhbmQgYENGRzgwMjExYCwgb2YgY291cnNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY29uZmlybSBob3cgdGhvc2UgYXJlIHNldCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM2OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIwOjAwLjA4ODIzMDM2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcxMzQ1OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIwOjAyLjE1OTYwMzMzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNDEyNzk5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBob21pbmcgaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIEJyb2FkY29tJ3MgZmlybXdhcmUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gYWRkIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIHRvIGBFbmFibGVDb25maWdzYC4gVGhhdCBjb3ZlcnMgdGhlIGNvcmUgTUFDIGFuZCB0aGUgVVNCLXNwZWNpZmljIGludGVyZmFjZS4gSSdtIGFzc3VtaW5nIHRoZSBvdGhlciBQQ0llIGFuZCBTRElPIHZhcmlhbnRzLCBgQlJDTUZNQUNfU0RJT2AgYW5kIGBCUkNNRk1BQ19QQ0lFYCwgYXJlIGhhbmRsZWQgZWxzZXdoZXJlIG9yIGFyZSBsZXNzIHJlbGV2YW50IGZvciB0aGUgY3VycmVudCB0YXNrLiBJJ20gbm90aW5nIHRoZXNlIGFzIHRoaXMgaW5mb3JtYXRpb24gbWF5IGJlY29tZSBpbXBvcnRhbnQgbGF0ZXIsIGFzIGNvbnRleHQuXG5cbk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBmdW5jdGlvbnMgd2l0aGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgb25lcyB0aGF0IGFyZSBzdGFuZGluZyBvdXQgcmlnaHQgbm93IGFyZTogYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFsbCBzZWVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQsIGNvbm5lY3Rpb24gaGFuZGxpbmcsIGFuZCBwb3RlbnRpYWxseSBQMlAgd2l0aCBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpLlxuXG5KdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBzaW5jZSBgQlJDTUZNQUNgIGlzIHdoYXQgSSdtIGRlYWxpbmcgd2l0aCwgaXQgaW1wbGljaXRseSBicmluZ3MgaW4gYENGRzgwMjExYCBhcyBhIGRlcGVuZGVuY3kuIE5vIG5lZWQgdG8gZXhwbGljaXRseSBsaXN0IGl0LiBUaGF0IHNhdmVzIGEgc3RlcC4gSSdtIGdvaW5nIHRvIHZlcmlmeSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIG5leHQgcGhhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNjksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjA6NDYuMjAwODg0NzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4NDUzODYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTIzNjM9c3RhdGljIHMzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjIzNjQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yMzY1LVxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU5NTc9c3RhdGljIHN0cnVjdCBjZmc4MDIxMV9vcHMgYnJjbWZfY2ZnODAyMTFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTk3NC1cXHQuc2V0X3Bvd2VyX21nbXQgPSBicmNtZl9jZmc4MDIxMV9zZXRfcG93ZXJfbWdtdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1OTc1OlxcdC5jb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01OTc2LVxcdC5kaXNjb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYxNDY9c3RhdGljIHZvaWQgYnJjbWZfY2xlYXJfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjE0Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjE0ODpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYxNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02Mjk2PXN0YXRpYyBzMzIgYnJjbWZfZ2V0X2Fzc29jX2llcyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMC1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfYXNzb2NfaWVsZW5fbGUgKmFzc29jX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjMwMTpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYzMDItXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2VkY2ZfYWNwYXJhbSBlZGNmX2FjcGFyYW1faW5mb1tFRENGX0FDX0NPVU5UXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYzNzg9YnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjM4My1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2Mzg0OlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjM4NS1cXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gY2ZnX3RvX3dpcGh5KGNmZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02NDUxPWJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY0NTYtXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSBcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXByb2ZpbGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjQ1NzpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY0NTgtXFx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaD0yMjA9c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0yMzUtLyogYXNzb2NpYXRpb24gaW5mb3JtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6MjM2OnN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNy1cXHR1OCAqcmVxX2llO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9MzQyPXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTM0OS1cXHRzdHJ1Y3Qgd2xfY2ZnODAyMTFfYnNzX2luZm8gKmJzc19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oOjM1MDpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvIGNvbm5faW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0zNTEtXFx0c3RydWN0IGJyY21mX3Bta19saXN0X2xlIHBta19saXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9NDMzPXN0YXRpYyBpbmxpbmUgc3RydWN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6NDM0OmJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY2ZnX3RvX2Nvbm4oc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC00MzUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoyMDo0OC4xODU0Mjk0NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTI1NzUxNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2ktRmkgRHJpdmVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBzZXQgb2YgZnVuY3Rpb25zLiBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBCcm9hZGNvbSBXaS1GaSBkcml2ZXIsIGxpa2VseSBDRkc4MDIxMS1yZWxhdGVkLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIE15IGltbWVkaWF0ZSBmb2N1cywgYXMgYW4gZXhwZXJ0LCBpcyBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGhpbiBhIHNwZWNpZmljIGNvbnRyb2wgZmxvdywgZXNwZWNpYWxseSByZWdhcmRpbmcgc2VjdXJpdHkgYW5kIHBlZXItdG8tcGVlciAoUDJQKSBjb25uZWN0aW9ucy5cblxuRmlyc3QsIHdlIGhhdmUgdGhlIGNvbm5lY3Rpb24gc2V0dXAgKGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCksIGtleSBtYW5hZ2VtZW50IChgYnJjbWZfc2V0X2tleV9tZ210YCksIGFuZCBXUEEgaW5mb3JtYXRpb24gZWxlbWVudCBjb25maWd1cmF0aW9uIChgYnJjbWZfY29uZmlndXJlX3dwYWllYCkuIFN0YW5kYXJkIHN0dWZmLCBidXQgd2UgbmVlZCB0byBzZWUgaG93IHRoZXkncmUgdXNlZC4gVGhlbiwgd2UgaGF2ZSBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZSBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIGFzcGVjdCBpcyBpbnRlcmVzdGluZy5cblxuUmlnaHQsIHNvIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gIGlzIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgcm9hZGJsb2NrIGZvciBkaXJlY3QgYW5hbHlzaXMsIGFzc3VtaW5nIGl0J3MgaW5saW5lZC4gVGhpcyBtZWFucyB3ZSBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIGNhbGwgc2l0ZXMgb2YgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAsIHdoaWNoIHNob3VsZCBnaXZlIG1lIGluc2lnaHQgaW50byBob3cgRFBQIGFjdGlvbnMgYXJlIGluaXRpYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIHRodXMgZXhwb3NlIHRoZSB1c2FnZSBvZiB0aGF0IGBzdGF0aWNgIGZ1bmN0aW9uIGluIGNvbnRleHQuIExldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU0NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoyMDo1My4xMTExODQyMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MDYwMjU2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTUzNj1icmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU2Mjg6XFx0XFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKGNmZywgY2ZnX3RvX25kZXYoY2ZnKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI5LVxcdFxcdFxcdFxcdFxcdFxcdCAgYWZfcGFyYW1zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYz0xNzI5PXN0YXRpYyBib29sIGJyY21mX3AycF9jaGVja19kd2VsbF9vdmVyZmxvdyh1MzIgcmVxdWVzdGVkX2R3ZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDAtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3NDE6ICogYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKCkgLSBzZW5kIGFjdGlvbiBmcmFtZSAuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQ2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzQ3OmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDgtXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oPTE2OD1pbnQgYnJjbWZfcDJwX25vdGlmeV9hY3Rpb25fdHhfY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcwLVxcdFxcdFxcdFxcdFxcdHZvaWQgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaDoxNzE6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcyLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjA6NTUuOTYxNzkyNjQ4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk0NTkwMDU5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IEknbSB0aGlua2luZyBoZXJlLCBmcm9tIGEgdGVjaG5pY2FsIHBlcnNwZWN0aXZlLi4uXG5cbioqRXhwbG9yaW5nIHRoZSBXTEFOIERyaXZlcidzIENvbnRyb2wgUGxhbmUqKlxuXG5SaWdodCwgc28gSSdtIGN1cnJlbnRseSBtYXBwaW5nIG91dCB0aGUgY29udHJvbCBwbGFuZSBmdW5jdGlvbmFsaXR5IGluIHRoaXMgQnJvYWRjb20gV2lGaSBkcml2ZXIuIEkndmUgbm90ZWQgdGhhdCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCdzIGFjY2Vzc2libGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBHb29kIHRvIGtub3cuIEFuZCB0aGUgY29ubmVjdGlvbiBzZXR1cCByb3V0aW5lLCBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAsIHRoYXQncyBhY2Nlc3NpYmxlIHRvby4gTm93LCB0aGUgYGJyY21mX3NldF9rZXlfbWdtdGAgZnVuY3Rpb24sIHRoYXQncyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGF0LCBpZiBpdCBpcyBzdGF0aWMsIHRoZW4gb25seSB0aGUgY29kZSBpbiB0aGlzIHNvdXJjZSBmaWxlIGNhbiBjYWxsIGl0LiBCZXN0IGNoZWNrIHdoZXJlIGl0J3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGZpbGUsIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBpbnZva2luZyBpdC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbGVycyB3aWxsIHNoZWQgbGlnaHQgb24gdGhlIGtleSBtYW5hZ2VtZW50IGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODI1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MTUuNDIwODAwMzA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5ODE3NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3NldF9rZXlfbWdtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMDg3PXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyMDg4OmJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMzY0PWJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjI0NjE6XFx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjQ2Mi1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIxOjE3LjMwMDYyNDAyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjM4NjQ4NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgV1BBIEtleSBNYW5hZ2VtZW50KipcblxuT2theSwgSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIEJyb2FkY29tIGRyaXZlciBoYW5kbGVzIGtleSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgd2l0aCBXUEEuIEkgc2VlIHRoYXQgdGhlIGBicmNtZl9zZXRfa2V5X21nbXRgIGZ1bmN0aW9uIGlzIGdldHRpbmcgY2FsbGVkLCBhbmQgYSBxdWljayBsb29rIHNob3dzIG1lIHRoYXQgaXQncyBiZWluZyB0cmlnZ2VyZWQgYnkgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLiBUaGF0IG1ha2VzIHNlbnNlOyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgaXMgd2hlcmUgeW91J2QgZXhwZWN0IGtleSBjb25maWd1cmF0aW9uIHRvIGhhcHBlbi4gTm93LCBgYnJjbWZfY29uZmlndXJlX3dwYWllYC4uLnRoYXQncyBzdGF0aWMsIHNvIGl04oCZcyBsaWtlbHkgaW50ZXJuYWwgdG8gYSBtb2R1bGUuIExldCdzIHNlZSB3aG8ncyBjYWxsaW5nICppdCouIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFdQQSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgaXMgYmVpbmcgY29uc3RydWN0ZWQgYW5kIHNldC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBicmNtZl9jb25maWd1cmVfd3BhaWVgIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBpbnNpZ2h0cyBpbnRvIHRoZSBvdmVyYWxsIFdQQSBzZXR1cCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ4MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIxOjI1LjUzOTI3ODA3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNTA0NTQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jb25maWd1cmVfd3BhaWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NDUzOD1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDU0MC1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDg0PWJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMDMtXFx0XFx0XFx0LyogV1BBIElFICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTEwNDpcXHRcXHRcXHRlcnIgPSBicmNtZl9jb25maWd1cmVfd3BhaWUoaWZwLCB3cGFfaWUsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cXHRcXHRcXHQvKiBSU04gSUUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MTEzOlxcdFxcdFxcdGVyciA9IGJyY21mX2NvbmZpZ3VyZV93cGFpZShpZnAsIHRtcF9pZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExNC1cXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MjcuMTY0MzI4NDkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjUyMzgyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBTZWN1cml0eSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24uIEFuZCBpdCBsb29rcyBsaWtlIGl0IGNhbGxzIGBicmNtZl9jb25maWd1cmVfd3BhaWVgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRoZSBjYWxscyB0byBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YC4gS25vd2luZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBzZWN1cml0eSBmcmFtZXdvcmsuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuIFRoaXMgY291bGQgYmUgYSBjcml0aWNhbCBwb2ludCBvZiBlbnRyeSBmb3Igc2VjdXJpdHktcmVsYXRlZCBwYXJhbWV0ZXJzLCBhbmQgcG90ZW50aWFsbHkgYW4gYXJlYSBmb3IgdnVsbmVyYWJpbGl0aWVzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjgzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MzEuNDI5NTY5Njg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIxMDI0MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDgzPXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MDg1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnNldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcXHRcXHRlcnIgPSBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoaWZwLCBzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTUtXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1Mjk2OlxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTctXFx0XFx0XFx0Z290byBleGl0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM1OlxcdFxcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0lGVFlQRV9QMlBfR08pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzctXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4OlxcdFxcdFxcdGJyY21mX2VycihcXFwiYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5IGVycm9yXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM5LVxcdFxcdFxcdGdvdG8gZXhpdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MzMuMTUwNjAwMDY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4ODI5ODIzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIGJyY21mbWFjIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyB0aGUgcGxhbi4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBicmNtZm1hYyBkcml2ZXIgY29kZSBhbmQgSSd2ZSBnb3QgYSBmZXcga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gSSBzZWUgdGhhdCBgYnJjbWZfY2ZnODAyMTFfc3RhcnRfYXBgIGlzIGNhbGxpbmcgYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAsIHdoaWNoIGxvb2tzIGludGVyZXN0aW5nLiBBZGRpdGlvbmFsbHksIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYXJlIGFsc28gcHJpbWUgdGFyZ2V0cy4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY29yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgbmV3IERQUCBhbmQgYWN0aW9uIGZyYW1lIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IGdldHRpbmcgdGhpcyBzZXQgdXAgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkndmUgbm90ZWQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAuIEdvb2QuIFRoZSBgQlJDTUZNQUNfVVNCYCBjb25maWcgbG9va3MgcGFydGljdWxhcmx5IHByb21pc2luZyBzaW5jZSBpdCBlbmFibGVzIHRoZSBVU0IgZHJpdmVyLCBtZWFuaW5nIEkgY2FuIGxldmVyYWdlIHN5emthbGxlcidzIFVTQiBmdXp6ZXIuIEl0IHNob3VsZCBzaW1wbGlmeSB0aGUgZnV6emluZyBwcm9jZXNzIHNpbmNlIHRoZSB0YXJnZXQgaXMgY29ubmVjdGVkIHRvIHRoZSBob3N0IHZpYSBVU0IgZW11bGF0aW9uLlxuXG5TaW5jZSBgQ0ZHODAyMTFgIGlzIGFscmVhZHkgaW1wbGllZCwgSSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQgZXhwbGljaXRseS4gQW5kIGBXTEFOX0FLTV9TVUlURV9XRkFfRFBQYCBpcyBhIGNvbnN0YW50IHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhhdCBhdCB0aGUgbW9tZW50LlxuXG5TbywgaGVyZSdzIG15IHN1bW1hcml6ZWQgcGxhbjpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgZGVmaW5pdGVseS5cbiogICAqKkZvY3VzIFN5bWJvbHM6KipcbiAgICAqICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgXG4gICAgKiAgIGBicmNtZl9jZmc4MDIxMV9zdGFydF9hcGBcbiAgICAqICAgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWBcbiogICAqKkVuYWJsZSBDb25maWd1cmF0aW9uczoqKlxuICAgICogICBgQlJDTUZNQUNgXG4gICAgKiAgIGBCUkNNRk1BQ19VU0JgXG5cblRoZSByZWFzb24gSSdtIGRvaW5nIHRoaXMgaXMgYmVjYXVzZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgRFBQIHN1cHBvcnQgYW5kIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhpcyBhbHRlcnMgY29ubmVjdGlvbiBsb2dpYywgQVAgc2VjdXJpdHksIGFuZCBQMlAgYWN0aW9uIGZyYW1lcy4gR2l2ZW4gdGhhdCwgYW5kIHRoZSBlYXNlIG9mIHVzaW5nIFVTQiBlbXVsYXRpb24gZm9yIGZ1enppbmcgdGhpcyBkcml2ZXIsIGl0J3MgYWJzb2x1dGVseSB3b3J0aCB0aGUgZWZmb3J0LiBJdCBzaG91bGQgYmUgYSBnb29kIHRhcmdldCBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzIwLCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoyMTo0Mi4wMzM1ODQ5NjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTkwNTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX2NmZzgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBhbmQgYWN0aW9uIGZyYW1lcyBpbiB0aGUgQnJvYWRjb20gYnJjbWZtYWMgZHJpdmVyLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGxvZ2ljLCBBUCBzZWN1cml0eSBjb25maWd1cmF0aW9uLCBhbmQgUDJQIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCIsXG4gICAgXCJicmNtZl9jZmc4MDIxMV9zdGFydF9hcFwiLFxuICAgIFwiYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gYW5kIGFjdGlvbiBmcmFtZXMgaW4gdGhlIEJyb2FkY29tIGJyY21mbWFjIGRyaXZlci4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBsb2dpYywgQVAgc2VjdXJpdHkgY29uZmlndXJhdGlvbiwgYW5kIFAyUCBhY3Rpb24gZnJhbWUgaGFuZGxpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhzzv6[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-08 17:26:44 +0000 UTC FinishedAt: 2026-07-08 18:21:44 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "5cb5575308bce9d63178fe943bf89c520a348808", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BRCMFMAC", "BRCMFMAC_USB" ], "series_id": "49c37c2b-9795-42a4-8e22-5a4f58801a69" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "brcmf_cfg80211_connect", "brcmf_cfg80211_start_ap", "brcmf_p2p_send_action_frame" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE4OjE5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfY2ZnODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBiZjhkOWMzZGU3ZmM4NWJlYzUwNjkwNGM1MTMwOWE2NWU5NWUxMWQ2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgOCAxODoxOTo0NCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA0YjcwODQ1ZTFhMjY0My4uZDYxYzNlMDNhMTA2YTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC04LDYgJiM0Mzs4LDcgQEBcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9rZXJuZWwuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2V0aGVyZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9tb2R1bGUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC91bmFsaWduZWQuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3ZtYWxsb2MuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9jZmc4MDIxMS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbmV0L25ldGxpbmsuaFx1MDAzZVxuQEAgLTIxNTQsNiAmIzQzOzIxNTUsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XG4gXHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRjYXNlIFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA6XG4mIzQzO1x0XHRcdHZhbCA9IFdGQV9BVVRIX0RQUDtcbiYjNDM7XHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7aW52YWxpZCBha20gc3VpdGUgKCVkKVxcblwmIzM0OyxcbiBcdFx0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0pO1xuQEAgLTI0NjYsNDMgJiM0MzsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdGdvdG8gZG9uZTtcbiBcdH1cbiBcbi1cdGlmIChzbWUtXHUwMDNlY3J5cHRvLnBzayBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRvbmU7XG4tXHRcdH1cbi1cdFx0YnJjbWZfZGJnKElORk8sIFwmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXFxuXCYjMzQ7KTtcbi1cdFx0cHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcbi1cdH1cbi1cbi1cdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpIHtcbi1cdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG4tXHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCYjMzQ7c3VwX3dwYVwmIzM0OywgMSk7XG4tXHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXG5cJiMzNDspO1xuLVx0XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpIHtcbiYjNDM7XHRcdHUzMiBha20gPSBzbWUtXHUwMDNlY3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS1cdTAwM2VjcnlwdG8uYWttX3N1aXRlc1swXSA6IDA7XG4mIzQzO1x0XHRib29sIGlzX3NhZV9ha20gPSBha20gPT0gV0xBTl9BS01fU1VJVEVfU0FFIHx8XG4mIzQzO1x0XHRcdGFrbSA9PSBXTEFOX0FLTV9TVUlURV9GVF9PVkVSX1NBRTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2ICFpc19zYWVfYWttIFx1MDAyNlx1MDAyNlxuJiM0MztcdFx0ICAgIHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4mIzQzO1x0XHRcdGlmIChXQVJOX09OKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwICE9XG4mIzQzO1x0XHRcdFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbiYjNDM7XHRcdFx0XHRlcnIgPSAtRUlOVkFMO1xuJiM0MztcdFx0XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRicmNtZl9kYmcoSU5GTywgXCYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xuIFx0XHR9XG4tXHR9XG4tXG4tXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXG4tXHRcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXHUwMDNlY3J5cHRvLnBzayxcbi1cdFx0XHRcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcbi1cdGVsc2UgaWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7XG4tXHRcdC8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqL1xuLVx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcJiMzNDt3cGFpZVwmIzM0OywgTlVMTCwgMCk7XG4tXHRcdGlmIChlcnIpIHtcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXFxuXCYjMzQ7KTtcbi1cdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4mIzQzO1x0XHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuJiM0MztcdFx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwmIzM0O3N1cF93cGFcJiMzNDssIDEpO1xuJiM0MztcdFx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG4mIzQzO1x0XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHRnb3RvIGRvbmU7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH0gZWxzZSB7XG4mIzQzO1x0XHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCYjMzQ7c3VwX3dwYVwmIzM0OywgMCk7XG4gXHRcdH1cbi1cdFx0ZXJyID0gYnJjbWZfZnd2aWRfc2V0X3NhZV9wYXNzd29yZChpZnAsIFx1MDAyNnNtZS1cdTAwM2VjcnlwdG8pO1xuLVx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4mIzQzO1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXG4gXHRcdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4mIzQzO1x0XHRlbHNlIGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0IHNtZS1cdTAwM2VjcnlwdG8uc2FlX3B3ZCBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkge1xuJiM0MztcdFx0XHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cbiYjNDM7XHRcdFx0aWYgKGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwmIzM0O3dwYWllXCYjMzQ7LCBOVUxMLCAwKSkge1xuJiM0MztcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O2ZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGdvdG8gZG9uZTtcbiYjNDM7XHRcdFx0fVxuJiM0MztcdFx0XHRlcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgXHUwMDI2c21lLVx1MDAzZWNyeXB0byk7XG4mIzQzO1x0XHRcdGlmICghZXJyIFx1MDAyNlx1MDAyNiBzbWUtXHUwMDNlY3J5cHRvLnBzaylcbiYjNDM7XHRcdFx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4mIzQzO1x0XHRcdFx0XHRcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChlcnIpXG4mIzQzO1x0XHRcdGdvdG8gZG9uZTtcbiBcdH1cbi1cdGlmIChlcnIpXG4tXHRcdGdvdG8gZG9uZTtcbi1cbiBcdC8qIEpvaW4gd2l0aCBzcGVjaWZpYyBCU1NJRCBhbmQgY2FjaGVkIFNTSURcbiBcdCAqIElmIFNTSUQgaXMgemVybyBqb2luIGJhc2VkIG9uIEJTU0lEIG9ubHlcbiBcdCAqL1xuQEAgLTQ1MTksNiAmIzQzOzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSlcbiBcdHJldHVybiAobWVtY21wKG91aSwgV1BBX09VSSwgVExWX09VSV9MRU4pID09IDApO1xuIH1cbiBcbiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfZHBwX3N1aXRlKHU4ICpvdWkpXG4mIzQzO3tcbiYjNDM7XHRyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKG91aSkgPT0gV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDtcbiYjNDM7fVxuJiM0MztcbiBzdGF0aWMgczMyXG4gYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXG5AQCAtNDYzMiw0MiAmIzQzOzQ2NDgsNDcgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG4gXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjb3VudDsgaSYjNDM7JiM0MzspIHtcbi1cdFx0aWYgKCFicmNtZl92YWxpZF93cGFfb3VpKFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xuJiM0MztcdFx0aWYgKGJyY21mX3ZhbGlkX2RwcF9zdWl0ZShcdTAwMjZkYXRhW29mZnNldF0pKSB7XG4mIzQzO1x0XHRcdHdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDtcbiYjNDM7XHRcdFx0b2Zmc2V0ICYjNDM7PSBUTFZfT1VJX0xFTjtcbiYjNDM7XHRcdH0gZWxzZSBpZiAoYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbiYjNDM7XHRcdFx0b2Zmc2V0ICYjNDM7PSBUTFZfT1VJX0xFTjtcbiYjNDM7XHRcdFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX05PTkU6XG4mIzQzO1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX05PTkVcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9VTlNQRUNJRklFRDpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fVU5TUEVDSUZJRURcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGlzX3Jzbl9pZSA/XG4mIzQzO1x0XHRcdFx0XHQod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XG4mIzQzO1x0XHRcdFx0XHQod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fUFNLOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9QU0tcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6XG4mIzQzO1x0XHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XG4mIzQzO1x0XHRcdFx0YnJlYWs7XG4mIzQzO1x0XHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9NRlBfUFNLXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLX1NIQTI1NjtcbiYjNDM7XHRcdFx0XHRicmVhaztcbiYjNDM7XHRcdFx0Y2FzZSBSU05fQUtNX1NIQTI1Nl8xWDpcbiYjNDM7XHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTUZQXzFYXFxuXCYjMzQ7KTtcbiYjNDM7XHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfMVhfU0hBMjU2O1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRjYXNlIFJTTl9BS01fU0FFOlxuJiM0MztcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9TQUVcXG5cJiMzNDspO1xuJiM0MztcdFx0XHRcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xuJiM0MztcdFx0XHRcdGJyZWFrO1xuJiM0MztcdFx0XHRkZWZhdWx0OlxuJiM0MztcdFx0XHRcdGJwaHlfZXJyKGRydnIsIFwmIzM0O0ludmFsaWQga2V5IG1nbXQgaW5mb1xcblwmIzM0Oyk7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtpbnZhbGlkIE9VSVxcblwmIzM0Oyk7XG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4tXHRcdG9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47XG4tXHRcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XG4tXHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCYjMzQ7UlNOX0FLTV9OT05FXFxuXCYjMzQ7KTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX1VOU1BFQ0lGSUVEXFxuXCYjMzQ7KTtcbi1cdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XG4tXHRcdFx0XHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1BTSzpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fUFNLXFxuXCYjMzQ7KTtcbi1cdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fTUZQX1BTS1xcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4tXHRcdFx0YnJlYWs7XG4tXHRcdGNhc2UgUlNOX0FLTV9TSEEyNTZfMVg6XG4tXHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtSU05fQUtNX01GUF8xWFxcblwmIzM0Oyk7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1Njtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1NBRTpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwmIzM0O1JTTl9BS01fU0FFXFxuXCYjMzQ7KTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbi1cdFx0XHRicmVhaztcbi1cdFx0ZGVmYXVsdDpcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cXG5cJiMzNDspO1xuLVx0XHR9XG4gXHRcdG9mZnNldCYjNDM7JiM0Mzs7XG4gXHR9XG4gXG5AQCAtNDY4NywxMCAmIzQzOzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxuIFx0XHRcdFx0ICovXG4gXHRcdFx0XHRpZiAoISh3cGFfYXV0aCBcdTAwMjYgKFdQQTJfQVVUSF9QU0tfU0hBMjU2IHxcbiBcdFx0XHRcdFx0XHQgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfFxuJiM0MztcdFx0XHRcdFx0XHQgIFdGQV9BVVRIX0RQUCB8XG4gXHRcdFx0XHRcdFx0ICBXUEEzX0FVVEhfU0FFX1BTSykpKSB7XG4gXHRcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0XHRcdH1cbiYjNDM7XG4gXHRcdFx0XHQvKiBGaXJtd2FyZSBoYXMgcmVxdWlyZW1lbnQgdGhhdCBXUEEyX0FVVEhfUFNLL1xuIFx0XHRcdFx0ICogV1BBMl9BVVRIX1VOU1BFQ0lGSUVEIGJlIHNldCwgaWYgU0hBMjU2IE9VSVxuIFx0XHRcdFx0ICogaXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJzbiBpZS5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbmluZGV4IDZlMGM5MGY0NzE4YjU4Li4yYzFmNTJlZDUxMzgwMCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG5AQCAtNiw2ICYjNDM7Niw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2JyY211X3dpZmkuaFx1MDAzZVxuQEAgLTQ0LDkgJiM0Mzs0NSw2IEBAXG4gXG4gI2RlZmluZSBCUkNNRl9TQ0JfVElNRU9VVF9WQUxVRVx0MjBcbiBcbi0jZGVmaW5lIFAyUF9WRVJcdFx0XHQ5XHQvKiBQMlAgdmVyc2lvbjogOT1XaUZpIFAyUCB2MS4wICovXG4tI2RlZmluZSBQMlBfUFVCX0FGX0NBVEVHT1JZXHQweDA0XG4tI2RlZmluZSBQMlBfUFVCX0FGX0FDVElPTlx0MHgwOVxuICNkZWZpbmUgUDJQX0FGX0NBVEVHT1JZXHRcdDB4N2ZcbiAjZGVmaW5lIFAyUF9PVUlcdFx0XHRcJiMzNDtcXHg1MFxceDZGXFx4OUFcJiMzNDtcdC8qIFAyUCBPVUkgKi9cbiAjZGVmaW5lIFAyUF9PVUlfTEVOXHRcdDNcdFx0LyogUDJQIE9VSSBsZW5ndGggKi9cbkBAIC0xNDMsMTAgJiM0MzsxNDEsMTAgQEAgc3RydWN0IGJyY21mX3AycF9zY2FuX2xlIHtcbiAvKipcbiAgKiBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgLSBXaUZpIFAyUCBQdWJsaWMgQWN0aW9uIEZyYW1lXG4gICpcbi0gKiBAY2F0ZWdvcnk6IFAyUF9QVUJfQUZfQ0FURUdPUllcbi0gKiBAYWN0aW9uOiBQMlBfUFVCX0FGX0FDVElPTlxuJiM0MzsgKiBAY2F0ZWdvcnk6IFdMQU5fQ0FURUdPUllfUFVCTElDXG4mIzQzOyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUNcbiAgKiBAb3VpOiBQMlBfT1VJXG4tICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFAyUF9WRVJcbiYjNDM7ICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxuICAqIEBzdWJ0eXBlOiBPVUkgc3VidHlwZSAtIFAyUF9UWVBFXypcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yc3AgdHJhbnNhY3Rpb25cbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxuQEAgLTE2Niw3ICYjNDM7MTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHtcbiAgKlxuICAqIEBjYXRlZ29yeTogUDJQX0FGX0NBVEVHT1JZXG4gICogQG91aTogT1VJIC0gUDJQX09VSVxuLSAqIEB0eXBlOiBPVUkgVHlwZSAtIFAyUF9WRVJcbiYjNDM7ICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXG4gICogQHN1YnR5cGU6IE9VSSBTdWJ0eXBlIC0gUDJQX0FGXypcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yZXNwIHRyYW5hY3Rpb25cbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxuQEAgLTIyOCwxMCAmIzQzOzIyNiwzOCBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbiBcdGlmIChmcmFtZV9sZW4gXHUwMDNjIHNpemVvZigqcGFjdF9mcm0pKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4tXHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gUDJQX1BVQl9BRl9DQVRFR09SWSBcdTAwMjZcdTAwMjZcbi1cdCAgICBwYWN0X2ZybS1cdTAwM2VhY3Rpb24gPT0gUDJQX1BVQl9BRl9BQ1RJT04gXHUwMDI2XHUwMDI2XG4tXHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gUDJQX1ZFUiBcdTAwMjZcdTAwMjZcbi1cdCAgICBtZW1jbXAocGFjdF9mcm0tXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcbiYjNDM7XHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbiYjNDM7XHRcdHJldHVybiB0cnVlO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gZmFsc2U7XG4mIzQzO31cbiYjNDM7XG4mIzQzOy8qKlxuJiM0MzsgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLlxuJiM0MzsgKlxuJiM0MzsgKiBAZnJhbWU6IGFjdGlvbiBmcmFtZSBkYXRhLlxuJiM0MzsgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuXG4mIzQzOyAqXG4mIzQzOyAqIERldGVybWluZSBpZiBhY3Rpb24gZnJhbWUgaXMgZHBwIHB1YmxpYyBhY3Rpb24gdHlwZVxuJiM0MzsgKi9cbiYjNDM7c3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICpwYWN0X2ZybTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFmcmFtZSlcbiYjNDM7XHRcdHJldHVybiBmYWxzZTtcbiYjNDM7XG4mIzQzO1x0cGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7XG4mIzQzO1x0aWYgKGZyYW1lX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSkgLSAxKVxuJiM0MztcdFx0cmV0dXJuIGZhbHNlO1xuJiM0MztcbiYjNDM7XHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9EUFAgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtMjU3LDcgJiM0MzsyODMsNyBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcbiBcdFx0cmV0dXJuIGZhbHNlO1xuIFxuIFx0aWYgKGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gUDJQX0FGX0NBVEVHT1JZIFx1MDAyNlx1MDAyNlxuLVx0ICAgIGFjdF9mcm0tXHUwMDNldHlwZSAgPT0gUDJQX1ZFUiBcdTAwMjZcdTAwMjZcbiYjNDM7XHQgICAgYWN0X2ZybS1cdTAwM2V0eXBlICA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXHUwMDI2XHUwMDI2XG4gXHQgICAgbWVtY21wKGFjdF9mcm0tXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG5AQCAtMTI4MSw2ICYjNDM7MTMwNyw5IEBAIHN0YXRpYyBzMzIgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcJiMzNDtFbnRlclxcblwmIzM0Oyk7XG4gXG4gXHR2aWYgPSBwMnAtXHUwMDNlYnNzX2lkeFtQMlBBUElfQlNTQ0ZHX0RFVklDRV0udmlmO1xuJiM0MztcdGlmICghdmlmKVxuJiM0MztcdFx0dmlmID0gcDJwLVx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19QUklNQVJZXS52aWY7XG4mIzQzO1xuIFx0ZXJyID0gYnJjbWZfZmlsX2Jzc2NmZ19kYXRhX3NldCh2aWYtXHUwMDNlaWZwLCBcJiMzNDthY3RmcmFtZV9hYm9ydFwmIzM0OywgXHUwMDI2aW50X3ZhbCxcbiBcdFx0XHRcdFx0c2l6ZW9mKHMzMikpO1xuIFx0aWYgKGVycilcbkBAIC0xNzg5LDcgJiM0MzsxODE4LDkgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdFx0XHRnb3RvIGV4aXQ7XG4gXHRcdH1cbiBcdH0gZWxzZSBpZiAoYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4tXHRcdFx0XHRcdCAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4mIzQzO1x0XHRcdFx0XHQgICBhY3Rpb25fZnJhbWVfbGVuKSB8fFxuJiM0MztcdFx0ICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS1cdTAwM2VkYXRhLFxuJiM0MztcdFx0XHRcdFx0ICAgICAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XG4gXHRcdC8qIGRvIG5vdCBjb25maWd1cmUgYW55dGhpbmcuIGl0IHdpbGwgYmUgKi9cbiBcdFx0Lyogc2VudCB3aXRoIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uICAgICAqL1xuIFx0fSBlbHNlIHtcbkBAIC0xODI2LDYgJiM0MzsxODU3LDcgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdC8qIHZhbGlkYXRlIGNoYW5uZWwgYW5kIHAycCBpZXMgKi9cbiBcdGlmIChjb25maWdfYWZfcGFyYW1zLnNlYXJjaF9jaGFubmVsIFx1MDAyNlx1MDAyNlxuIFx0ICAgIElTX1AyUF9TT0NJQUxfQ0hBTk5FTChsZTMyX3RvX2NwdShhZl9wYXJhbXMtXHUwMDNlY2hhbm5lbCkpIFx1MDAyNlx1MDAyNlxuJiM0MztcdCAgICBwMnAtXHUwMDNlYnNzX2lkeFtQMlBBUElfQlNTQ0ZHX0RFVklDRV0udmlmIFx1MDAyNlx1MDAyNlxuIFx0ICAgIHAycC1cdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYtXHUwMDNlc2F2ZWRfaWUucHJvYmVfcmVxX2llX2xlbikge1xuIFx0XHRhZnhfaGRsID0gXHUwMDI2cDJwLVx1MDAzZWFmeF9oZGw7XG4gXHRcdGFmeF9oZGwtXHUwMDNlcGVlcl9saXN0ZW5fY2hhbiA9IGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cdTAwM2VjaGFubmVsKTtcbkBAIC0yNTQzLDQgJiM0MzsyNTc1LDMgQEAgdm9pZCBicmNtZl9wMnBfZGV0YWNoKHN0cnVjdCBicmNtZl9wMnBfaW5mbyAqcDJwKVxuIFx0LyoganVzdCBzZXQgaXQgYWxsIHRvIHplcm8gKi9cbiBcdG1lbXNldChwMnAsIDAsIHNpemVvZigqcDJwKSk7XG4gfVxuLVxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuaW5kZXggNzU1MmJkYjkxOTkxY2UuLmM0NjUyMDhjNDMzMTgyIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4mIzQzOyNkZWZpbmUgV0ZBX0FVVEhfRFBQXHRcdDB4MjAwMDAwIC8qIFdGQSBEUFAgQVVUSCAqL1xuJiM0MztcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfUlRTX0xFTlx0XHQyMzQ3XG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX0ZSQUdfTEVOXHRcdDIzNDZcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoxOTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4xbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUkNNRk1BQyYjMzQ7LAogICAgJiMzNDtCUkNNRk1BQ19VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticmNtZl9jZmc4MDIxMV9jb25uZWN0JiMzNDssCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX3N0YXJ0X2FwJiMzNDssCiAgICAmIzM0O2JyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBhbmQgYWN0aW9uIGZyYW1lcyBpbiB0aGUgQnJvYWRjb20gYnJjbWZtYWMgZHJpdmVyLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGxvZ2ljLCBBUCBzZWN1cml0eSBjb25maWd1cmF0aW9uLCBhbmQgUDJQIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBiZjhkOWMzZGU3ZmM4NWJlYzUwNjkwNGM1MTMwOWE2NWU5NWUxMWQ2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgOCAxODoxOTo0NCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMKaW5kZXggNGI3MDg0NWUxYTI2NDMuLmQ2MWMzZTAzYTEwNmE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYwpAQCAtOCw2ICYjNDM7OCw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgva2VybmVsLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZXRoZXJkZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9tb2R1bGUuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdW5hbGlnbmVkLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvdm1hbGxvYy5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9jZmc4MDIxMS5oJmd0OwogI2luY2x1ZGUgJmx0O25ldC9uZXRsaW5rLmgmZ3Q7CkBAIC0yMTU0LDYgJiM0MzsyMTU1LDkgQEAgYnJjbWZfc2V0X2tleV9tZ210KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LCBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSkKIAkJCXZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7CiAJCQlwcm9maWxlLSZndDtpc19mdCA9IHRydWU7CiAJCQlicmVhazsKJiM0MzsJCWNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDoKJiM0MzsJCQl2YWwgPSBXRkFfQVVUSF9EUFA7CiYjNDM7CQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlicGh5X2VycihkcnZyLCAmIzM0O2ludmFsaWQgYWttIHN1aXRlICglZClcbiYjMzQ7LAogCQkJCSBzbWUtJmd0O2NyeXB0by5ha21fc3VpdGVzWzBdKTsKQEAgLTI0NjYsNDMgJiM0MzsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsCiAJCWdvdG8gZG9uZTsKIAl9CiAKLQlpZiAoc21lLSZndDtjcnlwdG8ucHNrICZhbXA7JmFtcDsKLQkgICAgcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7Ci0JCWlmIChXQVJOX09OKHByb2ZpbGUtJmd0O3VzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7Ci0JCQllcnIgPSAtRUlOVkFMOwotCQkJZ290byBkb25lOwotCQl9Ci0JCWJyY21mX2RiZyhJTkZPLCAmIzM0O3VzaW5nIFBTSyBvZmZsb2FkXG4mIzM0Oyk7Ci0JCXByb2ZpbGUtJmd0O3VzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLOwotCX0KLQotCWlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7Ci0JCS8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqLwotCQllcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsICYjMzQ7c3VwX3dwYSYjMzQ7LCAxKTsKLQkJaWYgKGVyciAmbHQ7IDApIHsKLQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XG4mIzM0Oyk7Ci0JCQlnb3RvIGRvbmU7CiYjNDM7CWlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSkgewomIzQzOwkJdTMyIGFrbSA9IHNtZS0mZ3Q7Y3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS0mZ3Q7Y3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwOwomIzQzOwkJYm9vbCBpc19zYWVfYWttID0gYWttID09IFdMQU5fQUtNX1NVSVRFX1NBRSB8fAomIzQzOwkJCWFrbSA9PSBXTEFOX0FLTV9TVUlURV9GVF9PVkVSX1NBRTsKJiM0MzsKJiM0MzsJCWlmIChzbWUtJmd0O2NyeXB0by5wc2sgJmFtcDsmYW1wOyAhaXNfc2FlX2FrbSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgcHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFKSB7CiYjNDM7CQkJaWYgKFdBUk5fT04ocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9CiYjNDM7CQkJCSAgICBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7CiYjNDM7CQkJCWVyciA9IC1FSU5WQUw7CiYjNDM7CQkJCWdvdG8gZG9uZTsKJiM0MzsJCQl9CiYjNDM7CQkJYnJjbWZfZGJnKElORk8sICYjMzQ7dXNpbmcgUFNLIG9mZmxvYWRcbiYjMzQ7KTsKJiM0MzsJCQlwcm9maWxlLSZndDt1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSzsKIAkJfQotCX0KLQotCWlmIChwcm9maWxlLSZndDt1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spCi0JCWVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtJmd0O2NyeXB0by5wc2ssCi0JCQkJICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pOwotCWVsc2UgaWYgKHByb2ZpbGUtJmd0O3VzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkgewotCQkvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi8KLQkJZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgJiMzNDt3cGFpZSYjMzQ7LCBOVUxMLCAwKTsKLQkJaWYgKGVycikgewotCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtmYWlsZWQgdG8gY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FXG4mIzM0Oyk7Ci0JCQlnb3RvIGRvbmU7CiYjNDM7CQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkgewomIzQzOwkJCS8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqLwomIzQzOwkJCWVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgJiMzNDtzdXBfd3BhJiMzNDssIDEpOwomIzQzOwkJCWlmIChlcnIgJmx0OyAwKSB7CiYjNDM7CQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XG4mIzM0Oyk7CiYjNDM7CQkJCWdvdG8gZG9uZTsKJiM0MzsJCQl9CiYjNDM7CQl9IGVsc2UgewomIzQzOwkJCWVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgJiMzNDtzdXBfd3BhJiMzNDssIDApOwogCQl9Ci0JCWVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCAmYW1wO3NtZS0mZ3Q7Y3J5cHRvKTsKLQkJaWYgKCFlcnIgJmFtcDsmYW1wOyBzbWUtJmd0O2NyeXB0by5wc2spCiYjNDM7CQlpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKQogCQkJZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS0mZ3Q7Y3J5cHRvLnBzaywKIAkJCQkJICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pOwomIzQzOwkJZWxzZSBpZiAocHJvZmlsZS0mZ3Q7dXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFICZhbXA7JmFtcDsKJiM0MzsJCQkgc21lLSZndDtjcnlwdG8uc2FlX3B3ZCAmYW1wOyZhbXA7CiYjNDM7CQkJIGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkgewomIzQzOwkJCS8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqLwomIzQzOwkJCWlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCAmIzM0O3dwYWllJiMzNDssIE5VTEwsIDApKSB7CiYjNDM7CQkJCWJwaHlfZXJyKGRydnIsICYjMzQ7ZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxuJiMzNDspOwomIzQzOwkJCQlnb3RvIGRvbmU7CiYjNDM7CQkJfQomIzQzOwkJCWVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCAmYW1wO3NtZS0mZ3Q7Y3J5cHRvKTsKJiM0MzsJCQlpZiAoIWVyciAmYW1wOyZhbXA7IHNtZS0mZ3Q7Y3J5cHRvLnBzaykKJiM0MzsJCQkJZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS0mZ3Q7Y3J5cHRvLnBzaywKJiM0MzsJCQkJCQkgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7CiYjNDM7CQl9CiYjNDM7CQlpZiAoZXJyKQomIzQzOwkJCWdvdG8gZG9uZTsKIAl9Ci0JaWYgKGVycikKLQkJZ290byBkb25lOwotCiAJLyogSm9pbiB3aXRoIHNwZWNpZmljIEJTU0lEIGFuZCBjYWNoZWQgU1NJRAogCSAqIElmIFNTSUQgaXMgemVybyBqb2luIGJhc2VkIG9uIEJTU0lEIG9ubHkKIAkgKi8KQEAgLTQ1MTksNiAmIzQzOzQ1MzAsMTEgQEAgc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfd3BhX291aSh1OCAqb3VpLCBib29sIGlzX3Jzbl9pZSkKIAlyZXR1cm4gKG1lbWNtcChvdWksIFdQQV9PVUksIFRMVl9PVUlfTEVOKSA9PSAwKTsKIH0KIAomIzQzO3N0YXRpYyBib29sIGJyY21mX3ZhbGlkX2RwcF9zdWl0ZSh1OCAqb3VpKQomIzQzO3sKJiM0MzsJcmV0dXJuIGdldF91bmFsaWduZWRfYmUzMihvdWkpID09IFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA7CiYjNDM7fQomIzQzOwogc3RhdGljIHMzMgogYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsCkBAIC00NjMyLDQyICYjNDM7NDY0OCw0NyBAQCBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsCiAJCWdvdG8gZXhpdDsKIAl9CiAJZm9yIChpID0gMDsgaSAmbHQ7IGNvdW50OyBpJiM0MzsmIzQzOykgewotCQlpZiAoIWJyY21mX3ZhbGlkX3dwYV9vdWkoJmFtcDtkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHsKJiM0MzsJCWlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoJmFtcDtkYXRhW29mZnNldF0pKSB7CiYjNDM7CQkJd3BhX2F1dGggfD0gV0ZBX0FVVEhfRFBQOwomIzQzOwkJCW9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47CiYjNDM7CQl9IGVsc2UgaWYgKGJyY21mX3ZhbGlkX3dwYV9vdWkoJmFtcDtkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHsKJiM0MzsJCQlvZmZzZXQgJiM0Mzs9IFRMVl9PVUlfTEVOOwomIzQzOwkJCXN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7CiYjNDM7CQkJY2FzZSBSU05fQUtNX05PTkU6CiYjNDM7CQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX05PTkVcbiYjMzQ7KTsKJiM0MzsJCQkJd3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9VTlNQRUNJRklFRFxuJiMzNDspOwomIzQzOwkJCQlpc19yc25faWUgPwomIzQzOwkJCQkJKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOgomIzQzOwkJCQkJKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1VOU1BFQ0lGSUVEKTsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1BTSzoKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fUFNLXG4mIzM0Oyk7CiYjNDM7CQkJCWlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6CiYjNDM7CQkJCQkgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7CiYjNDM7CQkJCWJyZWFrOwomIzQzOwkJCWNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9NRlBfUFNLXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2OwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQljYXNlIFJTTl9BS01fU0hBMjU2XzFYOgomIzQzOwkJCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9NRlBfMVhcbiYjMzQ7KTsKJiM0MzsJCQkJd3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjsKJiM0MzsJCQkJYnJlYWs7CiYjNDM7CQkJY2FzZSBSU05fQUtNX1NBRToKJiM0MzsJCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fU0FFXG4mIzM0Oyk7CiYjNDM7CQkJCXdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLOwomIzQzOwkJCQlicmVhazsKJiM0MzsJCQlkZWZhdWx0OgomIzQzOwkJCQlicGh5X2VycihkcnZyLCAmIzM0O0ludmFsaWQga2V5IG1nbXQgaW5mb1xuJiMzNDspOwomIzQzOwkJCX0KJiM0MzsJCX0gZWxzZSB7CiAJCQllcnIgPSAtRUlOVkFMOwogCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtpbnZhbGlkIE9VSVxuJiMzNDspOwogCQkJZ290byBleGl0OwogCQl9Ci0JCW9mZnNldCAmIzQzOz0gVExWX09VSV9MRU47Ci0JCXN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7Ci0JCWNhc2UgUlNOX0FLTV9OT05FOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTk9ORVxuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6Ci0JCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9VTlNQRUNJRklFRFxuJiMzNDspOwotCQkJaXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOgotCQkJCSAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpOwotCQkJYnJlYWs7Ci0JCWNhc2UgUlNOX0FLTV9QU0s6Ci0JCQlicmNtZl9kYmcoVFJBQ0UsICYjMzQ7UlNOX0FLTV9QU0tcbiYjMzQ7KTsKLQkJCWlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfUFNLKSA6Ci0JCQkJICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spOwotCQkJYnJlYWs7Ci0JCWNhc2UgUlNOX0FLTV9TSEEyNTZfUFNLOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fTUZQX1BTS1xuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7Ci0JCQlicmVhazsKLQkJY2FzZSBSU05fQUtNX1NIQTI1Nl8xWDoKLQkJCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtSU05fQUtNX01GUF8xWFxuJiMzNDspOwotCQkJd3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjsKLQkJCWJyZWFrOwotCQljYXNlIFJTTl9BS01fU0FFOgotCQkJYnJjbWZfZGJnKFRSQUNFLCAmIzM0O1JTTl9BS01fU0FFXG4mIzM0Oyk7Ci0JCQl3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSzsKLQkJCWJyZWFrOwotCQlkZWZhdWx0OgotCQkJYnBoeV9lcnIoZHJ2ciwgJiMzNDtJbnZhbGlkIGtleSBtZ210IGluZm9cbiYjMzQ7KTsKLQkJfQogCQlvZmZzZXQmIzQzOyYjNDM7OwogCX0KIApAQCAtNDY4NywxMCAmIzQzOzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLAogCQkJCSAqLwogCQkJCWlmICghKHdwYV9hdXRoICZhbXA7IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8CiAJCQkJCQkgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfAomIzQzOwkJCQkJCSAgV0ZBX0FVVEhfRFBQIHwKIAkJCQkJCSAgV1BBM19BVVRIX1NBRV9QU0spKSkgewogCQkJCQllcnIgPSAtRUlOVkFMOwogCQkJCQlnb3RvIGV4aXQ7CiAJCQkJfQomIzQzOwogCQkJCS8qIEZpcm13YXJlIGhhcyByZXF1aXJlbWVudCB0aGF0IFdQQTJfQVVUSF9QU0svCiAJCQkJICogV1BBMl9BVVRIX1VOU1BFQ0lGSUVEIGJlIHNldCwgaWYgU0hBMjU2IE9VSQogCQkJCSAqIGlzIHRvIGJlIGluY2x1ZGVkIGluIHRoZSByc24gaWUuCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKaW5kZXggNmUwYzkwZjQ3MThiNTguLjJjMWY1MmVkNTEzODAwIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jCkBAIC02LDYgJiM0Mzs2LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9uZXRkZXZpY2UuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9ldGhlcmRldmljZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3J0bmV0bGluay5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC91bmFsaWduZWQuaCZndDsKICNpbmNsdWRlICZsdDtuZXQvY2ZnODAyMTEuaCZndDsKIAogI2luY2x1ZGUgJmx0O2JyY211X3dpZmkuaCZndDsKQEAgLTQ0LDkgJiM0Mzs0NSw2IEBACiAKICNkZWZpbmUgQlJDTUZfU0NCX1RJTUVPVVRfVkFMVUUJMjAKIAotI2RlZmluZSBQMlBfVkVSCQkJOQkvKiBQMlAgdmVyc2lvbjogOT1XaUZpIFAyUCB2MS4wICovCi0jZGVmaW5lIFAyUF9QVUJfQUZfQ0FURUdPUlkJMHgwNAotI2RlZmluZSBQMlBfUFVCX0FGX0FDVElPTgkweDA5CiAjZGVmaW5lIFAyUF9BRl9DQVRFR09SWQkJMHg3ZgogI2RlZmluZSBQMlBfT1VJCQkJJiMzNDtceDUwXHg2Rlx4OUEmIzM0OwkvKiBQMlAgT1VJICovCiAjZGVmaW5lIFAyUF9PVUlfTEVOCQkzCQkvKiBQMlAgT1VJIGxlbmd0aCAqLwpAQCAtMTQzLDEwICYjNDM7MTQxLDEwIEBAIHN0cnVjdCBicmNtZl9wMnBfc2Nhbl9sZSB7CiAvKioKICAqIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAtIFdpRmkgUDJQIFB1YmxpYyBBY3Rpb24gRnJhbWUKICAqCi0gKiBAY2F0ZWdvcnk6IFAyUF9QVUJfQUZfQ0FURUdPUlkKLSAqIEBhY3Rpb246IFAyUF9QVUJfQUZfQUNUSU9OCiYjNDM7ICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQwomIzQzOyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMKICAqIEBvdWk6IFAyUF9PVUkKLSAqIEBvdWlfdHlwZTogT1VJIHR5cGUgLSBQMlBfVkVSCiYjNDM7ICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUAogICogQHN1YnR5cGU6IE9VSSBzdWJ0eXBlIC0gUDJQX1RZUEVfKgogICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcnNwIHRyYW5zYWN0aW9uCiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLgpAQCAtMTY2LDcgJiM0MzsxNjQsNyBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgewogICoKICAqIEBjYXRlZ29yeTogUDJQX0FGX0NBVEVHT1JZCiAgKiBAb3VpOiBPVUkgLSBQMlBfT1VJCi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSCiYjNDM7ICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQCiAgKiBAc3VidHlwZTogT1VJIFN1YnR5cGUgLSBQMlBfQUZfKgogICogQGRpYWxvZ190b2tlbjogbm9uemVybywgaWRlbnRpZmllcyByZXEvcmVzcCB0cmFuYWN0aW9uCiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLgpAQCAtMjI4LDEwICYjNDM7MjI2LDM4IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKQogCWlmIChmcmFtZV9sZW4gJmx0OyBzaXplb2YoKnBhY3RfZnJtKSkKIAkJcmV0dXJuIGZhbHNlOwogCi0JaWYgKHBhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBQMlBfUFVCX0FGX0NBVEVHT1JZICZhbXA7JmFtcDsKLQkgICAgcGFjdF9mcm0tJmd0O2FjdGlvbiA9PSBQMlBfUFVCX0FGX0FDVElPTiAmYW1wOyZhbXA7Ci0JICAgIHBhY3RfZnJtLSZndDtvdWlfdHlwZSA9PSBQMlBfVkVSICZhbXA7JmFtcDsKLQkgICAgbWVtY21wKHBhY3RfZnJtLSZndDtvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKQomIzQzOwlpZiAocGFjdF9mcm0tJmd0O2NhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDICZhbXA7JmFtcDsKJiM0MzsJICAgIHBhY3RfZnJtLSZndDthY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBwYWN0X2ZybS0mZ3Q7b3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQICZhbXA7JmFtcDsKJiM0MzsJICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS0mZ3Q7b3VpKSA9PSBXTEFOX09VSV9XRkEpCiYjNDM7CQlyZXR1cm4gdHJ1ZTsKJiM0MzsKJiM0MzsJcmV0dXJuIGZhbHNlOwomIzQzO30KJiM0MzsKJiM0MzsvKioKJiM0MzsgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLgomIzQzOyAqCiYjNDM7ICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS4KJiM0MzsgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuCiYjNDM7ICoKJiM0MzsgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGUKJiM0MzsgKi8KJiM0MztzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pCiYjNDM7ewomIzQzOwlzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKnBhY3RfZnJtOwomIzQzOwomIzQzOwlpZiAoIWZyYW1lKQomIzQzOwkJcmV0dXJuIGZhbHNlOwomIzQzOwomIzQzOwlwYWN0X2ZybSA9IChzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKilmcmFtZTsKJiM0MzsJaWYgKGZyYW1lX2xlbiAmbHQ7IHNpemVvZihzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUpIC0gMSkKJiM0MzsJCXJldHVybiBmYWxzZTsKJiM0MzsKJiM0MzsJaWYgKHBhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBXTEFOX0NBVEVHT1JZX1BVQkxJQyAmYW1wOyZhbXA7CiYjNDM7CSAgICBwYWN0X2ZybS0mZ3Q7YWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgJmFtcDsmYW1wOwomIzQzOwkgICAgcGFjdF9mcm0tJmd0O291aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX0RQUCAmYW1wOyZhbXA7CiYjNDM7CSAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tJmd0O291aSkgPT0gV0xBTl9PVUlfV0ZBKQogCQlyZXR1cm4gdHJ1ZTsKIAogCXJldHVybiBmYWxzZTsKQEAgLTI1Nyw3ICYjNDM7MjgzLDcgQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3AycF9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pCiAJCXJldHVybiBmYWxzZTsKIAogCWlmIChhY3RfZnJtLSZndDtjYXRlZ29yeSA9PSBQMlBfQUZfQ0FURUdPUlkgJmFtcDsmYW1wOwotCSAgICBhY3RfZnJtLSZndDt0eXBlICA9PSBQMlBfVkVSICZhbXA7JmFtcDsKJiM0MzsJICAgIGFjdF9mcm0tJmd0O3R5cGUgID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCAmYW1wOyZhbXA7CiAJICAgIG1lbWNtcChhY3RfZnJtLSZndDtvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKQogCQlyZXR1cm4gdHJ1ZTsKIApAQCAtMTI4MSw2ICYjNDM7MTMwNyw5IEBAIHN0YXRpYyBzMzIgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKQogCWJyY21mX2RiZyhUUkFDRSwgJiMzNDtFbnRlclxuJiMzNDspOwogCiAJdmlmID0gcDJwLSZndDtic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWY7CiYjNDM7CWlmICghdmlmKQomIzQzOwkJdmlmID0gcDJwLSZndDtic3NfaWR4W1AyUEFQSV9CU1NDRkdfUFJJTUFSWV0udmlmOwomIzQzOwogCWVyciA9IGJyY21mX2ZpbF9ic3NjZmdfZGF0YV9zZXQodmlmLSZndDtpZnAsICYjMzQ7YWN0ZnJhbWVfYWJvcnQmIzM0OywgJmFtcDtpbnRfdmFsLAogCQkJCQlzaXplb2YoczMyKSk7CiAJaWYgKGVycikKQEAgLTE3ODksNyAmIzQzOzE4MTgsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLAogCQkJZ290byBleGl0OwogCQl9CiAJfSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtJmd0O2RhdGEsCi0JCQkJCSAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7CiYjNDM7CQkJCQkgICBhY3Rpb25fZnJhbWVfbGVuKSB8fAomIzQzOwkJICAgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKGFjdGlvbl9mcmFtZS0mZ3Q7ZGF0YSwKJiM0MzsJCQkJCSAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkgewogCQkvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovCiAJCS8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi8KIAl9IGVsc2UgewpAQCAtMTgyNiw2ICYjNDM7MTg1Nyw3IEBAIGJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsCiAJLyogdmFsaWRhdGUgY2hhbm5lbCBhbmQgcDJwIGllcyAqLwogCWlmIChjb25maWdfYWZfcGFyYW1zLnNlYXJjaF9jaGFubmVsICZhbXA7JmFtcDsKIAkgICAgSVNfUDJQX1NPQ0lBTF9DSEFOTkVMKGxlMzJfdG9fY3B1KGFmX3BhcmFtcy0mZ3Q7Y2hhbm5lbCkpICZhbXA7JmFtcDsKJiM0MzsJICAgIHAycC0mZ3Q7YnNzX2lkeFtQMlBBUElfQlNTQ0ZHX0RFVklDRV0udmlmICZhbXA7JmFtcDsKIAkgICAgcDJwLSZndDtic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYtJmd0O3NhdmVkX2llLnByb2JlX3JlcV9pZV9sZW4pIHsKIAkJYWZ4X2hkbCA9ICZhbXA7cDJwLSZndDthZnhfaGRsOwogCQlhZnhfaGRsLSZndDtwZWVyX2xpc3Rlbl9jaGFuID0gbGUzMl90b19jcHUoYWZfcGFyYW1zLSZndDtjaGFubmVsKTsKQEAgLTI1NDMsNCAmIzQzOzI1NzUsMyBAQCB2b2lkIGJyY21mX3AycF9kZXRhY2goc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnApCiAJLyoganVzdCBzZXQgaXQgYWxsIHRvIHplcm8gKi8KIAltZW1zZXQocDJwLCAwLCBzaXplb2YoKnAycCkpOwogfQotCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmgKaW5kZXggNzU1MmJkYjkxOTkxY2UuLmM0NjUyMDhjNDMzMTgyIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oCkBAIC0yMzMsNiAmIzQzOzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpCiAKICNkZWZpbmUgV1BBM19BVVRIX1NBRV9QU0sJMHg0MDAwMAkvKiBTQUUgd2l0aCA0LXdheSBoYW5kc2hha2UgKi8KIAomIzQzOyNkZWZpbmUgV0ZBX0FVVEhfRFBQCQkweDIwMDAwMCAvKiBXRkEgRFBQIEFVVEggKi8KJiM0MzsKICNkZWZpbmUgRE9UMTFfREVGQVVMVF9SVFNfTEVOCQkyMzQ3CiAjZGVmaW5lIERPVDExX0RFRkFVTFRfRlJBR19MRU4JCTIzNDYKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MzY4CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogNTMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgUGxhbiBmb3IgYSBEUFAvU0FFIEVuaGFuY2VtZW50IGluIGJyY21mbWFjKioKCk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gYW5kIGFjdGlvbiBmcmFtZSBzdXBwb3J0IHdpdGhpbiB0aGUgQnJvYWRjb20gYGJyY21mbWFjYCBkcml2ZXIuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGNmZzgwMjExLmNgIGFuZCBgcDJwLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gaGFuZGxlIFNBRS9EUFAgYW5kIFBTSyBvZmZsb2FkIGxvZ2ljLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSB0byBhIHdpcmVsZXNzIGRyaXZlciwgc28gaXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLgoKTXkgZmlyc3QgdGhvdWdodCBpcywgY2FuIHdlIGV2ZW4gcmVhY2ggdGhpcyBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gYGJyY21mbWFjYCBpcyBCcm9hZGNvbSYjMzk7cyBJRUVFODAyLjExbi9hYyBkcml2ZXIgZm9yIFBDSWUvU0RJTy9VU0IuIEx1Y2tpbHksIFVTQiBpcyBvZnRlbiBlbXVsYXRhYmxlLiBXZSBjb3VsZCB1c2UgYGR1bW15X2hjZGAgb3IsIGV2ZW4gYmV0dGVyLCBJIHJlbWVtYmVyIHN5emthbGxlciBoYXMgYSBVU0IgZnV6emVyIHNwZWNpZmljYWxseSBmb3IgdGhpcyBraW5kIG9mIHRoaW5nLiBTRElPIG1pZ2h0IGJlIHRyaWNraWVyLCBidXQgUENJZSBjYW4gYmUgZW11bGF0ZWQgYXMgd2VsbC4gVGhlIFVTQiBmdXp6ZXIgaXMga2V5IGhlcmUuIEl0IGNhbiBlbXVsYXRlIHdpcmVsZXNzIGRvbmdsZXMuIFRoaXMgaXMgZnVsbE1BQywgc28gaXQgaW50ZXJmYWNlcyBkaXJlY3RseSB3aXRoIGNmZzgwMjExLiBXZSBjYW4gZnV6eiBicmNtZm1hYyB0aHJvdWdoIFVTQiwgd2hpY2ggc3l6a2FsbGVyIHN1cHBvcnRzLiBJdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuCgpMZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdGhhdCB0aGlzIHBhdGNoIGFmZmVjdHMuIEkgbmVlZCB0byBmb2N1cyB0aGUgZnV6emluZyBlZmZvcnRzIG9uIHRoZXNlOgoKKiAgIGBicmNtZl9zZXRfa2V5X21nbXRgCiogICBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAKKiAgIGBicmNtZl92YWxpZF9kcHBfc3VpdGVgCiogICBgYnJjbWZfY29uZmlndXJlX3dwYWllYAoqICAgYGJyY21mX3AycF9pc19wdWJfYWN0aW9uYAoqICAgYGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbmAKKiAgIGBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbmAKKiAgIGBicmNtZl9wMnBfYWJvcnRfYWN0aW9uX2ZyYW1lYAoqICAgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAKCkZvciBlbmFibGluZyB0aGUgZHJpdmVyLCBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZXNlIGNvbmZpZ3Mgc2V0OiBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCBmb3IgdGhlIFVTQiBmdXp6aW5nLCBhbmQgYENGRzgwMjExYCwgb2YgY291cnNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY29uZmlybSBob3cgdGhvc2UgYXJlIHNldCB1cC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQlJDTUZNQUMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6MTpjb25maWcgQlJDTUZNQUNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXHR0cmlzdGF0ZSBcJiMzNDtCcm9hZGNvbSBGdWxsTUFDIFdMQU4gZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTItXHRib29sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE0OmNvbmZpZyBCUkNNRk1BQ19QUk9UT19NU0dCVUZcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE1LVx0Ym9vbFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNzpjb25maWcgQlJDTUZNQUNfU0RJT1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXHRib29sIFwmIzM0O1NESU8gYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTI4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzAtXHRib29sIFwmIzM0O1VTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzo0MDpjb25maWcgQlJDTUZNQUNfUENJRVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctNDEtXHRib29sIFwmIzM0O1BDSUUgYnVzIGludGVyZmFjZSBzdXBwb3J0IGZvciBGdWxsTUFDIGRyaXZlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE4OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkwNjkKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAxOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbWluZyBpbiBvbiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gQnJvYWRjb20mIzM5O3MgZmlybXdhcmUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gYWRkIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIHRvIGBFbmFibGVDb25maWdzYC4gVGhhdCBjb3ZlcnMgdGhlIGNvcmUgTUFDIGFuZCB0aGUgVVNCLXNwZWNpZmljIGludGVyZmFjZS4gSSYjMzk7bSBhc3N1bWluZyB0aGUgb3RoZXIgUENJZSBhbmQgU0RJTyB2YXJpYW50cywgYEJSQ01GTUFDX1NESU9gIGFuZCBgQlJDTUZNQUNfUENJRWAsIGFyZSBoYW5kbGVkIGVsc2V3aGVyZSBvciBhcmUgbGVzcyByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQgdGFzay4gSSYjMzk7bSBub3RpbmcgdGhlc2UgYXMgdGhpcyBpbmZvcm1hdGlvbiBtYXkgYmVjb21lIGltcG9ydGFudCBsYXRlciwgYXMgY29udGV4dC4KCk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBmdW5jdGlvbnMgd2l0aGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgb25lcyB0aGF0IGFyZSBzdGFuZGluZyBvdXQgcmlnaHQgbm93IGFyZTogYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFsbCBzZWVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQsIGNvbm5lY3Rpb24gaGFuZGxpbmcsIGFuZCBwb3RlbnRpYWxseSBQMlAgd2l0aCBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpLgoKSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjazogc2luY2UgYEJSQ01GTUFDYCBpcyB3aGF0IEkmIzM5O20gZGVhbGluZyB3aXRoLCBpdCBpbXBsaWNpdGx5IGJyaW5ncyBpbiBgQ0ZHODAyMTFgIGFzIGEgZGVwZW5kZW5jeS4gTm8gbmVlZCB0byBleHBsaWNpdGx5IGxpc3QgaXQuIFRoYXQgc2F2ZXMgYSBzdGVwLiBJJiMzOTttIGdvaW5nIHRvIHZlcmlmeSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIG5leHQgcGhhc2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY2ZnODAyMTFfY29ubmVjdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMzYzPXN0YXRpYyBzMzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjIzNjQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTIzNjUtXHRcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01OTU3PXN0YXRpYyBzdHJ1Y3QgY2ZnODAyMTFfb3BzIGJyY21mX2NmZzgwMjExX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01OTc0LVx0LnNldF9wb3dlcl9tZ210ID0gYnJjbWZfY2ZnODAyMTFfc2V0X3Bvd2VyX21nbXQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1OTc1Olx0LmNvbm5lY3QgPSBicmNtZl9jZmc4MDIxMV9jb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTk3Ni1cdC5kaXNjb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfZGlzY29ubmVjdCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02MTQ2PXN0YXRpYyB2b2lkIGJyY21mX2NsZWFyX2Fzc29jX2llcyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjE0Ny17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2MTQ4Olx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYxNDktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjI5Nj1zdGF0aWMgczMyIGJyY21mX2dldF9hc3NvY19pZXMoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzAwLVx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Fzc29jX2llbGVuX2xlICphc3NvY19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjMwMTpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzAyLVx0c3RydWN0IGJyY21mX2NmZzgwMjExX2VkY2ZfYWNwYXJhbSBlZGNmX2FjcGFyYW1faW5mb1tFRENGX0FDX0NPVU5UXTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02Mzc4PWJyY21mX2Jzc19yb2FtaW5nX2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02MzgzLVx0c3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSBcdTAwMjZpZnAtXHUwMDNldmlmLVx1MDAzZXByb2ZpbGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2Mzg0Olx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY29ubl9pbmZvID0gY2ZnX3RvX2Nvbm4oY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYzODUtXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gY2ZnX3RvX3dpcGh5KGNmZyk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NjQ1MT1icmNtZl9ic3NfY29ubmVjdF9kb25lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjQ1Ni1cdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9wcm9maWxlICpwcm9maWxlID0gXHUwMDI2aWZwLVx1MDAzZXZpZi1cdTAwM2Vwcm9maWxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjQ1NzpcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy02NDU4LVx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9MjIwPXN0cnVjdCBicmNtZl9jZmc4MDIxMV92aWYge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNS0vKiBhc3NvY2lhdGlvbiBpbmZvcm0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oOjIzNjpzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNy1cdHU4ICpyZXFfaWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9MzQyPXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0zNDktXHRzdHJ1Y3Qgd2xfY2ZnODAyMTFfYnNzX2luZm8gKmJzc19pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6MzUwOlx0c3RydWN0IGJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyBjb25uX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0zNTEtXHRzdHJ1Y3QgYnJjbWZfcG1rX2xpc3RfbGUgcG1rX2xpc3Q7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9NDMzPXN0YXRpYyBpbmxpbmUgc3RydWN0XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaDo0MzQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjZmdfdG9fY29ubihzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmgtNDM1LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTU0NAoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDE3NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFdpLUZpIERyaXZlciBGdW5jdGlvbnMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIGRvd24gdGhpcyBzZXQgb2YgZnVuY3Rpb25zLiBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgQnJvYWRjb20gV2ktRmkgZHJpdmVyLCBsaWtlbHkgQ0ZHODAyMTEtcmVsYXRlZCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBNeSBpbW1lZGlhdGUgZm9jdXMsIGFzIGFuIGV4cGVydCwgaXMgb24gaG93IHRoZXNlIGZ1bmN0aW9ucyBpbnRlcmFjdCB3aXRoaW4gYSBzcGVjaWZpYyBjb250cm9sIGZsb3csIGVzcGVjaWFsbHkgcmVnYXJkaW5nIHNlY3VyaXR5IGFuZCBwZWVyLXRvLXBlZXIgKFAyUCkgY29ubmVjdGlvbnMuCgpGaXJzdCwgd2UgaGF2ZSB0aGUgY29ubmVjdGlvbiBzZXR1cCAoYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgKSwga2V5IG1hbmFnZW1lbnQgKGBicmNtZl9zZXRfa2V5X21nbXRgKSwgYW5kIFdQQSBpbmZvcm1hdGlvbiBlbGVtZW50IGNvbmZpZ3VyYXRpb24gKGBicmNtZl9jb25maWd1cmVfd3BhaWVgKS4gU3RhbmRhcmQgc3R1ZmYsIGJ1dCB3ZSBuZWVkIHRvIHNlZSBob3cgdGhleSYjMzk7cmUgdXNlZC4gVGhlbiwgd2UgaGF2ZSBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZSBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIGFzcGVjdCBpcyBpbnRlcmVzdGluZy4KClJpZ2h0LCBzbyBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYCBpcyBzdGF0aWMuIFRoYXQmIzM5O3MgYSBiaXQgb2YgYSByb2FkYmxvY2sgZm9yIGRpcmVjdCBhbmFseXNpcywgYXNzdW1pbmcgaXQmIzM5O3MgaW5saW5lZC4gVGhpcyBtZWFucyB3ZSBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIGNhbGwgc2l0ZXMgb2YgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAsIHdoaWNoIHNob3VsZCBnaXZlIG1lIGluc2lnaHQgaW50byBob3cgRFBQIGFjdGlvbnMgYXJlIGluaXRpYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIHRodXMgZXhwb3NlIHRoZSB1c2FnZSBvZiB0aGF0IGBzdGF0aWNgIGZ1bmN0aW9uIGluIGNvbnRleHQuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGZ1bmN0aW9uIG5vdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTUzNj1icmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTYyNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU2Mjg6XHRcdGFjayA9IGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShjZmcsIGNmZ190b19uZGV2KGNmZyksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI5LVx0XHRcdFx0XHRcdCAgYWZfcGFyYW1zKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmM9MTcyOT1zdGF0aWMgYm9vbCBicmNtZl9wMnBfY2hlY2tfZHdlbGxfb3ZlcmZsb3codTMyIHJlcXVlc3RlZF9kd2VsbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0MC0vKipcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzQxOiAqIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZSgpIC0gc2VuZCBhY3Rpb24gZnJhbWUgLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDItICpcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0Ni0gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzQ3OmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmMtMTc0OC1cdFx0XHRcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmg9MTY4PWludCBicmNtZl9wMnBfbm90aWZ5X2FjdGlvbl90eF9jb21wbGV0ZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcwLVx0XHRcdFx0XHR2b2lkICpkYXRhKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaDoxNzE6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaC0xNzItXHRcdFx0XHQgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI4MjUKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIHNlZSB3aGF0IEkmIzM5O20gdGhpbmtpbmcgaGVyZSwgZnJvbSBhIHRlY2huaWNhbCBwZXJzcGVjdGl2ZS4uLgoKKipFeHBsb3JpbmcgdGhlIFdMQU4gRHJpdmVyJiMzOTtzIENvbnRyb2wgUGxhbmUqKgoKUmlnaHQsIHNvIEkmIzM5O20gY3VycmVudGx5IG1hcHBpbmcgb3V0IHRoZSBjb250cm9sIHBsYW5lIGZ1bmN0aW9uYWxpdHkgaW4gdGhpcyBCcm9hZGNvbSBXaUZpIGRyaXZlci4gSSYjMzk7dmUgbm90ZWQgdGhhdCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCYjMzk7cyBhY2Nlc3NpYmxlIGZyb20gb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbS4gR29vZCB0byBrbm93LiBBbmQgdGhlIGNvbm5lY3Rpb24gc2V0dXAgcm91dGluZSwgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLCB0aGF0JiMzOTtzIGFjY2Vzc2libGUgdG9vLiBOb3csIHRoZSBgYnJjbWZfc2V0X2tleV9tZ210YCBmdW5jdGlvbiwgdGhhdCYjMzk7cyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGF0LCBpZiBpdCBpcyBzdGF0aWMsIHRoZW4gb25seSB0aGUgY29kZSBpbiB0aGlzIHNvdXJjZSBmaWxlIGNhbiBjYWxsIGl0LiBCZXN0IGNoZWNrIHdoZXJlIGl0JiMzOTtzIGJlaW5nIHVzZWQgd2l0aGluIHRoZSBmaWxlLCB0byB1bmRlcnN0YW5kIGl0cyByb2xlLiBJIG5lZWQgdG8gdHJhY2UgYmFjayBmcm9tIHRoYXQgZnVuY3Rpb24gYW5kIHNlZSB3aGF0JiMzOTtzIGludm9raW5nIGl0LiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsZXJzIHdpbGwgc2hlZCBsaWdodCBvbiB0aGUga2V5IG1hbmFnZW1lbnQgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfc2V0X2tleV9tZ210JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTIwODc9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6MjA4ODpicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9MjM2ND1icmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTI0NjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyNDYxOlx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYyLVx0aWYgKGVycikge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzQ4MQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDUwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHN1bW1hcnksIGFzIHRob3VnaCBJJiMzOTttIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgV1BBIEtleSBNYW5hZ2VtZW50KioKCk9rYXksIEkmIzM5O20gZGlnZ2luZyBpbnRvIGhvdyB0aGUgQnJvYWRjb20gZHJpdmVyIGhhbmRsZXMga2V5IG1hbmFnZW1lbnQsIHNwZWNpZmljYWxseSB3aXRoIFdQQS4gSSBzZWUgdGhhdCB0aGUgYGJyY21mX3NldF9rZXlfbWdtdGAgZnVuY3Rpb24gaXMgZ2V0dGluZyBjYWxsZWQsIGFuZCBhIHF1aWNrIGxvb2sgc2hvd3MgbWUgdGhhdCBpdCYjMzk7cyBiZWluZyB0cmlnZ2VyZWQgYnkgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLiBUaGF0IG1ha2VzIHNlbnNlOyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgaXMgd2hlcmUgeW91JiMzOTtkIGV4cGVjdCBrZXkgY29uZmlndXJhdGlvbiB0byBoYXBwZW4uIE5vdywgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAuLi50aGF0JiMzOTtzIHN0YXRpYywgc28gaXTigJlzIGxpa2VseSBpbnRlcm5hbCB0byBhIG1vZHVsZS4gTGV0JiMzOTtzIHNlZSB3aG8mIzM5O3MgY2FsbGluZyAqaXQqLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBXUEEgSW5mb3JtYXRpb24gRWxlbWVudCAoSUUpIGlzIGJlaW5nIGNvbnN0cnVjdGVkIGFuZCBzZXQuIFVuZGVyc3RhbmRpbmcgdGhlIGNhbGxpbmcgY29udGV4dCBvZiBgYnJjbWZfY29uZmlndXJlX3dwYWllYCB3aWxsIGdpdmUgbWUgY3JpdGljYWwgaW5zaWdodHMgaW50byB0aGUgb3ZlcmFsbCBXUEEgc2V0dXAgZmxvdy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YnJjbWZfY29uZmlndXJlX3dwYWllJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTQ1Mzg9c3RhdGljIHMzMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy00NTQwLVx0XHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4ND1icmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoc3RydWN0IGJyY21mX2lmICppZnAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTEwMy1cdFx0XHQvKiBXUEEgSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMDQ6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgd3BhX2llLCBmYWxzZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVx0XHRcdGlmIChlcnIgXHUwMDNjIDApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cdFx0XHQvKiBSU04gSUUgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUxMTM6XHRcdFx0ZXJyID0gYnJjbWZfY29uZmlndXJlX3dwYWllKGlmcCwgdG1wX2llLCB0cnVlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMTQtXHRcdFx0aWYgKGVyciBcdTAwM2MgMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQyODMKCQkJCQkJCW91dHB1dDogMjMKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gU2VjdXJpdHkgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YCBpcyByZXNwb25zaWJsZSBmb3IgaGFuZGxpbmcgc2VjdXJpdHkgY29uZmlndXJhdGlvbi4gQW5kIGl0IGxvb2tzIGxpa2UgaXQgY2FsbHMgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRoZSBjYWxscyB0byBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YC4gS25vd2luZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBzZWN1cml0eSBmcmFtZXdvcmsuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgY2FsbCBncmFwaCByZXZlYWxzLiBUaGlzIGNvdWxkIGJlIGEgY3JpdGljYWwgcG9pbnQgb2YgZW50cnkgZm9yIHNlY3VyaXR5LXJlbGF0ZWQgcGFyYW1ldGVycywgYW5kIHBvdGVudGlhbGx5IGFuIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcyB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8wOCAxODoyMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTA4Mz1zdGF0aWMgczMyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUwODUtXHRcdFx0ICAgICAgIHN0cnVjdCBjZmc4MDIxMV9hcF9zZXR0aW5ncyAqc2V0dGluZ3MsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MjkyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcdFx0ZXJyID0gYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5KGlmcCwgc2V0dGluZ3MsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVx0XHRcdFx0XHRcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5NS1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5NjpcdFx0XHRicGh5X2VycihkcnZyLCBcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTI5Ny1cdFx0XHRnb3RvIGV4aXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjUzMzU6XHRcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNi1cdFx0XHRcdFx0XHQgICAgIE5MODAyMTFfSUZUWVBFX1AyUF9HTyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM3LVx0XHRpZiAoZXJyIFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4Olx0XHRcdGJyY21mX2VycihcJiMzNDticmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzOS1cdFx0XHRnb3RvIGV4aXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzA4IDE4OjIxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MzIwCgkJCQkJCQlvdXRwdXQ6IDE1NQoJCQkJCQkJdGhvdWdodHM6IDM2OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBGdXp6aW5nIFN0cmF0ZWd5IGZvciB0aGUgYnJjbWZtYWMgRHJpdmVyKioKCk9rYXksIGhlcmUmIzM5O3MgdGhlIHBsYW4uIEkmIzM5O3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIGJyY21mbWFjIGRyaXZlciBjb2RlIGFuZCBJJiMzOTt2ZSBnb3QgYSBmZXcga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gSSBzZWUgdGhhdCBgYnJjbWZfY2ZnODAyMTFfc3RhcnRfYXBgIGlzIGNhbGxpbmcgYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAsIHdoaWNoIGxvb2tzIGludGVyZXN0aW5nLiBBZGRpdGlvbmFsbHksIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYXJlIGFsc28gcHJpbWUgdGFyZ2V0cy4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY29yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgbmV3IERQUCBhbmQgYWN0aW9uIGZyYW1lIGZ1bmN0aW9uYWxpdHkuCgpOb3csIGxldCYjMzk7cyBzZWUgYWJvdXQgZ2V0dGluZyB0aGlzIHNldCB1cCBmb3IgZWZmZWN0aXZlIGZ1enppbmcuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSByaWdodCBidWlsZCBjb25maWd1cmF0aW9ucy4gSSYjMzk7dmUgbm90ZWQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAuIEdvb2QuIFRoZSBgQlJDTUZNQUNfVVNCYCBjb25maWcgbG9va3MgcGFydGljdWxhcmx5IHByb21pc2luZyBzaW5jZSBpdCBlbmFibGVzIHRoZSBVU0IgZHJpdmVyLCBtZWFuaW5nIEkgY2FuIGxldmVyYWdlIHN5emthbGxlciYjMzk7cyBVU0IgZnV6emVyLiBJdCBzaG91bGQgc2ltcGxpZnkgdGhlIGZ1enppbmcgcHJvY2VzcyBzaW5jZSB0aGUgdGFyZ2V0IGlzIGNvbm5lY3RlZCB0byB0aGUgaG9zdCB2aWEgVVNCIGVtdWxhdGlvbi4KClNpbmNlIGBDRkc4MDIxMWAgaXMgYWxyZWFkeSBpbXBsaWVkLCBJIGRvbiYjMzk7dCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQgZXhwbGljaXRseS4gQW5kIGBXTEFOX0FLTV9TVUlURV9XRkFfRFBQYCBpcyBhIGNvbnN0YW50IHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhhdCBhdCB0aGUgbW9tZW50LgoKU28sIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCBwbGFuOgoKKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgZGVmaW5pdGVseS4KKiAgICoqRm9jdXMgU3ltYm9sczoqKgogICAgKiAgIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YAogICAgKiAgIGBicmNtZl9jZmc4MDIxMV9zdGFydF9hcGAKICAgICogICBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYAoqICAgKipFbmFibGUgQ29uZmlndXJhdGlvbnM6KioKICAgICogICBgQlJDTUZNQUNgCiAgICAqICAgYEJSQ01GTUFDX1VTQmAKClRoZSByZWFzb24gSSYjMzk7bSBkb2luZyB0aGlzIGlzIGJlY2F1c2UgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIERQUCBzdXBwb3J0IGFuZCBhY3Rpb24gZnJhbWUgaGFuZGxpbmcuIFRoaXMgYWx0ZXJzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5LCBhbmQgUDJQIGFjdGlvbiBmcmFtZXMuIEdpdmVuIHRoYXQsIGFuZCB0aGUgZWFzZSBvZiB1c2luZyBVU0IgZW11bGF0aW9uIGZvciBmdXp6aW5nIHRoaXMgZHJpdmVyLCBpdCYjMzk7cyBhYnNvbHV0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuIEl0IHNob3VsZCBiZSBhIGdvb2QgdGFyZ2V0IGZvciB2dWxuZXJhYmlsaXR5IGRpc2NvdmVyeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMDggMTg6MjE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfY2ZnODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JSQ01GTUFDJiMzNDssCiAgICAmIzM0O0JSQ01GTUFDX1VTQiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JyY21mX2NmZzgwMjExX2Nvbm5lY3QmIzM0OywKICAgICYjMzQ7YnJjbWZfY2ZnODAyMTFfc3RhcnRfYXAmIzM0OywKICAgICYjMzQ7YnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0NS41MTc3NDUzMDRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTY1OTE3NTc3MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX2NmZzgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBhbmQgYWN0aW9uIGZyYW1lcyBpbiB0aGUgQnJvYWRjb20gYnJjbWZtYWMgZHJpdmVyLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGxvZ2ljLCBBUCBzZWN1cml0eSBjb25maWd1cmF0aW9uLCBhbmQgUDJQIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0NS41MTc3NTA4ODRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MTY5NTY2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGJmOGQ5YzNkZTdmYzg1YmVjNTA2OTA0YzUxMzA5YTY1ZTk1ZTExZDZcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBKdWwgOCAxODoxOTo0NCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuaW5kZXggNGI3MDg0NWUxYTI2NDMuLmQ2MWMzZTAzYTEwNmE1IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcXG5AQCAtOCw2ICs4LDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2tlcm5lbC5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L21vZHVsZS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC92bWFsbG9jLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NuZXQvY2ZnODAyMTEuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9uZXRsaW5rLmhcXHUwMDNlXFxuQEAgLTIxNTQsNiArMjE1NSw5IEBAIGJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXFxuIFxcdFxcdFxcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XFxuIFxcdFxcdFxcdHByb2ZpbGUtXFx1MDAzZWlzX2Z0ID0gdHJ1ZTtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuK1xcdFxcdGNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDpcXG4rXFx0XFx0XFx0dmFsID0gV0ZBX0FVVEhfRFBQO1xcbitcXHRcXHRcXHRicmVhaztcXG4gXFx0XFx0ZGVmYXVsdDpcXG4gXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImludmFsaWQgYWttIHN1aXRlICglZClcXFxcblxcXCIsXFxuIFxcdFxcdFxcdFxcdCBzbWUtXFx1MDAzZWNyeXB0by5ha21fc3VpdGVzWzBdKTtcXG5AQCAtMjQ2Niw0MyArMjQ3MCw1MCBAQCBicmNtZl9jZmc4MDIxMV9jb25uZWN0KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbiBcXHRcXHRnb3RvIGRvbmU7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChzbWUtXFx1MDAzZWNyeXB0by5wc2sgXFx1MDAyNlxcdTAwMjZcXG4tXFx0ICAgIHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xcbi1cXHRcXHRpZiAoV0FSTl9PTihwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSkge1xcbi1cXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbi1cXHRcXHRcXHRnb3RvIGRvbmU7XFxuLVxcdFxcdH1cXG4tXFx0XFx0YnJjbWZfZGJnKElORk8sIFxcXCJ1c2luZyBQU0sgb2ZmbG9hZFxcXFxuXFxcIik7XFxuLVxcdFxcdHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLO1xcbi1cXHR9XFxuLVxcbi1cXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwICE9IEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkge1xcbi1cXHRcXHQvKiBlbmFibGUgZmlybXdhcmUgc3VwcGxpY2FudCBmb3IgdGhpcyBpbnRlcmZhY2UgKi9cXG4tXFx0XFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcXFwic3VwX3dwYVxcXCIsIDEpO1xcbi1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi1cXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0Z290byBkb25lO1xcbitcXHRpZiAoYnJjbWZfZmVhdF9pc19lbmFibGVkKGlmcCwgQlJDTUZfRkVBVF9GV1NVUCkpIHtcXG4rXFx0XFx0dTMyIGFrbSA9IHNtZS1cXHUwMDNlY3J5cHRvLm5fYWttX3N1aXRlcyA/IHNtZS1cXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwO1xcbitcXHRcXHRib29sIGlzX3NhZV9ha20gPSBha20gPT0gV0xBTl9BS01fU1VJVEVfU0FFIHx8XFxuK1xcdFxcdFxcdGFrbSA9PSBXTEFOX0FLTV9TVUlURV9GVF9PVkVSX1NBRTtcXG4rXFxuK1xcdFxcdGlmIChzbWUtXFx1MDAzZWNyeXB0by5wc2sgXFx1MDAyNlxcdTAwMjYgIWlzX3NhZV9ha20gXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgIHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xcbitcXHRcXHRcXHRpZiAoV0FSTl9PTihwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT1cXG4rXFx0XFx0XFx0XFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcXG4rXFx0XFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4rXFx0XFx0XFx0XFx0Z290byBkb25lO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdFxcdGJyY21mX2RiZyhJTkZPLCBcXFwidXNpbmcgUFNLIG9mZmxvYWRcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSztcXG4gXFx0XFx0fVxcbi1cXHR9XFxuLVxcbi1cXHRpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfUFNLKVxcbi1cXHRcXHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVxcdTAwM2VjcnlwdG8ucHNrLFxcbi1cXHRcXHRcXHRcXHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XFxuLVxcdGVsc2UgaWYgKHByb2ZpbGUtXFx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xcbi1cXHRcXHQvKiBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkUgKi9cXG4tXFx0XFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2RhdGFfc2V0KGlmcCwgXFxcIndwYWllXFxcIiwgTlVMTCwgMCk7XFxuLVxcdFxcdGlmIChlcnIpIHtcXG4tXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XFxuK1xcdFxcdFxcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xcbitcXHRcXHRcXHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFxcXCJzdXBfd3BhXFxcIiwgMSk7XFxuK1xcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuK1xcdFxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRnb3RvIGRvbmU7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fSBlbHNlIHtcXG4rXFx0XFx0XFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcXFwic3VwX3dwYVxcXCIsIDApO1xcbiBcXHRcXHR9XFxuLVxcdFxcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcXHUwMDI2c21lLVxcdTAwM2VjcnlwdG8pO1xcbi1cXHRcXHRpZiAoIWVyciBcXHUwMDI2XFx1MDAyNiBzbWUtXFx1MDAzZWNyeXB0by5wc2spXFxuK1xcdFxcdGlmIChwcm9maWxlLVxcdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXFxuIFxcdFxcdFxcdGVyciA9IGJyY21mX3NldF9wbWsoaWZwLCBzbWUtXFx1MDAzZWNyeXB0by5wc2ssXFxuIFxcdFxcdFxcdFxcdFxcdCAgICBCUkNNRl9XU0VDX01BWF9QU0tfTEVOKTtcXG4rXFx0XFx0ZWxzZSBpZiAocHJvZmlsZS1cXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCBzbWUtXFx1MDAzZWNyeXB0by5zYWVfcHdkIFxcdTAwMjZcXHUwMDI2XFxuK1xcdFxcdFxcdCBicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX1NBRSkpIHtcXG4rXFx0XFx0XFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXFxuK1xcdFxcdFxcdGlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcXFwid3BhaWVcXFwiLCBOVUxMLCAwKSkge1xcbitcXHRcXHRcXHRcXHRicGh5X2VycihkcnZyLCBcXFwiZmFpbGVkIHRvIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdGdvdG8gZG9uZTtcXG4rXFx0XFx0XFx0fVxcbitcXHRcXHRcXHRlcnIgPSBicmNtZl9md3ZpZF9zZXRfc2FlX3Bhc3N3b3JkKGlmcCwgXFx1MDAyNnNtZS1cXHUwMDNlY3J5cHRvKTtcXG4rXFx0XFx0XFx0aWYgKCFlcnIgXFx1MDAyNlxcdTAwMjYgc21lLVxcdTAwM2VjcnlwdG8ucHNrKVxcbitcXHRcXHRcXHRcXHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVxcdTAwM2VjcnlwdG8ucHNrLFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XFxuK1xcdFxcdH1cXG4rXFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0Z290byBkb25lO1xcbiBcXHR9XFxuLVxcdGlmIChlcnIpXFxuLVxcdFxcdGdvdG8gZG9uZTtcXG4tXFxuIFxcdC8qIEpvaW4gd2l0aCBzcGVjaWZpYyBCU1NJRCBhbmQgY2FjaGVkIFNTSURcXG4gXFx0ICogSWYgU1NJRCBpcyB6ZXJvIGpvaW4gYmFzZWQgb24gQlNTSUQgb25seVxcbiBcXHQgKi9cXG5AQCAtNDUxOSw2ICs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpXFxuIFxcdHJldHVybiAobWVtY21wKG91aSwgV1BBX09VSSwgVExWX09VSV9MRU4pID09IDApO1xcbiB9XFxuIFxcbitzdGF0aWMgYm9vbCBicmNtZl92YWxpZF9kcHBfc3VpdGUodTggKm91aSlcXG4re1xcbitcXHRyZXR1cm4gZ2V0X3VuYWxpZ25lZF9iZTMyKG91aSkgPT0gV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDtcXG4rfVxcbitcXG4gc3RhdGljIHMzMlxcbiBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdCAgICAgIGNvbnN0IHN0cnVjdCBicmNtZl92c190bHYgKndwYV9pZSxcXG5AQCAtNDYzMiw0MiArNDY0OCw0NyBAQCBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgY291bnQ7IGkrKykge1xcbi1cXHRcXHRpZiAoIWJyY21mX3ZhbGlkX3dwYV9vdWkoXFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xcbitcXHRcXHRpZiAoYnJjbWZfdmFsaWRfZHBwX3N1aXRlKFxcdTAwMjZkYXRhW29mZnNldF0pKSB7XFxuK1xcdFxcdFxcdHdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDtcXG4rXFx0XFx0XFx0b2Zmc2V0ICs9IFRMVl9PVUlfTEVOO1xcbitcXHRcXHR9IGVsc2UgaWYgKGJyY21mX3ZhbGlkX3dwYV9vdWkoXFx1MDAyNmRhdGFbb2Zmc2V0XSwgaXNfcnNuX2llKSkge1xcbitcXHRcXHRcXHRvZmZzZXQgKz0gVExWX09VSV9MRU47XFxuK1xcdFxcdFxcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XFxuK1xcdFxcdFxcdGNhc2UgUlNOX0FLTV9OT05FOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX05PTkVcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1VOU1BFQ0lGSUVEXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0aXNfcnNuX2llID9cXG4rXFx0XFx0XFx0XFx0XFx0KHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9VTlNQRUNJRklFRCkgOlxcbitcXHRcXHRcXHRcXHRcXHQod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0Y2FzZSBSU05fQUtNX1BTSzpcXG4rXFx0XFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9QU0tcXFxcblxcXCIpO1xcbitcXHRcXHRcXHRcXHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxcbitcXHRcXHRcXHRcXHRcXHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcXG4rXFx0XFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9NRlBfUFNLXFxcXG5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF8xWFxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XFxuK1xcdFxcdFxcdFxcdGJyZWFrO1xcbitcXHRcXHRcXHRjYXNlIFJTTl9BS01fU0FFOlxcbitcXHRcXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1NBRVxcXFxuXFxcIik7XFxuK1xcdFxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xcbitcXHRcXHRcXHRcXHRicmVhaztcXG4rXFx0XFx0XFx0ZGVmYXVsdDpcXG4rXFx0XFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcXFxuXFxcIik7XFxuK1xcdFxcdFxcdH1cXG4rXFx0XFx0fSBlbHNlIHtcXG4gXFx0XFx0XFx0ZXJyID0gLUVJTlZBTDtcXG4gXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcImludmFsaWQgT1VJXFxcXG5cXFwiKTtcXG4gXFx0XFx0XFx0Z290byBleGl0O1xcbiBcXHRcXHR9XFxuLVxcdFxcdG9mZnNldCArPSBUTFZfT1VJX0xFTjtcXG4tXFx0XFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcXG4tXFx0XFx0Y2FzZSBSU05fQUtNX05PTkU6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fTk9ORVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQV9BVVRIX05PTkU7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fVU5TUEVDSUZJRUQ6XFxuLVxcdFxcdFxcdGJyY21mX2RiZyhUUkFDRSwgXFxcIlJTTl9BS01fVU5TUEVDSUZJRURcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XFxuLVxcdFxcdFxcdFxcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0Y2FzZSBSU05fQUtNX1BTSzpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9QU0tcXFxcblxcXCIpO1xcbi1cXHRcXHRcXHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxcbi1cXHRcXHRcXHRcXHQgICAgKHdwYV9hdXRoIHw9IFdQQV9BVVRIX1BTSyk7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcXG4tXFx0XFx0XFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiUlNOX0FLTV9NRlBfUFNLXFxcXG5cXFwiKTtcXG4tXFx0XFx0XFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX01GUF8xWFxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF8xWF9TSEEyNTY7XFxuLVxcdFxcdFxcdGJyZWFrO1xcbi1cXHRcXHRjYXNlIFJTTl9BS01fU0FFOlxcbi1cXHRcXHRcXHRicmNtZl9kYmcoVFJBQ0UsIFxcXCJSU05fQUtNX1NBRVxcXFxuXFxcIik7XFxuLVxcdFxcdFxcdHdwYV9hdXRoIHw9IFdQQTNfQVVUSF9TQUVfUFNLO1xcbi1cXHRcXHRcXHRicmVhaztcXG4tXFx0XFx0ZGVmYXVsdDpcXG4tXFx0XFx0XFx0YnBoeV9lcnIoZHJ2ciwgXFxcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcXFxuXFxcIik7XFxuLVxcdFxcdH1cXG4gXFx0XFx0b2Zmc2V0Kys7XFxuIFxcdH1cXG4gXFxuQEAgLTQ2ODcsMTAgKzQ3MDgsMTIgQEAgYnJjbWZfY29uZmlndXJlX3dwYWllKHN0cnVjdCBicmNtZl9pZiAqaWZwLFxcbiBcXHRcXHRcXHRcXHQgKi9cXG4gXFx0XFx0XFx0XFx0aWYgKCEod3BhX2F1dGggXFx1MDAyNiAoV1BBMl9BVVRIX1BTS19TSEEyNTYgfFxcbiBcXHRcXHRcXHRcXHRcXHRcXHQgIFdQQTJfQVVUSF8xWF9TSEEyNTYgfFxcbitcXHRcXHRcXHRcXHRcXHRcXHQgIFdGQV9BVVRIX0RQUCB8XFxuIFxcdFxcdFxcdFxcdFxcdFxcdCAgV1BBM19BVVRIX1NBRV9QU0spKSkge1xcbiBcXHRcXHRcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiBcXHRcXHRcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdFxcdFxcdH1cXG4rXFxuIFxcdFxcdFxcdFxcdC8qIEZpcm13YXJlIGhhcyByZXF1aXJlbWVudCB0aGF0IFdQQTJfQVVUSF9QU0svXFxuIFxcdFxcdFxcdFxcdCAqIFdQQTJfQVVUSF9VTlNQRUNJRklFRCBiZSBzZXQsIGlmIFNIQTI1NiBPVUlcXG4gXFx0XFx0XFx0XFx0ICogaXMgdG8gYmUgaW5jbHVkZWQgaW4gdGhlIHJzbiBpZS5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXFxuaW5kZXggNmUwYzkwZjQ3MThiNTguLjJjMWY1MmVkNTEzODAwIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xcbkBAIC02LDYgKzYsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbmV0ZGV2aWNlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9ldGhlcmRldmljZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcnRuZXRsaW5rLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC91bmFsaWduZWQuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY25ldC9jZmc4MDIxMS5oXFx1MDAzZVxcbiBcXG4gI2luY2x1ZGUgXFx1MDAzY2JyY211X3dpZmkuaFxcdTAwM2VcXG5AQCAtNDQsOSArNDUsNiBAQFxcbiBcXG4gI2RlZmluZSBCUkNNRl9TQ0JfVElNRU9VVF9WQUxVRVxcdDIwXFxuIFxcbi0jZGVmaW5lIFAyUF9WRVJcXHRcXHRcXHQ5XFx0LyogUDJQIHZlcnNpb246IDk9V2lGaSBQMlAgdjEuMCAqL1xcbi0jZGVmaW5lIFAyUF9QVUJfQUZfQ0FURUdPUllcXHQweDA0XFxuLSNkZWZpbmUgUDJQX1BVQl9BRl9BQ1RJT05cXHQweDA5XFxuICNkZWZpbmUgUDJQX0FGX0NBVEVHT1JZXFx0XFx0MHg3ZlxcbiAjZGVmaW5lIFAyUF9PVUlcXHRcXHRcXHRcXFwiXFxcXHg1MFxcXFx4NkZcXFxceDlBXFxcIlxcdC8qIFAyUCBPVUkgKi9cXG4gI2RlZmluZSBQMlBfT1VJX0xFTlxcdFxcdDNcXHRcXHQvKiBQMlAgT1VJIGxlbmd0aCAqL1xcbkBAIC0xNDMsMTAgKzE0MSwxMCBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3NjYW5fbGUge1xcbiAvKipcXG4gICogc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIC0gV2lGaSBQMlAgUHVibGljIEFjdGlvbiBGcmFtZVxcbiAgKlxcbi0gKiBAY2F0ZWdvcnk6IFAyUF9QVUJfQUZfQ0FURUdPUllcXG4tICogQGFjdGlvbjogUDJQX1BVQl9BRl9BQ1RJT05cXG4rICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQ1xcbisgKiBAYWN0aW9uOiBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDXFxuICAqIEBvdWk6IFAyUF9PVUlcXG4tICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFAyUF9WRVJcXG4rICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxcbiAgKiBAc3VidHlwZTogT1VJIHN1YnR5cGUgLSBQMlBfVFlQRV8qXFxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3JzcCB0cmFuc2FjdGlvblxcbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxcbkBAIC0xNjYsNyArMTY0LDcgQEAgc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lIHtcXG4gICpcXG4gICogQGNhdGVnb3J5OiBQMlBfQUZfQ0FURUdPUllcXG4gICogQG91aTogT1VJIC0gUDJQX09VSVxcbi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSXFxuKyAqIEB0eXBlOiBPVUkgVHlwZSAtIFdMQU5fT1VJX1RZUEVfV0ZBX1AyUFxcbiAgKiBAc3VidHlwZTogT1VJIFN1YnR5cGUgLSBQMlBfQUZfKlxcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yZXNwIHRyYW5hY3Rpb25cXG4gICogQGVsdHM6IFZhcmlhYmxlIGxlbmd0aCBpbmZvcm1hdGlvbiBlbGVtZW50cy5cXG5AQCAtMjI4LDEwICsyMjYsMzggQEAgc3RhdGljIGJvb2wgYnJjbWZfcDJwX2lzX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXFxuIFxcdGlmIChmcmFtZV9sZW4gXFx1MDAzYyBzaXplb2YoKnBhY3RfZnJtKSlcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4tXFx0aWYgKHBhY3RfZnJtLVxcdTAwM2VjYXRlZ29yeSA9PSBQMlBfUFVCX0FGX0NBVEVHT1JZIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwYWN0X2ZybS1cXHUwMDNlYWN0aW9uID09IFAyUF9QVUJfQUZfQUNUSU9OIFxcdTAwMjZcXHUwMDI2XFxuLVxcdCAgICBwYWN0X2ZybS1cXHUwMDNlb3VpX3R5cGUgPT0gUDJQX1ZFUiBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgbWVtY21wKHBhY3RfZnJtLVxcdTAwM2VvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKVxcbitcXHRpZiAocGFjdF9mcm0tXFx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwYWN0X2ZybS1cXHUwMDNlYWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VvdWlfdHlwZSA9PSBXTEFOX09VSV9UWVBFX1dGQV9QMlAgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXFxuK1xcdFxcdHJldHVybiB0cnVlO1xcbitcXG4rXFx0cmV0dXJuIGZhbHNlO1xcbit9XFxuK1xcbisvKipcXG4rICogYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uKCkgLSB0cnVlIGlmIGRwcCBwdWJsaWMgdHlwZSBmcmFtZS5cXG4rICpcXG4rICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS5cXG4rICogQGZyYW1lX2xlbjogbGVuZ3RoIG9mIGFjdGlvbiBmcmFtZSBkYXRhLlxcbisgKlxcbisgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGVcXG4rICovXFxuK3N0YXRpYyBib29sIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcXG4re1xcbitcXHRzdHJ1Y3QgYnJjbWZfcDJwX3B1Yl9hY3RfZnJhbWUgKnBhY3RfZnJtO1xcbitcXG4rXFx0aWYgKCFmcmFtZSlcXG4rXFx0XFx0cmV0dXJuIGZhbHNlO1xcbitcXG4rXFx0cGFjdF9mcm0gPSAoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICopZnJhbWU7XFxuK1xcdGlmIChmcmFtZV9sZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lKSAtIDEpXFxuK1xcdFxcdHJldHVybiBmYWxzZTtcXG4rXFxuK1xcdGlmIChwYWN0X2ZybS1cXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXFx1MDAyNlxcdTAwMjZcXG4rXFx0ICAgIHBhY3RfZnJtLVxcdTAwM2VhY3Rpb24gPT0gV0xBTl9QVUJfQUNUSU9OX1ZFTkRPUl9TUEVDSUZJQyBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgcGFjdF9mcm0tXFx1MDAzZW91aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX0RQUCBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgZ2V0X3VuYWxpZ25lZF9iZTI0KHBhY3RfZnJtLVxcdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbiBcXHRyZXR1cm4gZmFsc2U7XFxuQEAgLTI1Nyw3ICsyODMsNyBAQCBzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbih2b2lkICpmcmFtZSwgdTMyIGZyYW1lX2xlbilcXG4gXFx0XFx0cmV0dXJuIGZhbHNlO1xcbiBcXG4gXFx0aWYgKGFjdF9mcm0tXFx1MDAzZWNhdGVnb3J5ID09IFAyUF9BRl9DQVRFR09SWSBcXHUwMDI2XFx1MDAyNlxcbi1cXHQgICAgYWN0X2ZybS1cXHUwMDNldHlwZSAgPT0gUDJQX1ZFUiBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgYWN0X2ZybS1cXHUwMDNldHlwZSAgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFxcdTAwMjZcXHUwMDI2XFxuIFxcdCAgICBtZW1jbXAoYWN0X2ZybS1cXHUwMDNlb3VpLCBQMlBfT1VJLCBQMlBfT1VJX0xFTikgPT0gMClcXG4gXFx0XFx0cmV0dXJuIHRydWU7XFxuIFxcbkBAIC0xMjgxLDYgKzEzMDcsOSBAQCBzdGF0aWMgczMyIGJyY21mX3AycF9hYm9ydF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcXG4gXFx0YnJjbWZfZGJnKFRSQUNFLCBcXFwiRW50ZXJcXFxcblxcXCIpO1xcbiBcXG4gXFx0dmlmID0gcDJwLVxcdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWY7XFxuK1xcdGlmICghdmlmKVxcbitcXHRcXHR2aWYgPSBwMnAtXFx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19QUklNQVJZXS52aWY7XFxuK1xcbiBcXHRlcnIgPSBicmNtZl9maWxfYnNzY2ZnX2RhdGFfc2V0KHZpZi1cXHUwMDNlaWZwLCBcXFwiYWN0ZnJhbWVfYWJvcnRcXFwiLCBcXHUwMDI2aW50X3ZhbCxcXG4gXFx0XFx0XFx0XFx0XFx0c2l6ZW9mKHMzMikpO1xcbiBcXHRpZiAoZXJyKVxcbkBAIC0xNzg5LDcgKzE4MTgsOSBAQCBib29sIGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbiBcXHRcXHRcXHRnb3RvIGV4aXQ7XFxuIFxcdFxcdH1cXG4gXFx0fSBlbHNlIGlmIChicmNtZl9wMnBfaXNfcDJwX2FjdGlvbihhY3Rpb25fZnJhbWUtXFx1MDAzZWRhdGEsXFxuLVxcdFxcdFxcdFxcdFxcdCAgIGFjdGlvbl9mcmFtZV9sZW4pKSB7XFxuK1xcdFxcdFxcdFxcdFxcdCAgIGFjdGlvbl9mcmFtZV9sZW4pIHx8XFxuK1xcdFxcdCAgIGJyY21mX3AycF9pc19kcHBfcHViX2FjdGlvbihhY3Rpb25fZnJhbWUtXFx1MDAzZWRhdGEsXFxuK1xcdFxcdFxcdFxcdFxcdCAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkge1xcbiBcXHRcXHQvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovXFxuIFxcdFxcdC8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi9cXG4gXFx0fSBlbHNlIHtcXG5AQCAtMTgyNiw2ICsxODU3LDcgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4gXFx0LyogdmFsaWRhdGUgY2hhbm5lbCBhbmQgcDJwIGllcyAqL1xcbiBcXHRpZiAoY29uZmlnX2FmX3BhcmFtcy5zZWFyY2hfY2hhbm5lbCBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgSVNfUDJQX1NPQ0lBTF9DSEFOTkVMKGxlMzJfdG9fY3B1KGFmX3BhcmFtcy1cXHUwMDNlY2hhbm5lbCkpIFxcdTAwMjZcXHUwMDI2XFxuK1xcdCAgICBwMnAtXFx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19ERVZJQ0VdLnZpZiBcXHUwMDI2XFx1MDAyNlxcbiBcXHQgICAgcDJwLVxcdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYtXFx1MDAzZXNhdmVkX2llLnByb2JlX3JlcV9pZV9sZW4pIHtcXG4gXFx0XFx0YWZ4X2hkbCA9IFxcdTAwMjZwMnAtXFx1MDAzZWFmeF9oZGw7XFxuIFxcdFxcdGFmeF9oZGwtXFx1MDAzZXBlZXJfbGlzdGVuX2NoYW4gPSBsZTMyX3RvX2NwdShhZl9wYXJhbXMtXFx1MDAzZWNoYW5uZWwpO1xcbkBAIC0yNTQzLDQgKzI1NzUsMyBAQCB2b2lkIGJyY21mX3AycF9kZXRhY2goc3RydWN0IGJyY21mX3AycF9pbmZvICpwMnApXFxuIFxcdC8qIGp1c3Qgc2V0IGl0IGFsbCB0byB6ZXJvICovXFxuIFxcdG1lbXNldChwMnAsIDAsIHNpemVvZigqcDJwKSk7XFxuIH1cXG4tXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxcbmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXFxuIFxcbiAjZGVmaW5lIFdQQTNfQVVUSF9TQUVfUFNLXFx0MHg0MDAwMFxcdC8qIFNBRSB3aXRoIDQtd2F5IGhhbmRzaGFrZSAqL1xcbiBcXG4rI2RlZmluZSBXRkFfQVVUSF9EUFBcXHRcXHQweDIwMDAwMCAvKiBXRkEgRFBQIEFVVEggKi9cXG4rXFxuICNkZWZpbmUgRE9UMTFfREVGQVVMVF9SVFNfTEVOXFx0XFx0MjM0N1xcbiAjZGVmaW5lIERPVDExX0RFRkFVTFRfRlJBR19MRU5cXHRcXHQyMzQ2XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0Ni4xMDAxNzk5MTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExNjAwOTMxNDY3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCUkNNRk1BQ1wiLFxuICAgIFwiQlJDTUZNQUNfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnJjbWZfY2ZnODAyMTFfY29ubmVjdFwiLFxuICAgIFwiYnJjbWZfY2ZnODAyMTFfc3RhcnRfYXBcIixcbiAgICBcImJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERQUCAoRGV2aWNlIFByb3Zpc2lvbmluZyBQcm90b2NvbCkgQUtNIGFuZCBhY3Rpb24gZnJhbWVzIGluIHRoZSBCcm9hZGNvbSBicmNtZm1hYyBkcml2ZXIuIEl0IG1vZGlmaWVzIGNvbm5lY3Rpb24gbG9naWMsIEFQIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24sIGFuZCBQMlAgYWN0aW9uIGZyYW1lIGhhbmRsaW5nLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgdmlhIFVTQiBlbXVsYXRpb24sIHNvIGl0IGlzIHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYmY4ZDljM2RlN2ZjODViZWM1MDY5MDRjNTEzMDlhNjVlOTVlMTFkNlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgSnVsIDggMTg6MTk6NDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jXG5pbmRleCA0YjcwODQ1ZTFhMjY0My4uZDYxYzNlMDNhMTA2YTUgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmNcbkBAIC04LDYgKzgsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2tlcm5lbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L21vZHVsZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC92bWFsbG9jLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY25ldC9uZXRsaW5rLmhcdTAwM2VcbkBAIC0yMTU0LDYgKzIxNTUsOSBAQCBicmNtZl9zZXRfa2V5X21nbXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsIHN0cnVjdCBjZmc4MDIxMV9jb25uZWN0X3BhcmFtcyAqc21lKVxuIFx0XHRcdHZhbCA9IFdQQTJfQVVUSF9QU0sgfCBXUEEyX0FVVEhfRlQ7XG4gXHRcdFx0cHJvZmlsZS1cdTAwM2Vpc19mdCA9IHRydWU7XG4gXHRcdFx0YnJlYWs7XG4rXHRcdGNhc2UgV0xBTl9BS01fU1VJVEVfV0ZBX0RQUDpcbitcdFx0XHR2YWwgPSBXRkFfQVVUSF9EUFA7XG4rXHRcdFx0YnJlYWs7XG4gXHRcdGRlZmF1bHQ6XG4gXHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJpbnZhbGlkIGFrbSBzdWl0ZSAoJWQpXFxuXCIsXG4gXHRcdFx0XHQgc21lLVx1MDAzZWNyeXB0by5ha21fc3VpdGVzWzBdKTtcbkBAIC0yNDY2LDQzICsyNDcwLDUwIEBAIGJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXG4gXHRcdGdvdG8gZG9uZTtcbiBcdH1cbiBcbi1cdGlmIChzbWUtXHUwMDNlY3J5cHRvLnBzayBcdTAwMjZcdTAwMjZcbi1cdCAgICBwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1NBRSkge1xuLVx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPSBCUkNNRl9QUk9GSUxFX0ZXU1VQX05PTkUpKSB7XG4tXHRcdFx0ZXJyID0gLUVJTlZBTDtcbi1cdFx0XHRnb3RvIGRvbmU7XG4tXHRcdH1cbi1cdFx0YnJjbWZfZGJnKElORk8sIFwidXNpbmcgUFNLIG9mZmxvYWRcXG5cIik7XG4tXHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4tXHR9XG4tXG4tXHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4tXHRcdC8qIGVuYWJsZSBmaXJtd2FyZSBzdXBwbGljYW50IGZvciB0aGlzIGludGVyZmFjZSAqL1xuLVx0XHRlcnIgPSBicmNtZl9maWxfaW92YXJfaW50X3NldChpZnAsIFwic3VwX3dwYVwiLCAxKTtcbi1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuLVx0XHRcdGJwaHlfZXJyKGRydnIsIFwiZmFpbGVkIHRvIGVuYWJsZSBmdyBzdXBwbGljYW50XFxuXCIpO1xuLVx0XHRcdGdvdG8gZG9uZTtcbitcdGlmIChicmNtZl9mZWF0X2lzX2VuYWJsZWQoaWZwLCBCUkNNRl9GRUFUX0ZXU1VQKSkge1xuK1x0XHR1MzIgYWttID0gc21lLVx1MDAzZWNyeXB0by5uX2FrbV9zdWl0ZXMgPyBzbWUtXHUwMDNlY3J5cHRvLmFrbV9zdWl0ZXNbMF0gOiAwO1xuK1x0XHRib29sIGlzX3NhZV9ha20gPSBha20gPT0gV0xBTl9BS01fU1VJVEVfU0FFIHx8XG4rXHRcdFx0YWttID09IFdMQU5fQUtNX1NVSVRFX0ZUX09WRVJfU0FFO1xuK1xuK1x0XHRpZiAoc21lLVx1MDAzZWNyeXB0by5wc2sgXHUwMDI2XHUwMDI2ICFpc19zYWVfYWttIFx1MDAyNlx1MDAyNlxuK1x0XHQgICAgcHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbitcdFx0XHRpZiAoV0FSTl9PTihwcm9maWxlLVx1MDAzZXVzZV9md3N1cCAhPVxuK1x0XHRcdFx0ICAgIEJSQ01GX1BST0ZJTEVfRldTVVBfTk9ORSkpIHtcbitcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4rXHRcdFx0XHRnb3RvIGRvbmU7XG4rXHRcdFx0fVxuK1x0XHRcdGJyY21mX2RiZyhJTkZPLCBcInVzaW5nIFBTSyBvZmZsb2FkXFxuXCIpO1xuK1x0XHRcdHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0s7XG4gXHRcdH1cbi1cdH1cbi1cbi1cdGlmIChwcm9maWxlLVx1MDAzZXVzZV9md3N1cCA9PSBCUkNNRl9QUk9GSUxFX0ZXU1VQX1BTSylcbi1cdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuLVx0XHRcdFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xuLVx0ZWxzZSBpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9TQUUpIHtcbi1cdFx0LyogY2xlYW4gdXAgdXNlci1zcGFjZSBSU05FICovXG4tXHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9kYXRhX3NldChpZnAsIFwid3BhaWVcIiwgTlVMTCwgMCk7XG4tXHRcdGlmIChlcnIpIHtcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcImZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXG5cIik7XG4tXHRcdFx0Z290byBkb25lO1xuK1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgIT0gQlJDTUZfUFJPRklMRV9GV1NVUF9OT05FKSB7XG4rXHRcdFx0LyogZW5hYmxlIGZpcm13YXJlIHN1cHBsaWNhbnQgZm9yIHRoaXMgaW50ZXJmYWNlICovXG4rXHRcdFx0ZXJyID0gYnJjbWZfZmlsX2lvdmFyX2ludF9zZXQoaWZwLCBcInN1cF93cGFcIiwgMSk7XG4rXHRcdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuK1x0XHRcdFx0YnBoeV9lcnIoZHJ2ciwgXCJmYWlsZWQgdG8gZW5hYmxlIGZ3IHN1cHBsaWNhbnRcXG5cIik7XG4rXHRcdFx0XHRnb3RvIGRvbmU7XG4rXHRcdFx0fVxuK1x0XHR9IGVsc2Uge1xuK1x0XHRcdGVyciA9IGJyY21mX2ZpbF9pb3Zhcl9pbnRfc2V0KGlmcCwgXCJzdXBfd3BhXCIsIDApO1xuIFx0XHR9XG4tXHRcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcdTAwMjZzbWUtXHUwMDNlY3J5cHRvKTtcbi1cdFx0aWYgKCFlcnIgXHUwMDI2XHUwMDI2IHNtZS1cdTAwM2VjcnlwdG8ucHNrKVxuK1x0XHRpZiAocHJvZmlsZS1cdTAwM2V1c2VfZndzdXAgPT0gQlJDTUZfUFJPRklMRV9GV1NVUF9QU0spXG4gXHRcdFx0ZXJyID0gYnJjbWZfc2V0X3BtayhpZnAsIHNtZS1cdTAwM2VjcnlwdG8ucHNrLFxuIFx0XHRcdFx0XHQgICAgQlJDTUZfV1NFQ19NQVhfUFNLX0xFTik7XG4rXHRcdGVsc2UgaWYgKHByb2ZpbGUtXHUwMDNldXNlX2Z3c3VwID09IEJSQ01GX1BST0ZJTEVfRldTVVBfU0FFIFx1MDAyNlx1MDAyNlxuK1x0XHRcdCBzbWUtXHUwMDNlY3J5cHRvLnNhZV9wd2QgXHUwMDI2XHUwMDI2XG4rXHRcdFx0IGJyY21mX2ZlYXRfaXNfZW5hYmxlZChpZnAsIEJSQ01GX0ZFQVRfU0FFKSkge1xuK1x0XHRcdC8qIGNsZWFuIHVwIHVzZXItc3BhY2UgUlNORSAqL1xuK1x0XHRcdGlmIChicmNtZl9maWxfaW92YXJfZGF0YV9zZXQoaWZwLCBcIndwYWllXCIsIE5VTEwsIDApKSB7XG4rXHRcdFx0XHRicGh5X2VycihkcnZyLCBcImZhaWxlZCB0byBjbGVhbiB1cCB1c2VyLXNwYWNlIFJTTkVcXG5cIik7XG4rXHRcdFx0XHRnb3RvIGRvbmU7XG4rXHRcdFx0fVxuK1x0XHRcdGVyciA9IGJyY21mX2Z3dmlkX3NldF9zYWVfcGFzc3dvcmQoaWZwLCBcdTAwMjZzbWUtXHUwMDNlY3J5cHRvKTtcbitcdFx0XHRpZiAoIWVyciBcdTAwMjZcdTAwMjYgc21lLVx1MDAzZWNyeXB0by5wc2spXG4rXHRcdFx0XHRlcnIgPSBicmNtZl9zZXRfcG1rKGlmcCwgc21lLVx1MDAzZWNyeXB0by5wc2ssXG4rXHRcdFx0XHRcdFx0ICAgIEJSQ01GX1dTRUNfTUFYX1BTS19MRU4pO1xuK1x0XHR9XG4rXHRcdGlmIChlcnIpXG4rXHRcdFx0Z290byBkb25lO1xuIFx0fVxuLVx0aWYgKGVycilcbi1cdFx0Z290byBkb25lO1xuLVxuIFx0LyogSm9pbiB3aXRoIHNwZWNpZmljIEJTU0lEIGFuZCBjYWNoZWQgU1NJRFxuIFx0ICogSWYgU1NJRCBpcyB6ZXJvIGpvaW4gYmFzZWQgb24gQlNTSUQgb25seVxuIFx0ICovXG5AQCAtNDUxOSw2ICs0NTMwLDExIEBAIHN0YXRpYyBib29sIGJyY21mX3ZhbGlkX3dwYV9vdWkodTggKm91aSwgYm9vbCBpc19yc25faWUpXG4gXHRyZXR1cm4gKG1lbWNtcChvdWksIFdQQV9PVUksIFRMVl9PVUlfTEVOKSA9PSAwKTtcbiB9XG4gXG4rc3RhdGljIGJvb2wgYnJjbWZfdmFsaWRfZHBwX3N1aXRlKHU4ICpvdWkpXG4re1xuK1x0cmV0dXJuIGdldF91bmFsaWduZWRfYmUzMihvdWkpID09IFdMQU5fQUtNX1NVSVRFX1dGQV9EUFA7XG4rfVxuK1xuIHN0YXRpYyBzMzJcbiBicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXG4gXHRcdCAgICAgIGNvbnN0IHN0cnVjdCBicmNtZl92c190bHYgKndwYV9pZSxcbkBAIC00NjMyLDQyICs0NjQ4LDQ3IEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY291bnQ7IGkrKykge1xuLVx0XHRpZiAoIWJyY21mX3ZhbGlkX3dwYV9vdWkoXHUwMDI2ZGF0YVtvZmZzZXRdLCBpc19yc25faWUpKSB7XG4rXHRcdGlmIChicmNtZl92YWxpZF9kcHBfc3VpdGUoXHUwMDI2ZGF0YVtvZmZzZXRdKSkge1xuK1x0XHRcdHdwYV9hdXRoIHw9IFdGQV9BVVRIX0RQUDtcbitcdFx0XHRvZmZzZXQgKz0gVExWX09VSV9MRU47XG4rXHRcdH0gZWxzZSBpZiAoYnJjbWZfdmFsaWRfd3BhX291aShcdTAwMjZkYXRhW29mZnNldF0sIGlzX3Jzbl9pZSkpIHtcbitcdFx0XHRvZmZzZXQgKz0gVExWX09VSV9MRU47XG4rXHRcdFx0c3dpdGNoIChkYXRhW29mZnNldF0pIHtcbitcdFx0XHRjYXNlIFJTTl9BS01fTk9ORTpcbitcdFx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX05PTkVcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEFfQVVUSF9OT05FO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fVU5TUEVDSUZJRURcXG5cIik7XG4rXHRcdFx0XHRpc19yc25faWUgP1xuK1x0XHRcdFx0XHQod3BhX2F1dGggfD0gV1BBMl9BVVRIX1VOU1BFQ0lGSUVEKSA6XG4rXHRcdFx0XHRcdCh3cGFfYXV0aCB8PSBXUEFfQVVUSF9VTlNQRUNJRklFRCk7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fUFNLOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fUFNLXFxuXCIpO1xuK1x0XHRcdFx0aXNfcnNuX2llID8gKHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0spIDpcbitcdFx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuK1x0XHRcdFx0YnJlYWs7XG4rXHRcdFx0Y2FzZSBSU05fQUtNX1NIQTI1Nl9QU0s6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9NRlBfUFNLXFxuXCIpO1xuK1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTS19TSEEyNTY7XG4rXHRcdFx0XHRicmVhaztcbitcdFx0XHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxuK1x0XHRcdFx0YnJjbWZfZGJnKFRSQUNFLCBcIlJTTl9BS01fTUZQXzFYXFxuXCIpO1xuK1x0XHRcdFx0d3BhX2F1dGggfD0gV1BBMl9BVVRIXzFYX1NIQTI1NjtcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGNhc2UgUlNOX0FLTV9TQUU6XG4rXHRcdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9TQUVcXG5cIik7XG4rXHRcdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbitcdFx0XHRcdGJyZWFrO1xuK1x0XHRcdGRlZmF1bHQ6XG4rXHRcdFx0XHRicGh5X2VycihkcnZyLCBcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcblwiKTtcbitcdFx0XHR9XG4rXHRcdH0gZWxzZSB7XG4gXHRcdFx0ZXJyID0gLUVJTlZBTDtcbiBcdFx0XHRicGh5X2VycihkcnZyLCBcImludmFsaWQgT1VJXFxuXCIpO1xuIFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0fVxuLVx0XHRvZmZzZXQgKz0gVExWX09VSV9MRU47XG4tXHRcdHN3aXRjaCAoZGF0YVtvZmZzZXRdKSB7XG4tXHRcdGNhc2UgUlNOX0FLTV9OT05FOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX05PTkVcXG5cIik7XG4tXHRcdFx0d3BhX2F1dGggfD0gV1BBX0FVVEhfTk9ORTtcbi1cdFx0XHRicmVhaztcbi1cdFx0Y2FzZSBSU05fQUtNX1VOU1BFQ0lGSUVEOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1VOU1BFQ0lGSUVEXFxuXCIpO1xuLVx0XHRcdGlzX3Jzbl9pZSA/ICh3cGFfYXV0aCB8PSBXUEEyX0FVVEhfVU5TUEVDSUZJRUQpIDpcbi1cdFx0XHRcdCAgICAod3BhX2F1dGggfD0gV1BBX0FVVEhfVU5TUEVDSUZJRUQpO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fUFNLOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1BTS1xcblwiKTtcbi1cdFx0XHRpc19yc25faWUgPyAod3BhX2F1dGggfD0gV1BBMl9BVVRIX1BTSykgOlxuLVx0XHRcdFx0ICAgICh3cGFfYXV0aCB8PSBXUEFfQVVUSF9QU0spO1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2X1BTSzpcbi1cdFx0XHRicmNtZl9kYmcoVFJBQ0UsIFwiUlNOX0FLTV9NRlBfUFNLXFxuXCIpO1xuLVx0XHRcdHdwYV9hdXRoIHw9IFdQQTJfQVVUSF9QU0tfU0hBMjU2O1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0hBMjU2XzFYOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX01GUF8xWFxcblwiKTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEEyX0FVVEhfMVhfU0hBMjU2O1xuLVx0XHRcdGJyZWFrO1xuLVx0XHRjYXNlIFJTTl9BS01fU0FFOlxuLVx0XHRcdGJyY21mX2RiZyhUUkFDRSwgXCJSU05fQUtNX1NBRVxcblwiKTtcbi1cdFx0XHR3cGFfYXV0aCB8PSBXUEEzX0FVVEhfU0FFX1BTSztcbi1cdFx0XHRicmVhaztcbi1cdFx0ZGVmYXVsdDpcbi1cdFx0XHRicGh5X2VycihkcnZyLCBcIkludmFsaWQga2V5IG1nbXQgaW5mb1xcblwiKTtcbi1cdFx0fVxuIFx0XHRvZmZzZXQrKztcbiBcdH1cbiBcbkBAIC00Njg3LDEwICs0NzA4LDEyIEBAIGJyY21mX2NvbmZpZ3VyZV93cGFpZShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcbiBcdFx0XHRcdCAqL1xuIFx0XHRcdFx0aWYgKCEod3BhX2F1dGggXHUwMDI2IChXUEEyX0FVVEhfUFNLX1NIQTI1NiB8XG4gXHRcdFx0XHRcdFx0ICBXUEEyX0FVVEhfMVhfU0hBMjU2IHxcbitcdFx0XHRcdFx0XHQgIFdGQV9BVVRIX0RQUCB8XG4gXHRcdFx0XHRcdFx0ICBXUEEzX0FVVEhfU0FFX1BTSykpKSB7XG4gXHRcdFx0XHRcdGVyciA9IC1FSU5WQUw7XG4gXHRcdFx0XHRcdGdvdG8gZXhpdDtcbiBcdFx0XHRcdH1cbitcbiBcdFx0XHRcdC8qIEZpcm13YXJlIGhhcyByZXF1aXJlbWVudCB0aGF0IFdQQTJfQVVUSF9QU0svXG4gXHRcdFx0XHQgKiBXUEEyX0FVVEhfVU5TUEVDSUZJRUQgYmUgc2V0LCBpZiBTSEEyNTYgT1VJXG4gXHRcdFx0XHQgKiBpcyB0byBiZSBpbmNsdWRlZCBpbiB0aGUgcnNuIGllLlxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuY1xuaW5kZXggNmUwYzkwZjQ3MThiNTguLjJjMWY1MmVkNTEzODAwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmNcbkBAIC02LDYgKzYsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L25ldGRldmljZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZXRoZXJkZXZpY2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3J0bmV0bGluay5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdW5hbGlnbmVkLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NuZXQvY2ZnODAyMTEuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2JyY211X3dpZmkuaFx1MDAzZVxuQEAgLTQ0LDkgKzQ1LDYgQEBcbiBcbiAjZGVmaW5lIEJSQ01GX1NDQl9USU1FT1VUX1ZBTFVFXHQyMFxuIFxuLSNkZWZpbmUgUDJQX1ZFUlx0XHRcdDlcdC8qIFAyUCB2ZXJzaW9uOiA5PVdpRmkgUDJQIHYxLjAgKi9cbi0jZGVmaW5lIFAyUF9QVUJfQUZfQ0FURUdPUllcdDB4MDRcbi0jZGVmaW5lIFAyUF9QVUJfQUZfQUNUSU9OXHQweDA5XG4gI2RlZmluZSBQMlBfQUZfQ0FURUdPUllcdFx0MHg3ZlxuICNkZWZpbmUgUDJQX09VSVx0XHRcdFwiXFx4NTBcXHg2RlxceDlBXCJcdC8qIFAyUCBPVUkgKi9cbiAjZGVmaW5lIFAyUF9PVUlfTEVOXHRcdDNcdFx0LyogUDJQIE9VSSBsZW5ndGggKi9cbkBAIC0xNDMsMTAgKzE0MSwxMCBAQCBzdHJ1Y3QgYnJjbWZfcDJwX3NjYW5fbGUge1xuIC8qKlxuICAqIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAtIFdpRmkgUDJQIFB1YmxpYyBBY3Rpb24gRnJhbWVcbiAgKlxuLSAqIEBjYXRlZ29yeTogUDJQX1BVQl9BRl9DQVRFR09SWVxuLSAqIEBhY3Rpb246IFAyUF9QVUJfQUZfQUNUSU9OXG4rICogQGNhdGVnb3J5OiBXTEFOX0NBVEVHT1JZX1BVQkxJQ1xuKyAqIEBhY3Rpb246IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUNcbiAgKiBAb3VpOiBQMlBfT1VJXG4tICogQG91aV90eXBlOiBPVUkgdHlwZSAtIFAyUF9WRVJcbisgKiBAb3VpX3R5cGU6IE9VSSB0eXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXG4gICogQHN1YnR5cGU6IE9VSSBzdWJ0eXBlIC0gUDJQX1RZUEVfKlxuICAqIEBkaWFsb2dfdG9rZW46IG5vbnplcm8sIGlkZW50aWZpZXMgcmVxL3JzcCB0cmFuc2FjdGlvblxuICAqIEBlbHRzOiBWYXJpYWJsZSBsZW5ndGggaW5mb3JtYXRpb24gZWxlbWVudHMuXG5AQCAtMTY2LDcgKzE2NCw3IEBAIHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSB7XG4gICpcbiAgKiBAY2F0ZWdvcnk6IFAyUF9BRl9DQVRFR09SWVxuICAqIEBvdWk6IE9VSSAtIFAyUF9PVUlcbi0gKiBAdHlwZTogT1VJIFR5cGUgLSBQMlBfVkVSXG4rICogQHR5cGU6IE9VSSBUeXBlIC0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQXG4gICogQHN1YnR5cGU6IE9VSSBTdWJ0eXBlIC0gUDJQX0FGXypcbiAgKiBAZGlhbG9nX3Rva2VuOiBub256ZXJvLCBpZGVudGlmaWVzIHJlcS9yZXNwIHRyYW5hY3Rpb25cbiAgKiBAZWx0czogVmFyaWFibGUgbGVuZ3RoIGluZm9ybWF0aW9uIGVsZW1lbnRzLlxuQEAgLTIyOCwxMCArMjI2LDM4IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wdWJfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxuIFx0aWYgKGZyYW1lX2xlbiBcdTAwM2Mgc2l6ZW9mKCpwYWN0X2ZybSkpXG4gXHRcdHJldHVybiBmYWxzZTtcbiBcbi1cdGlmIChwYWN0X2ZybS1cdTAwM2VjYXRlZ29yeSA9PSBQMlBfUFVCX0FGX0NBVEVHT1JZIFx1MDAyNlx1MDAyNlxuLVx0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBQMlBfUFVCX0FGX0FDVElPTiBcdTAwMjZcdTAwMjZcbi1cdCAgICBwYWN0X2ZybS1cdTAwM2VvdWlfdHlwZSA9PSBQMlBfVkVSIFx1MDAyNlx1MDAyNlxuLVx0ICAgIG1lbWNtcChwYWN0X2ZybS1cdTAwM2VvdWksIFAyUF9PVUksIFAyUF9PVUlfTEVOKSA9PSAwKVxuK1x0aWYgKHBhY3RfZnJtLVx1MDAzZWNhdGVnb3J5ID09IFdMQU5fQ0FURUdPUllfUFVCTElDIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBhY3RfZnJtLVx1MDAzZWFjdGlvbiA9PSBXTEFOX1BVQl9BQ1RJT05fVkVORE9SX1NQRUNJRklDIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHBhY3RfZnJtLVx1MDAzZW91aV90eXBlID09IFdMQU5fT1VJX1RZUEVfV0ZBX1AyUCBcdTAwMjZcdTAwMjZcbitcdCAgICBnZXRfdW5hbGlnbmVkX2JlMjQocGFjdF9mcm0tXHUwMDNlb3VpKSA9PSBXTEFOX09VSV9XRkEpXG4rXHRcdHJldHVybiB0cnVlO1xuK1xuK1x0cmV0dXJuIGZhbHNlO1xuK31cbitcbisvKipcbisgKiBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oKSAtIHRydWUgaWYgZHBwIHB1YmxpYyB0eXBlIGZyYW1lLlxuKyAqXG4rICogQGZyYW1lOiBhY3Rpb24gZnJhbWUgZGF0YS5cbisgKiBAZnJhbWVfbGVuOiBsZW5ndGggb2YgYWN0aW9uIGZyYW1lIGRhdGEuXG4rICpcbisgKiBEZXRlcm1pbmUgaWYgYWN0aW9uIGZyYW1lIGlzIGRwcCBwdWJsaWMgYWN0aW9uIHR5cGVcbisgKi9cbitzdGF0aWMgYm9vbCBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24odm9pZCAqZnJhbWUsIHUzMiBmcmFtZV9sZW4pXG4re1xuK1x0c3RydWN0IGJyY21mX3AycF9wdWJfYWN0X2ZyYW1lICpwYWN0X2ZybTtcbitcbitcdGlmICghZnJhbWUpXG4rXHRcdHJldHVybiBmYWxzZTtcbitcbitcdHBhY3RfZnJtID0gKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSAqKWZyYW1lO1xuK1x0aWYgKGZyYW1lX2xlbiBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBicmNtZl9wMnBfcHViX2FjdF9mcmFtZSkgLSAxKVxuK1x0XHRyZXR1cm4gZmFsc2U7XG4rXG4rXHRpZiAocGFjdF9mcm0tXHUwMDNlY2F0ZWdvcnkgPT0gV0xBTl9DQVRFR09SWV9QVUJMSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlYWN0aW9uID09IFdMQU5fUFVCX0FDVElPTl9WRU5ET1JfU1BFQ0lGSUMgXHUwMDI2XHUwMDI2XG4rXHQgICAgcGFjdF9mcm0tXHUwMDNlb3VpX3R5cGUgPT0gV0xBTl9PVUlfVFlQRV9XRkFfRFBQIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGdldF91bmFsaWduZWRfYmUyNChwYWN0X2ZybS1cdTAwM2VvdWkpID09IFdMQU5fT1VJX1dGQSlcbiBcdFx0cmV0dXJuIHRydWU7XG4gXG4gXHRyZXR1cm4gZmFsc2U7XG5AQCAtMjU3LDcgKzI4Myw3IEBAIHN0YXRpYyBib29sIGJyY21mX3AycF9pc19wMnBfYWN0aW9uKHZvaWQgKmZyYW1lLCB1MzIgZnJhbWVfbGVuKVxuIFx0XHRyZXR1cm4gZmFsc2U7XG4gXG4gXHRpZiAoYWN0X2ZybS1cdTAwM2VjYXRlZ29yeSA9PSBQMlBfQUZfQ0FURUdPUlkgXHUwMDI2XHUwMDI2XG4tXHQgICAgYWN0X2ZybS1cdTAwM2V0eXBlICA9PSBQMlBfVkVSIFx1MDAyNlx1MDAyNlxuK1x0ICAgIGFjdF9mcm0tXHUwMDNldHlwZSAgPT0gV0xBTl9PVUlfVFlQRV9XRkFfUDJQIFx1MDAyNlx1MDAyNlxuIFx0ICAgIG1lbWNtcChhY3RfZnJtLVx1MDAzZW91aSwgUDJQX09VSSwgUDJQX09VSV9MRU4pID09IDApXG4gXHRcdHJldHVybiB0cnVlO1xuIFxuQEAgLTEyODEsNiArMTMwNyw5IEBAIHN0YXRpYyBzMzIgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnKVxuIFx0YnJjbWZfZGJnKFRSQUNFLCBcIkVudGVyXFxuXCIpO1xuIFxuIFx0dmlmID0gcDJwLVx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19ERVZJQ0VdLnZpZjtcbitcdGlmICghdmlmKVxuK1x0XHR2aWYgPSBwMnAtXHUwMDNlYnNzX2lkeFtQMlBBUElfQlNTQ0ZHX1BSSU1BUlldLnZpZjtcbitcbiBcdGVyciA9IGJyY21mX2ZpbF9ic3NjZmdfZGF0YV9zZXQodmlmLVx1MDAzZWlmcCwgXCJhY3RmcmFtZV9hYm9ydFwiLCBcdTAwMjZpbnRfdmFsLFxuIFx0XHRcdFx0XHRzaXplb2YoczMyKSk7XG4gXHRpZiAoZXJyKVxuQEAgLTE3ODksNyArMTgxOCw5IEBAIGJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXG4gXHRcdFx0Z290byBleGl0O1xuIFx0XHR9XG4gXHR9IGVsc2UgaWYgKGJyY21mX3AycF9pc19wMnBfYWN0aW9uKGFjdGlvbl9mcmFtZS1cdTAwM2VkYXRhLFxuLVx0XHRcdFx0XHQgICBhY3Rpb25fZnJhbWVfbGVuKSkge1xuK1x0XHRcdFx0XHQgICBhY3Rpb25fZnJhbWVfbGVuKSB8fFxuK1x0XHQgICBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb24oYWN0aW9uX2ZyYW1lLVx1MDAzZWRhdGEsXG4rXHRcdFx0XHRcdCAgICAgICBhY3Rpb25fZnJhbWVfbGVuKSkge1xuIFx0XHQvKiBkbyBub3QgY29uZmlndXJlIGFueXRoaW5nLiBpdCB3aWxsIGJlICovXG4gXHRcdC8qIHNlbnQgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiAgICAgKi9cbiBcdH0gZWxzZSB7XG5AQCAtMTgyNiw2ICsxODU3LDcgQEAgYm9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcbiBcdC8qIHZhbGlkYXRlIGNoYW5uZWwgYW5kIHAycCBpZXMgKi9cbiBcdGlmIChjb25maWdfYWZfcGFyYW1zLnNlYXJjaF9jaGFubmVsIFx1MDAyNlx1MDAyNlxuIFx0ICAgIElTX1AyUF9TT0NJQUxfQ0hBTk5FTChsZTMyX3RvX2NwdShhZl9wYXJhbXMtXHUwMDNlY2hhbm5lbCkpIFx1MDAyNlx1MDAyNlxuK1x0ICAgIHAycC1cdTAwM2Vic3NfaWR4W1AyUEFQSV9CU1NDRkdfREVWSUNFXS52aWYgXHUwMDI2XHUwMDI2XG4gXHQgICAgcDJwLVx1MDAzZWJzc19pZHhbUDJQQVBJX0JTU0NGR19ERVZJQ0VdLnZpZi1cdTAwM2VzYXZlZF9pZS5wcm9iZV9yZXFfaWVfbGVuKSB7XG4gXHRcdGFmeF9oZGwgPSBcdTAwMjZwMnAtXHUwMDNlYWZ4X2hkbDtcbiBcdFx0YWZ4X2hkbC1cdTAwM2VwZWVyX2xpc3Rlbl9jaGFuID0gbGUzMl90b19jcHUoYWZfcGFyYW1zLVx1MDAzZWNoYW5uZWwpO1xuQEAgLTI1NDMsNCArMjU3NSwzIEBAIHZvaWQgYnJjbWZfcDJwX2RldGFjaChzdHJ1Y3QgYnJjbWZfcDJwX2luZm8gKnAycClcbiBcdC8qIGp1c3Qgc2V0IGl0IGFsbCB0byB6ZXJvICovXG4gXHRtZW1zZXQocDJwLCAwLCBzaXplb2YoKnAycCkpO1xuIH1cbi1cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvaW5jbHVkZS9icmNtdV93aWZpLmhcbmluZGV4IDc1NTJiZGI5MTk5MWNlLi5jNDY1MjA4YzQzMzE4MiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9pbmNsdWRlL2JyY211X3dpZmkuaFxuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2luY2x1ZGUvYnJjbXVfd2lmaS5oXG5AQCAtMjMzLDYgKzIzMyw4IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBhY19iaXRtYXBfdHN0KHU4IGJpdG1hcCwgaW50IHByZWMpXG4gXG4gI2RlZmluZSBXUEEzX0FVVEhfU0FFX1BTS1x0MHg0MDAwMFx0LyogU0FFIHdpdGggNC13YXkgaGFuZHNoYWtlICovXG4gXG4rI2RlZmluZSBXRkFfQVVUSF9EUFBcdFx0MHgyMDAwMDAgLyogV0ZBIERQUCBBVVRIICovXG4rXG4gI2RlZmluZSBET1QxMV9ERUZBVUxUX1JUU19MRU5cdFx0MjM0N1xuICNkZWZpbmUgRE9UMTFfREVGQVVMVF9GUkFHX0xFTlx0XHQyMzQ2XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoxOTo0Ni4xMDAxODE2NDJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMzk4ODA0NjA0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFBsYW4gZm9yIGEgRFBQL1NBRSBFbmhhbmNlbWVudCBpbiBicmNtZm1hYyoqXG5cbk9rYXksIHNvIHdlIGhhdmUgYSBwYXRjaCB0aGF0IGludHJvZHVjZXMgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gYW5kIGFjdGlvbiBmcmFtZSBzdXBwb3J0IHdpdGhpbiB0aGUgQnJvYWRjb20gYGJyY21mbWFjYCBkcml2ZXIuIFRoaXMgcGF0Y2ggc3BlY2lmaWNhbGx5IHRvdWNoZXMgYGNmZzgwMjExLmNgIGFuZCBgcDJwLmNgLCBhbmQgaXQgbG9va3MgbGlrZSBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAgaGFzIGJlZW4gbW9kaWZpZWQgdG8gaGFuZGxlIFNBRS9EUFAgYW5kIFBTSyBvZmZsb2FkIGxvZ2ljLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSB0byBhIHdpcmVsZXNzIGRyaXZlciwgc28gaXQgd2FycmFudHMgc2VyaW91cyBmdXp6aW5nLlxuXG5NeSBmaXJzdCB0aG91Z2h0IGlzLCBjYW4gd2UgZXZlbiByZWFjaCB0aGlzIGRyaXZlciBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBgYnJjbWZtYWNgIGlzIEJyb2FkY29tJ3MgSUVFRTgwMi4xMW4vYWMgZHJpdmVyIGZvciBQQ0llL1NESU8vVVNCLiBMdWNraWx5LCBVU0IgaXMgb2Z0ZW4gZW11bGF0YWJsZS4gV2UgY291bGQgdXNlIGBkdW1teV9oY2RgIG9yLCBldmVuIGJldHRlciwgSSByZW1lbWJlciBzeXprYWxsZXIgaGFzIGEgVVNCIGZ1enplciBzcGVjaWZpY2FsbHkgZm9yIHRoaXMga2luZCBvZiB0aGluZy4gU0RJTyBtaWdodCBiZSB0cmlja2llciwgYnV0IFBDSWUgY2FuIGJlIGVtdWxhdGVkIGFzIHdlbGwuIFRoZSBVU0IgZnV6emVyIGlzIGtleSBoZXJlLiBJdCBjYW4gZW11bGF0ZSB3aXJlbGVzcyBkb25nbGVzLiBUaGlzIGlzIGZ1bGxNQUMsIHNvIGl0IGludGVyZmFjZXMgZGlyZWN0bHkgd2l0aCBjZmc4MDIxMS4gV2UgY2FuIGZ1enogYnJjbWZtYWMgdGhyb3VnaCBVU0IsIHdoaWNoIHN5emthbGxlciBzdXBwb3J0cy4gSXQncyBkZWZpbml0ZWx5IHdvcnRoIHRoZSBlZmZvcnQuXG5cbkxldCdzIG5haWwgZG93biB0aGUgY3JpdGljYWwgZnVuY3Rpb25zIHRoYXQgdGhpcyBwYXRjaCBhZmZlY3RzLiBJIG5lZWQgdG8gZm9jdXMgdGhlIGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZTpcblxuKiAgIGBicmNtZl9zZXRfa2V5X21nbXRgXG4qICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgXG4qICAgYGJyY21mX3ZhbGlkX2RwcF9zdWl0ZWBcbiogICBgYnJjbWZfY29uZmlndXJlX3dwYWllYFxuKiAgIGBicmNtZl9wMnBfaXNfcHViX2FjdGlvbmBcbiogICBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYFxuKiAgIGBicmNtZl9wMnBfaXNfcDJwX2FjdGlvbmBcbiogICBgYnJjbWZfcDJwX2Fib3J0X2FjdGlvbl9mcmFtZWBcbiogICBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYFxuXG5Gb3IgZW5hYmxpbmcgdGhlIGRyaXZlciwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlIHRoZXNlIGNvbmZpZ3Mgc2V0OiBgQlJDTUZNQUNgLCBgQlJDTUZNQUNfVVNCYCBmb3IgdGhlIFVTQiBmdXp6aW5nLCBhbmQgYENGRzgwMjExYCwgb2YgY291cnNlLiBUaW1lIHRvIGRpdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY29uZmlybSBob3cgdGhvc2UgYXJlIHNldCB1cC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzM2OCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUzMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIwOjAwLjA4ODIzMDM2M1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDcxMzQ1OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBCUkNNRk1BQ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxOmNvbmZpZyBCUkNNRk1BQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTItXFx0dHJpc3RhdGUgXFxcIkJyb2FkY29tIEZ1bGxNQUMgV0xBTiBkcml2ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxMTpjb25maWcgQlJDTUZNQUNfUFJPVE9fQkNEQ1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTEyLVxcdGJvb2xcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy0xMy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZzoxNDpjb25maWcgQlJDTUZNQUNfUFJPVE9fTVNHQlVGXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTUtXFx0Ym9vbFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnOjE3OmNvbmZpZyBCUkNNRk1BQ19TRElPXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMTgtXFx0Ym9vbCBcXFwiU0RJTyBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6Mjk6Y29uZmlnIEJSQ01GTUFDX1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9LY29uZmlnLTMwLVxcdGJvb2wgXFxcIlVTQiBidXMgaW50ZXJmYWNlIHN1cHBvcnQgZm9yIEZ1bGxNQUMgZHJpdmVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWctMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL0tjb25maWc6NDA6Y29uZmlnIEJSQ01GTUFDX1BDSUVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvS2NvbmZpZy00MS1cXHRib29sIFxcXCJQQ0lFIGJ1cyBpbnRlcmZhY2Ugc3VwcG9ydCBmb3IgRnVsbE1BQyBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIwOjAyLjE1OTYwMzMzWiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwNDEyNzk5MTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQ29uZmlndXJhdGlvbiBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBob21pbmcgaW4gb24gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIEJyb2FkY29tJ3MgZmlybXdhcmUgZHJpdmVycy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gYWRkIGBCUkNNRk1BQ2AgYW5kIGBCUkNNRk1BQ19VU0JgIHRvIGBFbmFibGVDb25maWdzYC4gVGhhdCBjb3ZlcnMgdGhlIGNvcmUgTUFDIGFuZCB0aGUgVVNCLXNwZWNpZmljIGludGVyZmFjZS4gSSdtIGFzc3VtaW5nIHRoZSBvdGhlciBQQ0llIGFuZCBTRElPIHZhcmlhbnRzLCBgQlJDTUZNQUNfU0RJT2AgYW5kIGBCUkNNRk1BQ19QQ0lFYCwgYXJlIGhhbmRsZWQgZWxzZXdoZXJlIG9yIGFyZSBsZXNzIHJlbGV2YW50IGZvciB0aGUgY3VycmVudCB0YXNrLiBJJ20gbm90aW5nIHRoZXNlIGFzIHRoaXMgaW5mb3JtYXRpb24gbWF5IGJlY29tZSBpbXBvcnRhbnQgbGF0ZXIsIGFzIGNvbnRleHQuXG5cbk5vdywgSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSByZWxldmFudCBmdW5jdGlvbnMgd2l0aGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBUaGUgb25lcyB0aGF0IGFyZSBzdGFuZGluZyBvdXQgcmlnaHQgbm93IGFyZTogYGJyY21mX3NldF9rZXlfbWdtdGAsIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCwgYGJyY21mX2NvbmZpZ3VyZV93cGFpZWAsIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gLCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZXNlIGFsbCBzZWVtIGRpcmVjdGx5IHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQsIGNvbm5lY3Rpb24gaGFuZGxpbmcsIGFuZCBwb3RlbnRpYWxseSBQMlAgd2l0aCBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpLlxuXG5KdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBzaW5jZSBgQlJDTUZNQUNgIGlzIHdoYXQgSSdtIGRlYWxpbmcgd2l0aCwgaXQgaW1wbGljaXRseSBicmluZ3MgaW4gYENGRzgwMjExYCBhcyBhIGRlcGVuZGVuY3kuIE5vIG5lZWQgdG8gZXhwbGljaXRseSBsaXN0IGl0LiBUaGF0IHNhdmVzIGEgc3RlcC4gSSdtIGdvaW5nIHRvIHZlcmlmeSB0aGVzZSBmdW5jdGlvbnMgaW4gdGhlIG5leHQgcGhhc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwNjksIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjA6NDYuMjAwODg0NzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTk4NDUzODYyOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTIzNjM9c3RhdGljIHMzMlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjIzNjQ6YnJjbWZfY2ZnODAyMTFfY29ubmVjdChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yMzY1LVxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfY29ubmVjdF9wYXJhbXMgKnNtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTU5NTc9c3RhdGljIHN0cnVjdCBjZmc4MDIxMV9vcHMgYnJjbWZfY2ZnODAyMTFfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTk3NC1cXHQuc2V0X3Bvd2VyX21nbXQgPSBicmNtZl9jZmc4MDIxMV9zZXRfcG93ZXJfbWdtdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1OTc1OlxcdC5jb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01OTc2LVxcdC5kaXNjb25uZWN0ID0gYnJjbWZfY2ZnODAyMTFfZGlzY29ubmVjdCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYxNDY9c3RhdGljIHZvaWQgYnJjbWZfY2xlYXJfYXNzb2NfaWVzKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjE0Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjE0ODpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYxNDktXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02Mjk2PXN0YXRpYyBzMzIgYnJjbWZfZ2V0X2Fzc29jX2llcyhzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjMwMC1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfYXNzb2NfaWVsZW5fbGUgKmFzc29jX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjMwMTpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTYzMDItXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX2VkY2ZfYWNwYXJhbSBlZGNmX2FjcGFyYW1faW5mb1tFRENGX0FDX0NPVU5UXTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jPTYzNzg9YnJjbWZfYnNzX3JvYW1pbmdfZG9uZShzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfaW5mbyAqY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjM4My1cXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfcHJvZmlsZSAqcHJvZmlsZSA9IFxcdTAwMjZpZnAtXFx1MDAzZXZpZi1cXHUwMDNlcHJvZmlsZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo2Mzg0OlxcdHN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8gKmNvbm5faW5mbyA9IGNmZ190b19jb25uKGNmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNjM4NS1cXHRzdHJ1Y3Qgd2lwaHkgKndpcGh5ID0gY2ZnX3RvX3dpcGh5KGNmZyk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz02NDUxPWJyY21mX2Jzc19jb25uZWN0X2RvbmUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY0NTYtXFx0c3RydWN0IGJyY21mX2NmZzgwMjExX3Byb2ZpbGUgKnByb2ZpbGUgPSBcXHUwMDI2aWZwLVxcdTAwM2V2aWYtXFx1MDAzZXByb2ZpbGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NjQ1NzpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvICpjb25uX2luZm8gPSBjZmdfdG9fY29ubihjZmcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTY0NTgtXFx0c3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcmVzcF9wYXJhbXMgY29ubl9wYXJhbXM7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaD0yMjA9c3RydWN0IGJyY21mX2NmZzgwMjExX3ZpZiB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0yMzUtLyogYXNzb2NpYXRpb24gaW5mb3JtICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6MjM2OnN0cnVjdCBicmNtZl9jZmc4MDIxMV9jb25uZWN0X2luZm8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTIzNy1cXHR1OCAqcmVxX2llO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9MzQyPXN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oLTM0OS1cXHRzdHJ1Y3Qgd2xfY2ZnODAyMTFfYnNzX2luZm8gKmJzc19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5oOjM1MDpcXHRzdHJ1Y3QgYnJjbWZfY2ZnODAyMTFfY29ubmVjdF9pbmZvIGNvbm5faW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC0zNTEtXFx0c3RydWN0IGJyY21mX3Bta19saXN0X2xlIHBta19saXN0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg9NDMzPXN0YXRpYyBpbmxpbmUgc3RydWN0XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmg6NDM0OmJyY21mX2NmZzgwMjExX2Nvbm5lY3RfaW5mbyAqY2ZnX3RvX2Nvbm4oc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZylcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuaC00MzUte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoyMDo0OC4xODU0Mjk0NTlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTI1NzUxNjc4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgV2ktRmkgRHJpdmVyIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIGRvd24gdGhpcyBzZXQgb2YgZnVuY3Rpb25zLiBJIHNlZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBCcm9hZGNvbSBXaS1GaSBkcml2ZXIsIGxpa2VseSBDRkc4MDIxMS1yZWxhdGVkLCBnaXZlbiB0aGUgbmFtaW5nIGNvbnZlbnRpb24uIE15IGltbWVkaWF0ZSBmb2N1cywgYXMgYW4gZXhwZXJ0LCBpcyBvbiBob3cgdGhlc2UgZnVuY3Rpb25zIGludGVyYWN0IHdpdGhpbiBhIHNwZWNpZmljIGNvbnRyb2wgZmxvdywgZXNwZWNpYWxseSByZWdhcmRpbmcgc2VjdXJpdHkgYW5kIHBlZXItdG8tcGVlciAoUDJQKSBjb25uZWN0aW9ucy5cblxuRmlyc3QsIHdlIGhhdmUgdGhlIGNvbm5lY3Rpb24gc2V0dXAgKGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCksIGtleSBtYW5hZ2VtZW50IChgYnJjbWZfc2V0X2tleV9tZ210YCksIGFuZCBXUEEgaW5mb3JtYXRpb24gZWxlbWVudCBjb25maWd1cmF0aW9uIChgYnJjbWZfY29uZmlndXJlX3dwYWllYCkuIFN0YW5kYXJkIHN0dWZmLCBidXQgd2UgbmVlZCB0byBzZWUgaG93IHRoZXkncmUgdXNlZC4gVGhlbiwgd2UgaGF2ZSBgYnJjbWZfcDJwX2lzX2RwcF9wdWJfYWN0aW9uYCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAuIFRoZSBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIGFzcGVjdCBpcyBpbnRlcmVzdGluZy5cblxuUmlnaHQsIHNvIGBicmNtZl9wMnBfaXNfZHBwX3B1Yl9hY3Rpb25gIGlzIHN0YXRpYy4gVGhhdCdzIGEgYml0IG9mIGEgcm9hZGJsb2NrIGZvciBkaXJlY3QgYW5hbHlzaXMsIGFzc3VtaW5nIGl0J3MgaW5saW5lZC4gVGhpcyBtZWFucyB3ZSBzaG91bGQgY29uY2VudHJhdGUgb24gdGhlIGNhbGwgc2l0ZXMgb2YgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAsIHdoaWNoIHNob3VsZCBnaXZlIG1lIGluc2lnaHQgaW50byBob3cgRFBQIGFjdGlvbnMgYXJlIGluaXRpYXRlZCBhbmQgaGFuZGxlZCB3aXRoaW4gdGhlIGRyaXZlciwgYW5kIHRodXMgZXhwb3NlIHRoZSB1c2FnZSBvZiB0aGF0IGBzdGF0aWNgIGZ1bmN0aW9uIGluIGNvbnRleHQuIExldCdzIGRpZyBpbnRvIHRoYXQgZnVuY3Rpb24gbm93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTU0NCwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoyMDo1My4xMTExODQyMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjg1MDYwMjU2MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTUzNj1icmNtZl9jZmc4MDIxMV9tZ210X3R4KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjU2Mjg6XFx0XFx0YWNrID0gYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKGNmZywgY2ZnX3RvX25kZXYoY2ZnKSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01NjI5LVxcdFxcdFxcdFxcdFxcdFxcdCAgYWZfcGFyYW1zKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYz0xNzI5PXN0YXRpYyBib29sIGJyY21mX3AycF9jaGVja19kd2VsbF9vdmVyZmxvdyh1MzIgcmVxdWVzdGVkX2R3ZWxsLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDAtLyoqXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jOjE3NDE6ICogYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKCkgLSBzZW5kIGFjdGlvbiBmcmFtZSAuXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDItICpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYy0xNzQ2LSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuYzoxNzQ3OmJvb2wgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lKHN0cnVjdCBicmNtZl9jZmc4MDIxMV9pbmZvICpjZmcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5jLTE3NDgtXFx0XFx0XFx0XFx0IHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL3AycC5oPTE2OD1pbnQgYnJjbWZfcDJwX25vdGlmeV9hY3Rpb25fdHhfY29tcGxldGUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcwLVxcdFxcdFxcdFxcdFxcdHZvaWQgKmRhdGEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9wMnAuaDoxNzE6Ym9vbCBicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWUoc3RydWN0IGJyY21mX2NmZzgwMjExX2luZm8gKmNmZyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvcDJwLmgtMTcyLVxcdFxcdFxcdFxcdCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjA6NTUuOTYxNzkyNjQ4WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTk0NTkwMDU5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIHNlZSB3aGF0IEknbSB0aGlua2luZyBoZXJlLCBmcm9tIGEgdGVjaG5pY2FsIHBlcnNwZWN0aXZlLi4uXG5cbioqRXhwbG9yaW5nIHRoZSBXTEFOIERyaXZlcidzIENvbnRyb2wgUGxhbmUqKlxuXG5SaWdodCwgc28gSSdtIGN1cnJlbnRseSBtYXBwaW5nIG91dCB0aGUgY29udHJvbCBwbGFuZSBmdW5jdGlvbmFsaXR5IGluIHRoaXMgQnJvYWRjb20gV2lGaSBkcml2ZXIuIEkndmUgbm90ZWQgdGhhdCBgYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCdzIGFjY2Vzc2libGUgZnJvbSBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtLiBHb29kIHRvIGtub3cuIEFuZCB0aGUgY29ubmVjdGlvbiBzZXR1cCByb3V0aW5lLCBgYnJjbWZfY2ZnODAyMTFfY29ubmVjdGAsIHRoYXQncyBhY2Nlc3NpYmxlIHRvby4gTm93LCB0aGUgYGJyY21mX3NldF9rZXlfbWdtdGAgZnVuY3Rpb24sIHRoYXQncyBzdGF0aWMsIHdoaWNoIGlzIGludGVyZXN0aW5nLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB0aGF0LCBpZiBpdCBpcyBzdGF0aWMsIHRoZW4gb25seSB0aGUgY29kZSBpbiB0aGlzIHNvdXJjZSBmaWxlIGNhbiBjYWxsIGl0LiBCZXN0IGNoZWNrIHdoZXJlIGl0J3MgYmVpbmcgdXNlZCB3aXRoaW4gdGhlIGZpbGUsIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUuIEkgbmVlZCB0byB0cmFjZSBiYWNrIGZyb20gdGhhdCBmdW5jdGlvbiBhbmQgc2VlIHdoYXQncyBpbnZva2luZyBpdC4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbGVycyB3aWxsIHNoZWQgbGlnaHQgb24gdGhlIGtleSBtYW5hZ2VtZW50IGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODI1LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MTUuNDIwODAwMzA2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODc5ODE3NTQxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3NldF9rZXlfbWdtdFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMDg3PXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzoyMDg4OmJyY21mX3NldF9rZXlfbWdtdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldiwgc3RydWN0IGNmZzgwMjExX2Nvbm5lY3RfcGFyYW1zICpzbWUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjA4OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz0yMzY0PWJyY21mX2NmZzgwMjExX2Nvbm5lY3Qoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy0yNDYwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jOjI0NjE6XFx0ZXJyID0gYnJjbWZfc2V0X2tleV9tZ210KG5kZXYsIHNtZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtMjQ2Mi1cXHRpZiAoZXJyKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIxOjE3LjMwMDYyNDAyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjM4NjQ4NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgV1BBIEtleSBNYW5hZ2VtZW50KipcblxuT2theSwgSSdtIGRpZ2dpbmcgaW50byBob3cgdGhlIEJyb2FkY29tIGRyaXZlciBoYW5kbGVzIGtleSBtYW5hZ2VtZW50LCBzcGVjaWZpY2FsbHkgd2l0aCBXUEEuIEkgc2VlIHRoYXQgdGhlIGBicmNtZl9zZXRfa2V5X21nbXRgIGZ1bmN0aW9uIGlzIGdldHRpbmcgY2FsbGVkLCBhbmQgYSBxdWljayBsb29rIHNob3dzIG1lIHRoYXQgaXQncyBiZWluZyB0cmlnZ2VyZWQgYnkgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgLiBUaGF0IG1ha2VzIHNlbnNlOyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQgaXMgd2hlcmUgeW91J2QgZXhwZWN0IGtleSBjb25maWd1cmF0aW9uIHRvIGhhcHBlbi4gTm93LCBgYnJjbWZfY29uZmlndXJlX3dwYWllYC4uLnRoYXQncyBzdGF0aWMsIHNvIGl04oCZcyBsaWtlbHkgaW50ZXJuYWwgdG8gYSBtb2R1bGUuIExldCdzIHNlZSB3aG8ncyBjYWxsaW5nICppdCouIEkgbmVlZCB0byB0cmFjZSB0aGlzIGJhY2sgdG8gdW5kZXJzdGFuZCBob3cgdGhlIFdQQSBJbmZvcm1hdGlvbiBFbGVtZW50IChJRSkgaXMgYmVpbmcgY29uc3RydWN0ZWQgYW5kIHNldC4gVW5kZXJzdGFuZGluZyB0aGUgY2FsbGluZyBjb250ZXh0IG9mIGBicmNtZl9jb25maWd1cmVfd3BhaWVgIHdpbGwgZ2l2ZSBtZSBjcml0aWNhbCBpbnNpZ2h0cyBpbnRvIHRoZSBvdmVyYWxsIFdQQSBzZXR1cCBmbG93LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzQ4MSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTA4VDE4OjIxOjI1LjUzOTI3ODA3N1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNTA0NTQwNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJicmNtZl9jb25maWd1cmVfd3BhaWVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NDUzOD1zdGF0aWMgczMyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NDUzOTpicmNtZl9jb25maWd1cmVfd3BhaWUoc3RydWN0IGJyY21mX2lmICppZnAsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNDU0MC1cXHRcXHQgICAgICBjb25zdCBzdHJ1Y3QgYnJjbWZfdnNfdGx2ICp3cGFfaWUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDg0PWJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUxMDMtXFx0XFx0XFx0LyogV1BBIElFICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTEwNDpcXHRcXHRcXHRlcnIgPSBicmNtZl9jb25maWd1cmVfd3BhaWUoaWZwLCB3cGFfaWUsIGZhbHNlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MTA1LVxcdFxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExMi1cXHRcXHRcXHQvKiBSU04gSUUgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MTEzOlxcdFxcdFxcdGVyciA9IGJyY21mX2NvbmZpZ3VyZV93cGFpZShpZnAsIHRtcF9pZSwgdHJ1ZSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTExNC1cXHRcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MjcuMTY0MzI4NDkzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjUyMzgyNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBTZWN1cml0eSBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHNlY3VyaXR5IGNvbmZpZ3VyYXRpb24uIEFuZCBpdCBsb29rcyBsaWtlIGl0IGNhbGxzIGBicmNtZl9jb25maWd1cmVfd3BhaWVgLiBUaGF0J3MgaW50ZXJlc3RpbmcsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgYmV0dGVyLiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byB0cmFjZSBiYWNrIHRoZSBjYWxscyB0byBgYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5YC4gS25vd2luZyB3aGVyZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHdpbGwgZ2l2ZSBtZSB0aGUgbmVjZXNzYXJ5IGNvbnRleHQgdG8gdW5kZXJzdGFuZCBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGludGVncmF0ZXMgaW50byB0aGUgb3ZlcmFsbCBzZWN1cml0eSBmcmFtZXdvcmsuIExldCdzIHNlZSB3aGF0IHRoZSBjYWxsIGdyYXBoIHJldmVhbHMuIFRoaXMgY291bGQgYmUgYSBjcml0aWNhbCBwb2ludCBvZiBlbnRyeSBmb3Igc2VjdXJpdHktcmVsYXRlZCBwYXJhbWV0ZXJzLCBhbmQgcG90ZW50aWFsbHkgYW4gYXJlYSBmb3IgdnVsbmVyYWJpbGl0aWVzIHRvIGludmVzdGlnYXRlIGZ1cnRoZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0MjgzLCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MzEuNDI5NTY5Njg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzIxMDI0MjM0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYz01MDgzPXN0YXRpYyBzMzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MDg0OmJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShzdHJ1Y3QgYnJjbWZfaWYgKmlmcCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MDg1LVxcdFxcdFxcdCAgICAgICBzdHJ1Y3QgY2ZnODAyMTFfYXBfc2V0dGluZ3MgKnNldHRpbmdzLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM9NTEyNj1icmNtZl9jZmc4MDIxMV9zdGFydF9hcChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqbmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmM6NTI5MzpcXHRcXHRlcnIgPSBicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkoaWZwLCBzZXR0aW5ncyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01Mjk0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTkw4MDIxMV9JRlRZUEVfQVApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTUtXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1Mjk2OlxcdFxcdFxcdGJwaHlfZXJyKGRydnIsIFxcXCJicmNtZl9wYXJzZV9jb25maWd1cmVfc2VjdXJpdHkgZXJyb3JcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUyOTctXFx0XFx0XFx0Z290byBleGl0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYnJvYWRjb20vYnJjbTgwMjExL2JyY21mbWFjL2NmZzgwMjExLmMtNTMzNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM1OlxcdFxcdGVyciA9IGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eShpZnAsIHNldHRpbmdzLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICBOTDgwMjExX0lGVFlQRV9QMlBfR08pO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2Jyb2FkY29tL2JyY204MDIxMS9icmNtZm1hYy9jZmc4MDIxMS5jLTUzMzctXFx0XFx0aWYgKGVyciBcXHUwMDNjIDApIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYzo1MzM4OlxcdFxcdFxcdGJyY21mX2VycihcXFwiYnJjbWZfcGFyc2VfY29uZmlndXJlX3NlY3VyaXR5IGVycm9yXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9icm9hZGNvbS9icmNtODAyMTEvYnJjbWZtYWMvY2ZnODAyMTEuYy01MzM5LVxcdFxcdFxcdGdvdG8gZXhpdDtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMDhUMTg6MjE6MzMuMTUwNjAwMDY5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg4ODI5ODIzODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgRnV6emluZyBTdHJhdGVneSBmb3IgdGhlIGJyY21mbWFjIERyaXZlcioqXG5cbk9rYXksIGhlcmUncyB0aGUgcGxhbi4gSSd2ZSBiZWVuIGxvb2tpbmcgYXQgdGhpcyBicmNtZm1hYyBkcml2ZXIgY29kZSBhbmQgSSd2ZSBnb3QgYSBmZXcga2V5IGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gSSBzZWUgdGhhdCBgYnJjbWZfY2ZnODAyMTFfc3RhcnRfYXBgIGlzIGNhbGxpbmcgYGJyY21mX3BhcnNlX2NvbmZpZ3VyZV9zZWN1cml0eWAsIHdoaWNoIGxvb2tzIGludGVyZXN0aW5nLiBBZGRpdGlvbmFsbHksIGBicmNtZl9jZmc4MDIxMV9jb25uZWN0YCBhbmQgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWAgYXJlIGFsc28gcHJpbWUgdGFyZ2V0cy4gVGhlc2Ugc2VlbSB0byBiZSB0aGUgY29yZSBmdW5jdGlvbnMgcmVsYXRlZCB0byB0aGUgbmV3IERQUCBhbmQgYWN0aW9uIGZyYW1lIGZ1bmN0aW9uYWxpdHkuXG5cbk5vdywgbGV0J3Mgc2VlIGFib3V0IGdldHRpbmcgdGhpcyBzZXQgdXAgZm9yIGVmZmVjdGl2ZSBmdXp6aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgYnVpbGQgY29uZmlndXJhdGlvbnMuIEkndmUgbm90ZWQgYEJSQ01GTUFDYCBhbmQgYEJSQ01GTUFDX1VTQmAuIEdvb2QuIFRoZSBgQlJDTUZNQUNfVVNCYCBjb25maWcgbG9va3MgcGFydGljdWxhcmx5IHByb21pc2luZyBzaW5jZSBpdCBlbmFibGVzIHRoZSBVU0IgZHJpdmVyLCBtZWFuaW5nIEkgY2FuIGxldmVyYWdlIHN5emthbGxlcidzIFVTQiBmdXp6ZXIuIEl0IHNob3VsZCBzaW1wbGlmeSB0aGUgZnV6emluZyBwcm9jZXNzIHNpbmNlIHRoZSB0YXJnZXQgaXMgY29ubmVjdGVkIHRvIHRoZSBob3N0IHZpYSBVU0IgZW11bGF0aW9uLlxuXG5TaW5jZSBgQ0ZHODAyMTFgIGlzIGFscmVhZHkgaW1wbGllZCwgSSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoYXQgZXhwbGljaXRseS4gQW5kIGBXTEFOX0FLTV9TVUlURV9XRkFfRFBQYCBpcyBhIGNvbnN0YW50IHNvIG5vIG5lZWQgdG8gd29ycnkgYWJvdXQgdGhhdCBhdCB0aGUgbW9tZW50LlxuXG5TbywgaGVyZSdzIG15IHN1bW1hcml6ZWQgcGxhbjpcblxuKiAgICoqV29ydGhGdXp6aW5nOioqIFllcywgZGVmaW5pdGVseS5cbiogICAqKkZvY3VzIFN5bWJvbHM6KipcbiAgICAqICAgYGJyY21mX2NmZzgwMjExX2Nvbm5lY3RgXG4gICAgKiAgIGBicmNtZl9jZmc4MDIxMV9zdGFydF9hcGBcbiAgICAqICAgYGJyY21mX3AycF9zZW5kX2FjdGlvbl9mcmFtZWBcbiogICAqKkVuYWJsZSBDb25maWd1cmF0aW9uczoqKlxuICAgICogICBgQlJDTUZNQUNgXG4gICAgKiAgIGBCUkNNRk1BQ19VU0JgXG5cblRoZSByZWFzb24gSSdtIGRvaW5nIHRoaXMgaXMgYmVjYXVzZSB0aGlzIHBhdGNoIGludHJvZHVjZXMgRFBQIHN1cHBvcnQgYW5kIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhpcyBhbHRlcnMgY29ubmVjdGlvbiBsb2dpYywgQVAgc2VjdXJpdHksIGFuZCBQMlAgYWN0aW9uIGZyYW1lcy4gR2l2ZW4gdGhhdCwgYW5kIHRoZSBlYXNlIG9mIHVzaW5nIFVTQiBlbXVsYXRpb24gZm9yIGZ1enppbmcgdGhpcyBkcml2ZXIsIGl0J3MgYWJzb2x1dGVseSB3b3J0aCB0aGUgZWZmb3J0LiBJdCBzaG91bGQgYmUgYSBnb29kIHRhcmdldCBmb3IgdnVsbmVyYWJpbGl0eSBkaXNjb3ZlcnkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE1MzIwLCJPdXRwdXRUb2tlbnMiOjE1NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM2OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0wOFQxODoyMTo0Mi4wMzM1ODQ5NjZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NTkwNTQxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlJDTUZNQUNcIixcbiAgICBcIkJSQ01GTUFDX1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImJyY21mX2NmZzgwMjExX2Nvbm5lY3RcIixcbiAgICBcImJyY21mX2NmZzgwMjExX3N0YXJ0X2FwXCIsXG4gICAgXCJicmNtZl9wMnBfc2VuZF9hY3Rpb25fZnJhbWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEUFAgKERldmljZSBQcm92aXNpb25pbmcgUHJvdG9jb2wpIEFLTSBhbmQgYWN0aW9uIGZyYW1lcyBpbiB0aGUgQnJvYWRjb20gYnJjbWZtYWMgZHJpdmVyLiBJdCBtb2RpZmllcyBjb25uZWN0aW9uIGxvZ2ljLCBBUCBzZWN1cml0eSBjb25maWd1cmF0aW9uLCBhbmQgUDJQIGFjdGlvbiBmcmFtZSBoYW5kbGluZy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIHZpYSBVU0IgZW11bGF0aW9uLCBzbyBpdCBpcyB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJSQ01GTUFDXCIsXG4gICAgXCJCUkNNRk1BQ19VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicmNtZl9jZmc4MDIxMV9jb25uZWN0XCIsXG4gICAgXCJicmNtZl9jZmc4MDIxMV9zdGFydF9hcFwiLFxuICAgIFwiYnJjbWZfcDJwX3NlbmRfYWN0aW9uX2ZyYW1lXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRFBQIChEZXZpY2UgUHJvdmlzaW9uaW5nIFByb3RvY29sKSBBS00gYW5kIGFjdGlvbiBmcmFtZXMgaW4gdGhlIEJyb2FkY29tIGJyY21mbWFjIGRyaXZlci4gSXQgbW9kaWZpZXMgY29ubmVjdGlvbiBsb2dpYywgQVAgc2VjdXJpdHkgY29uZmlndXJhdGlvbiwgYW5kIFAyUCBhY3Rpb24gZnJhbWUgaGFuZGxpbmcuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCB2aWEgVVNCIGVtdWxhdGlvbiwgc28gaXQgaXMgd29ydGggZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowhzzv6[1] Phase: Succeeded StartedAt: 2026-07-08 18:21:54 +0000 UTC FinishedAt: 2026-07-08 18:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-08 18:21:54 +0000 UTC FinishedAt: 2026-07-08 18:21:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[2] Phase: Succeeded StartedAt: 2026-07-08 18:21:54 +0000 UTC FinishedAt: 2026-07-08 18:49:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-07-08 18:21:54 +0000 UTC FinishedAt: 2026-07-08 18:49:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-08 18:21:54 +0000 UTC FinishedAt: 2026-07-08 18:22:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-08 18:21:54 +0000 UTC FinishedAt: 2026-07-08 18:21:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhzzv6/series-workflowhzzv6-convert-artifact-3131179593/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-08 18:22:04 +0000 UTC FinishedAt: 2026-07-08 18:49:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-08 18:22:04 +0000 UTC FinishedAt: 2026-07-08 18:49:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*49a2d348-7c5a-4fe3-9a5c-0e22ff070fc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhzzv6/series-workflowhzzv6-convert-artifact-3131179593/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c2401941-fba7-4caf-bd91-7710847fed6b", "success": false },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhzzv6/series-workflowhzzv6-build-action-430145831/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-08 18:22:04 +0000 UTC FinishedAt: 2026-07-08 18:49:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*49a2d348-7c5a-4fe3-9a5c-0e22ff070fc3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhzzv6/series-workflowhzzv6-convert-artifact-3131179593/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "c2401941-fba7-4caf-bd91-7710847fed6b", "success": false },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowhzzv6/series-workflowhzzv6-build-action-430145831/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-07-08 18:49:42 +0000 UTC FinishedAt: 2026-07-08 18:49:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzzv6[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["brcmf_cfg80211_connect","brcmf_cfg80211_start_ap","brcmf_p2p_send_action_frame"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5cb5575308bce9d63178fe943bf89c520a348808","config_name":"upstream-apparmor-kasan.config","enable_configs":["BRCMFMAC","BRCMFMAC_USB"],"series_id":"49c37c2b-9795-42a4-8e22-5a4f58801a69","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Failed StartedAt: 2026-07-08 18:49:42 +0000 UTC FinishedAt: 2026-07-08 18:49:47 +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,}