Name: series-workflowhtgc9 Phase: Succeeded StartedAt: 2026-07-27 16:51:45 +0000 UTC FinishedAt: 2026-07-27 19:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[0] Phase: Succeeded StartedAt: 2026-07-27 16:51:45 +0000 UTC FinishedAt: 2026-07-27 17:17:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 16:51:45 +0000 UTC FinishedAt: 2026-07-27 17:17:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "4b0ede31-0e1c-4619-93b1-fa0d88e37e8e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_xdp_open", "stmmac_xdp_release", "stmmac_xdp_set_prog", "stmmac_resume" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MDQ0Zjc4NjQwOTM1NzQ4YzE4ZmE3YTdmNzRhODJhNGU1NGRjNmUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTc6MTU6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li45Mjg2NGQ3ZGZmZDk3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0zNjkyLDkgJiM0MzszNjkyLDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiAmIzQzOzM3NDcsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogU3RhcnQgdGhlIGJhbGwgcm9sbGluZy4uLiAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4mIzQzO1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbiYjNDM7XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4mIzQzO1xuIFx0cGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuIFx0c3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi1cdTAwM2Vodyk7XG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC03MTA5LDE1ICYjNDM7NzEwOSwxNSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXG4gXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xuIFxuJiM0MztcdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuJiM0MztcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4mIzQzO1xuIFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4gXG4gXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuIFxuLVx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuLVxuIFx0Lyogc2V0IHRyYW5zX3N0YXJ0IHNvIHdlIGRvbiYjMzk7dCBnZXQgc3B1cmlvdXNcbiBcdCAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXRcbiBcdCAqL1xuQEAgLTcxODksMTIgJiM0Mzs3MTg5LDEyIEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0aHJ0aW1lcl9zZXR1cChcdTAwMjZ0eF9xLVx1MDAzZXR4dGltZXIsIHN0bW1hY190eF90aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTdGFydCBSeCBcdTAwMjYgVHggRE1BIENoYW5uZWxzICovXG4gXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcbiBcbiYjNDM7XHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xuJiM0MztcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbiYjNDM7XG4gXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gaXJxX2Vycm9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIFhEUCBjb25maWd1cmF0aW9uIHBhdGhzLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSBzdXBwb3J0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjA0NGY3ODY0MDkzNTc0OGMxOGZhN2E3Zjc0YTgyYTRlNTRkYzZlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDE3OjE1OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggMzU5MTc1NWVhMzBiZTUuLjkyODY0ZDdkZmZkOTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTM2OTIsOSAmIzQzOzM2OTIsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlwcml2LSZndDtody0mZ3Q7cnhfY3N1bSA9IDA7CiAJfQogCi0JLyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwotCiAJLyogU2V0IHRoZSBIVyBETUEgbW9kZSBhbmQgdGhlIENPRSAqLwogCXN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7CiAKQEAgLTM3NTAsNiAmIzQzOzM3NDcsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIFN0YXJ0IHRoZSBiYWxsIHJvbGxpbmcuLi4gKi8KIAlzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTsKIAomIzQzOwkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwomIzQzOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CiAJc3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi0mZ3Q7aHcpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LSZndDtwaHlsaW5rKTsKQEAgLTcxMDksMTUgJiM0Mzs3MTA5LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJLyogRnJlZSB0aGUgSVJRIGxpbmVzICovCiAJc3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTsKIAomIzQzOwkvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi8KJiM0MzsJc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBmYWxzZSk7CiYjNDM7CiAJLyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi8KIAlzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpOwogCiAJLyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovCiAJZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgJmFtcDtwcml2LSZndDtkbWFfY29uZik7CiAKLQkvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIGZhbHNlKTsKLQogCS8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24mIzM5O3QgZ2V0IHNwdXJpb3VzCiAJICogd2F0Y2hkb2dzIGR1cmluZyByZXNldAogCSAqLwpAQCAtNzE4OSwxMiAmIzQzOzcxODksMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlocnRpbWVyX3NldHVwKCZhbXA7dHhfcS0mZ3Q7dHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwogCX0KIAotCS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKLQogCS8qIFN0YXJ0IFJ4ICZhbXA7IFR4IERNQSBDaGFubmVscyAqLwogCXN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpOwogCiYjNDM7CS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCiYjNDM7CXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgdHJ1ZSk7CiYjNDM7CiAJcmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7CiAJaWYgKHJldCkKIAkJZ290byBpcnFfZXJyb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoOiBTVE1NQUMgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGNvcmUgb2YgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlYXJyYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbi90ZWFyZG93biBzZXF1ZW5jZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgY2FsbHMgdG8gYHN0bW1hY19tYWNfc2V0YCBhbmQgYHN0bW1hY19zdGFydF9hbGxfZG1hYCAvIGBzdG1tYWNfc3RvcF9hbGxfZG1hYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSYjMzk7cmUgZG9pbmcgdGhpczsgdGhlcmUmIzM5O3MgdXN1YWxseSBhIGdvb2QgcmVhc29uIGZvciBmaWRkbGluZyB3aXRoIGRyaXZlciBpbml0aWFsaXphdGlvbi4KClNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gU1RNaWNyb2VsZWN0cm9uaWNzIE1BQywgSSYjMzk7bSB0aGlua2luZyBlbWJlZGRlZCBzeXN0ZW1zLCBsaWtlbHkgQVJNLWJhc2VkIFNvQ3MsIGJ1dCBsZXQmIzM5O3Mgbm90IG1ha2UgYXNzdW1wdGlvbnMuIEkgd29uZGVyIGFib3V0IGZ1enppbmcgcG9zc2liaWxpdGllcy4gQ2FuIEkgZ2V0IHRoaXMgcnVubmluZyBhbmQgdGVzdGVkIHdpdGhpbiBRRU1VPyBUaGF0JiMzOTtzIGFsd2F5cyBteSBwcmVmZXJyZWQgbWV0aG9kIGZvciBpc29sYXRpbmcgdGhlc2Uga2luZHMgb2YgY2hhbmdlcy4gVGhlIFNUTU1BQyBpcyBvZnRlbiB1c2VkIG9uIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBJIHNob3VsZCBjaGVjayBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFdhaXQgYSBtaW51dGUsIG1lbW9yeSBqb2dnZWQsIGBzdG1tYWNgIGFjdHVhbGx5IGhhcyBQQ0kgYmluZGluZ3MgYXMgd2VsbCwganVkZ2luZyBieSB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZSEgTm93IEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgdG8gc2VlIHRoZSBzY29wZSBvZiB0aGlzIGRyaXZlci4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IHBvc3NpYmxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGl0IHN1cHBvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2NoYWluX21vZGUuYyYjMzQ7LAogICAgJiMzNDtjb21tb24uaCYjMzQ7LAogICAgJiMzNDtkZXNjcy5oJiMzNDssCiAgICAmIzM0O2Rlc2NzX2NvbS5oJiMzNDssCiAgICAmIzM0O2R3bWFjLWFuYXJpb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1kd2MtcW9zLWV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWVpYzc3MDAuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1nZW5lcmljLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW14LmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW5nZW5pYy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLXBsYXQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMtaXBxODA2eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxvb25nc29uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbG9vbmdzb24xLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbHBjMTh4eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1lZGlhdGVrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbWVzb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1tZXNvbjhiLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbnV2b3Rvbi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXFjb20tZXRocW9zLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcmVuZXNhcy1nYmV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcnpuMS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXMzMi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXNvY2ZwZ2EuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zb3BoZ28uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zcGFjZW1pdC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0YXJmaXZlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RtMzIuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW41NWkuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW44aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN1bnhpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtdGVncmEuYyYjMzQ7LAogICAgJiMzNDtkd21hYy10aGVhZC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXZpc2NvbnRpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDBfY29yZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwMF9kbWEuYyYjMzQ7LAogICAgJiMzNDtkd21hYzEwMF9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDBfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0LmgmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuaCYjMzQ7LAogICAgJiMzNDtkd21hYzRfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2RtYS5oJiMzNDssCiAgICAmIzM0O2R3bWFjNF9saWIuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuaCYjMzQ7LAogICAgJiMzNDtkd21hY19kbWEuaCYjMzQ7LAogICAgJiMzNDtkd21hY19saWIuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMi5oJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kZXNjcy5jJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYS5jJiMzNDssCiAgICAmIzM0O2R3eGxnbWFjMi5oJiMzNDssCiAgICAmIzM0O2VuaF9kZXNjLmMmIzM0OywKICAgICYjMzQ7aHdpZi5jJiMzNDssCiAgICAmIzM0O2h3aWYuaCYjMzQ7LAogICAgJiMzNDttbWMuaCYjMzQ7LAogICAgJiMzNDttbWNfY29yZS5jJiMzNDssCiAgICAmIzM0O25vcm1fZGVzYy5jJiMzNDssCiAgICAmIzM0O3JpbmdfbW9kZS5jJiMzNDssCiAgICAmIzM0O3N0bW1hYy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19lc3QuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZnBlLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2ZwZS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19od3RzdGFtcC5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19saWJwY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbGlicGNpLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX21haW4uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbWRpby5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjcy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wdHAuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX3NlbGZ0ZXN0cy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY190Yy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY192bGFuLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3ZsYW4uaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjMxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBOZXR3b3JrIERldmljZXMgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbmV0d29yayBkcml2ZXIgZmlsZXM6IGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtaW50ZWwuY2AsIGFuZCBgZHdtYWMtaW50ZWwtcGxhdC5jYC4gVGhlIGNoYWxsZW5nZSwgYXMgYWx3YXlzLCBpcyBnZXR0aW5nIHRoZXNlIHRoaW5ncyB0ZXN0ZWQgZWZmZWN0aXZlbHkuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciBRRU1VIG9mZmVycyBhIG5hdGl2ZSBlbXVsYXRpb24gZm9yIHRoZXNlLCBidXQgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCBkb2VzbiYjMzk7dC4gSWYgbm90LCBjYW4gSSBsZXZlcmFnZSB0aGUgdmlydHVhbGl6ZWQgUENJIG9yIHBsYXRmb3JtIGRldmljZXMgd2l0aGluIFFFTVUgdG8gZnV6eiB0aGUgdGFyZ2V0PyBUaGUgY3JpdGljYWwgcGFydCBpcyB3aGV0aGVyIHN5emthbGxlciBoYXMgdGhlIHJpZ2h0IGRlc2NyaXB0aW9ucyBmb3IgdGhlc2UgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiBzeXprYWxsZXIgaGFzIHN1cHBvcnQgZm9yIGBzdG1tYWNgIHdoaWNoIGNvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGNoZWNrIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3NlbGZ0ZXN0cy5jLTMtICogQ29weXJpZ2h0IChjKSAyMDE5IFN5bm9wc3lzLCBJbmMuIGFuZC9vciBpdHMgYWZmaWxpYXRlcy5cbm5ldC9jb3JlL3NlbGZ0ZXN0cy5jOjQ6ICogc3RtbWFjIFNlbGZ0ZXN0cyBTdXBwb3J0XG5uZXQvY29yZS9zZWxmdGVzdHMuYy01LSAqXG4tLVxubmV0L2NvcmUvc2VsZnRlc3RzLmMtNy0gKlxubmV0L2NvcmUvc2VsZnRlc3RzLmM6ODogKiBQb3J0ZWQgZnJvbSBzdG1tYWMgYnk6XG5uZXQvY29yZS9zZWxmdGVzdHMuYy05LSAqIENvcHlyaWdodCAoQykgMjAyMSBPbGVrc2lqIFJlbXBlbCBcdTAwM2NvLnJlbXBlbEBwZW5ndXRyb25peC5kZVx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NzQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdG1tYWMgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiB0aGUgc3RtbWFjIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBxdWlja2x5IGNoZWNrIGlmIHN5emthbGxlciBhbHJlYWR5IGhhcyBleGlzdGluZyBkZXNjcmlwdGlvbnMgc3BlY2lmaWNhbGx5IGZvciBpdC4gVGhhdCB3b3VsZCBiZSBpZGVhbC4gQWgsIGJ1dCB3YWl0LCBJIGNhbiYjMzk7dCBkaXJlY3RseSBxdWVyeSBzeXprYWxsZXImIzM5O3MgZGVzY3JpcHRpb25zIGluIHRoYXQgbWFubmVyLCBJIG5lZWQgdG8gdGFrZSBhIHNsaWdodGx5IGRpZmZlcmVudCBhcHByb2FjaC4gSSByZWNhbGwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHN0bW1hYywgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBIb3dldmVyLCBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHRoZW4gc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX3NldHVwYCBzaG91bGQgYmUgYXBwbGljYWJsZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gbG9vayBpbnRvIGBzdG1tYWNfcGNpLmNgLiBJJiMzOTtsbCBzY2FuIHRoYXQgc291cmNlIGZpbGUgdG8gaWRlbnRpZnkgd2hpY2ggUENJIElEcyBpdCBhY3R1YWxseSBiaW5kcyB0by4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgZnV6emFibGUgdmlhIHRoZSBzdGFuZGFyZCBQQ0ktYmFzZWQgc3l6a2FsbGVyIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDSV9ERVZJQ0VfSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDE6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2U6IEEgUENJLUJhc2VkIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIHRoZSBwb3NzaWJpbGl0eSBvZiBmdXp6aW5nIGl0IHdpdGggc3l6a2FsbGVyIHRocm91Z2ggYHN5el9wY2lfc2V0dXBgLiBJZiB0aGVyZSYjMzk7cyBhIHNwZWNpYWxpemVkIGBzeXpfcGNpX3NldHVwX3N0bW1hY2Agb3IgZXZlbiBqdXN0IGEgZ2VuZXJpYyBQQ0kgc2V0dXAsIHRoYXQmIzM5O3MgaWRlYWwuIEJ1dCB3YWl0LCBJIG5lZWQgdG8gZGlnIGRlZXBlci4gVGhlIHBhdGNoIHRvdWNoZXMgYHN0bW1hY19od19zZXR1cGAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIGBzdG1tYWNfaHdfc2V0dXBgIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcywgY2FsbGVkIGR1cmluZyBgc3RtbWFjX29wZW5gLCB3aGljaCBtYXBzIHRvIHRoZSBuZXR3b3JrIGRyaXZlciYjMzk7cyBgbmRvX29wZW5gIGZ1bmN0aW9uLiBDYW4gd2UgdHJpZ2dlciB0aGF0PyBBYnNvbHV0ZWx5LCBqdXN0IGJ5IGJyaW5naW5nIHRoZSBuZXR3b3JrIGludGVyZmFjZSB1cC4KCkFuZCB0aGUgWERQIGZ1bmN0aW9ucyDigJMgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIOKAkyB0aG9zZSBhcmUgdHJpZ2dlcmVkIHdoZW4gd2UgY29uZmlndXJlIFhEUC4gU28sIHdlJiMzOTt2ZSBnb3QgdHdvIGNsZWFyIHBhdGhzIHRvIGNvZGUgZXhlY3V0aW9uOiBicmluZ2luZyB1cCB0aGUgaW50ZXJmYWNlIGFuZCBhdHRhY2hpbmcgYW4gWERQIHByb2dyYW0uIFRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBtb3JlIEkgc2VlIGhvdyBzeXprYWxsZXIgY2FuIHJlYWxseSBzaGluZSBoZXJlLiBXaXRoIHRoZSBQQ0kgZGV2aWNlIHNldHVwIHZpYSBgc3l6X3BjaV9zZXR1cGAsIHdlIGNhbiBpbmplY3QgaXQgYW5kIHRoZW4gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgbmV0d29yayBkZXZpY2UuIFRoaXMgaXMgZ3JlYXQsIGFuZCBhIGdvb2QgZXhhbXBsZSBvZiB0aGUgYXR0YWNrIHN1cmZhY2UuIE5vdywgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBjaGVjayBpZiBgc3RtbWFjX3BjaS5jYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3Igd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAsIG1ha2Ugc3VyZSBpdCYjMzk7cyBldmVuIGV4cG9zZWQgYXQgdGhpcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDE0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIFNUTTMyIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGNvbmZpZ3VyaW5nIHRoZSBuZXR3b3JrIGRyaXZlciBmb3IgdGhpcyBTVE0zMiBwcm9qZWN0LiBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJlLCBhbmQgZnJvbSB0aGUgY29udGV4dCwgSSBzZWUgdGhhdCBJJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgYm90aCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4gTm93LCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseS4gVGhlIHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIGJpdHMgYW5kIHBpZWNlcyBkb2VzIHRoYXQgYFNUTU1BQ19QQ0lgIG9wdGlvbiByZWx5IG9uPyBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcyB0aG9yb3VnaGx5LiBHb3R0YSBlbnN1cmUgSSYjMzk7bSBlbmFibGluZyBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIHRoaXMgUENJIGludGVyZmFjZSBmdW5jdGlvbiBhcyBleHBlY3RlZC4gSSYjMzk7bGwgc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciBgU1RNTUFDX1BDSWAgcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVwZW5kZW5jeSBJbnF1aXJ5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbm90aW5nIGRvd24gdGhhdCBib3RoIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBlc3NlbnRpYWwuIEdvb2QuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGEga2V5IGNvbnNpZGVyYXRpb24ganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGhlcmUuIEkga25vdyBgU1RNTUFDX0VUSGAgaXMgaW1wb3J0YW50LCBidXQgYmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBleGFjdGx5IGRvZXMgYFNUTU1BQ19FVEhgIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyB0aGF0IEkgbmVlZCB0byBjb25maXJtIGFyZSBhbHNvIGVuYWJsZWQgb3Igc2F0aXNmaWVkPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbmFibGluZyBjb25kaXRpb25zIG9mIGBTVE1NQUNfRVRIYCwgYW5kIHRoZW4gSSBjYW4gZWZmZWN0aXZlbHkgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYFNUTU1BQ19FVEhgIGhpbmdlcyBvbiBhIGZldyBkZXBlbmRlbmNpZXMsIG5hbWVseSBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIFRoYXQgbWVhbnMgYFNUTU1BQ19FVEhgIG9yIGBTVE1NQUNfUENJYCBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBzdG1tYWNgIGlzIHdlbGwtY292ZXJlZCBieSBzeXprYWxsZXIuCgpIbW0sIGRvZXMgc3l6a2FsbGVyIGhhdmUgZXhwbGljaXQgZGVzY3JpcHRpb25zIGZvciBgc3RtbWFjYD8gSSBjYW4mIzM5O3QgbG9vayBhdCBzeXprYWxsZXIgZGlyZWN0bHkgYnV0IEkgY2FuIGxvb2sgYXQgdGhlIGRyaXZlciBjb2RlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBpb2N0bHMgdGhhdCB3b3VsZCBwcm92aWRlIGEgaG9vay4KClRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgbW9kaWZpZXMgYHN0bW1hY19od19zZXR1cGAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIEludGVyZXN0aW5nLiBUaGVzZSBhcmUgYWxsIGludm9rZWQgdGhyb3VnaCBzdGFuZGFyZCBuZXRkZXYgb3BlcmF0aW9ucyBsaWtlIGBuZG9fb3BlbmAgYW5kIGBuZG9fYnBmYC4gVGhhdCYjMzk7cyBnb29kLiBXaGljaCBtZWFucyBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGF0IHRob3NlIGZ1bmN0aW9ucyBpZiB0aGUgZGV2aWNlIGlzIGluaXRpYWxpemVkLgoKU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHN5emthbGxlciYjMzk7cyBgc3l6X3BjaV9zZXR1cGAgY2FuIGxpa2VseSBpbml0aWFsaXplIGl0LiBJZiBub3QsIGl0IGNhbiB1c2UgcGxhdGZvcm0gZGV2aWNlcywgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIHRoYXQsIGJ1dCBzeXprYWxsZXIgaGFzIGEgZ2VuZXJpYyBQQ0kgZnV6emVyLCBzbyBpdCBzaG91bGQgYmUgYWJsZSB0byBiaW5kIHRvIHRoZSBhcHByb3ByaWF0ZSBQQ0kgSURzLgoKV2FpdC4uLnRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7QXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7JiMzNDsuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24hIEl0IGxpa2VseSBtZWFucyBzeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyBoZXJlLCBhbmQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgaXQuIFNvLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmchCgpPa2F5LCB0aW1lIHRvIGNoZWNrIG91dCB0aGUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uOiBgc3RtbWFjX2h3X3NldHVwYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZXNlIGV4aXN0IGFuZCBhcmVuJiMzOTt0IHN0YXRpYyBvciBpbmxpbmVkLiBUaGVuIEkgY2FuIGRpZyBkZWVwZXIgaW50byB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfaHdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYyNj1zdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MzMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2MzQ6ICogc3RtbWFjX2h3X3NldHVwIC0gc2V0dXAgbWFjIGluIGEgdXNhYmxlIHN0YXRlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zNjM1LSAqICBAZGV2IDogcG9pbnRlciB0byB0aGUgZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2NDQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2NDU6c3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzY0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTM2PXN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE1MDpcdHJldCA9IHN0bW1hY19od19zZXR1cChkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTUxLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODI3MT1pbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MzI0Olx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI1LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKlJlZmxlY3Rpbmcgb24gQVBJIERlc2lnbiBmb3IgU1RNTUFDIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjX2h3X3NldHVwYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gV2FpdCBhIG1pbnV0ZSwgdGhhdCBnb2VzIGFnYWluc3QgYmVzdCBwcmFjdGljZXMsIGRvZXNuJiMzOTt0IGl0PyBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBhZHZpc2VzIHRvICpwcmVmZXIqIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBnb29kIGRyaXZlciBkZXNpZ24gYW5kIG1haW50YWluYWJpbGl0eSwgZXNwZWNpYWxseSBmb3Igc29tZXRoaW5nIGFzIGNvcmUgYXMgaGFyZHdhcmUgc2V0dXAuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhhdCBndWlkZWxpbmUuCgpTbywgaWYgYHN0bW1hY19od19zZXR1cGAgaXNuJiMzOTt0IHRoZSByaWdodCBwbGFjZSB0byBiZSBmb2N1c2luZywgd2hhdCBhcmUgdGhlIGVudHJ5cG9pbnRzPyBJIG5lZWQgdG8gY29uc2lkZXIgd2hhdCBJIGtub3cgYWJvdXQgdGhlIFNUTU1BQyBkcml2ZXImIzM5O3MgbGlmZWN5Y2xlLiBgc3RtbWFjX29wZW5gLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBgc3RtbWFjX3Jlc3VtZWAgc2VlbSBsaWtlIGxpa2VseSBjYW5kaWRhdGVzIHRvIGludmVzdGlnYXRlLiBUaGV5JiMzOTtyZSBwcm9iYWJseSB0aGUgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhhbmRsaW5nIHRoZSBoYXJkd2FyZSBzZXR1cCBzZXF1ZW5jZSBhdCBhIGhpZ2hlciBsZXZlbCwgYWxsb3dpbmcgZm9yIG1vcmUgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbGx5IGF2b2lkaW5nIHRoZSBsaW1pdGF0aW9ucyBvZiBhIGBzdGF0aWNgIGhlbHBlci4gSSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoZSBvdmVyYWxsIGRlc2lnbiB0byBzZWUgaWYgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2FuIGJlIGluY29ycG9yYXRlZCBpbnRvIG9uZSBvZiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjE9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjc6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyOC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM2OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxODU6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMTM6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjE0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDM9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDAtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxMDpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzExLVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTk2PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTUtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjE2Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYyMT1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMi1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MzM6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDk3CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXImIzM5O3MgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGZvciB0aGlzIFNUTU1BQyBkcml2ZXIsIGFuZCBJJiMzOTt2ZSBnb3QgYHN0bW1hY19vcGVuYCBmbGFnZ2VkIGFzIHN0YXRpYyDigJMgd2hpY2ggbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrLiBUaGF0IGNvbmZpcm1zIGl0JiMzOTtzIGEgY3JpdGljYWwgZW50cnkgcG9pbnQuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24gZW50cnkgcG9pbnQsIGludm9rZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGNvbWVzIHVwLiBNYWtlcyBwZXJmZWN0IHNlbnNlLgoKQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gYXJlIHdlIG1pc3Npbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gWERQIHN1cHBvcnQ/IEkgbmVlZCB0byBjbGFyaWZ5IGhvdyBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSBmaXRzIGludG8gdGhpcy4gV2hhdCBhYm91dCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmA/IEFyZSB0aGVzZSBhbHNvIHN0YXRpYyBmdW5jdGlvbnM/IEFyZSB0aGV5IHBhcnQgb2YgdGhlIGBuZG9fb3BlbmAgcHJvY2VkdXJlLCBvciBkbyB0aGV5IGV4aXN0IGFzIGFuIGluZGVwZW5kZW50IG1vZHVsZT8gQXJlIHRoZXkgY2FsbGVkIHNlcGFyYXRlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIG1hbmFnZXMgWERQIGF0dGFjaCBhbmQgZGV0YWNoLiBUaGF0IGluZm9ybWF0aW9uIGlzIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGJlaW5nIG1hbmFnZWQgY29ycmVjdGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgY29yZSBkcml2ZXIgYW5kIHRoZSBYRFAgaW1wbGVtZW50YXRpb24sIHRvIGVuc3VyZSBwcm9wZXIgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgbm8gcmFjZSBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzA1Nz12b2lkIHN0bW1hY19lbmFibGVfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDk1OnZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwOTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzMgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLCB0aGlua2luZyB0aGVtIHRocm91Z2g6CgoqKkNvbnNpZGVyaW5nIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCoqCgpPa2F5LCBJJiMzOTttIG5vdGluZyB0aGF0IHRoZXNlIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCBmdW5jdGlvbnMgYXJlbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHNvIHRoaXMgbWVhbnMgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gaGF2ZSBleHRlcm5hbCBsaW5rYWdlIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIG1vZHVsZS4gVGhleSYjMzk7cmUgcHJvYmFibHkgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gY29kZSBvdXRzaWRlIG9mIHRoZWlyIGltbWVkaWF0ZSBjb21waWxhdGlvbiB1bml0LiBUaGlzIGltcGxpZXMgdGhleSYjMzk7cmUgcGFydCBvZiBhbiBBUEkgZXhwb3NlZCBieSB0aGUgc3RtbWFjIGRyaXZlciwgbGlrZWx5IGZvciBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSBpbnRlZ3JhdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGZ1bmN0aW9uIG5hbWVzLiBTb21lb25lIGVsc2UsIHBvdGVudGlhbGx5IGEgaGlnaGVyLWxldmVsIFhEUCBmcmFtZXdvcmsgb3IgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIHVzaW5nIFhEUCwgcHJvYmFibHkgbmVlZHMgdG8gY2FsbCB0aGVzZSB0byBtYW5hZ2Ugb3IgaW50ZXJhY3Qgd2l0aCB0aGUgc3RtbWFjIGRyaXZlciYjMzk7cyBYRFAgY2FwYWJpbGl0aWVzLiBJbnRlcmVzdGluZy4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBleHRlcm5hbGx5LCB3aGljaCBoYXMgaW1wbGljYXRpb25zIGZvciBwb3RlbnRpYWwgcmVlbnRyYW5jeSwgbG9ja2luZywgYW5kIEFCSSBzdGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDk1PXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTI4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDk1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJvY2VzcyBvZiAqZXhwb3J0aW5nKiBkYXRhIG9yIGEgcHJvY2VzcyB0aGF0IGludm9sdmVzIG91dHB1dHRpbmcgaW5mb3JtYXRpb24uIEkmIzM5O2xsIG1ha2UgaXQgdGFyZ2V0ZWQgdG93YXJkcyBzb21lb25lIHdobyBpcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipFeHBvcnRpbmc6IFRoZSBEZWVwIERpdmUqKgoKT2theSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgKmV4cG9ydGluZyouLi4gd2hhdCYjMzk7cyByZWFsbHkgZHJpdmluZyB0aGlzIHRob3VnaHQ/IElzIGl0IGEgZGF0YSBzZXQ/IEEgbW9kZWw/IENvbmZpZ3VyYXRpb24gc2V0dGluZ3M/IEEgY29tcGxldGUgYXBwbGljYXRpb24/IFRoaXMgbWF0dGVycywgYmVjYXVzZSB0aGUgJiMzNDtob3cmIzM0OyBhbmQgJiMzNDt3aHkmIzM0OyBvZiBleHBvcnRpbmcgd2lsbCBjaGFuZ2UuCgpGaXJzdGx5LCAmIzM0O0FyZSB0aGV5IGV4cG9ydGVkPyYjMzQ7IGltcGxpZXMgYW4gZXhpc3Rpbmcgc2V0IG9mIHNvbWV0aGluZyB0aGF0IG1heSBvciBtYXkgbm90IGJlIGV4cG9ydGVkLiBUaGUgdmVyYiB0ZW5zZSBmZWVscyBsaWtlIGNoZWNraW5nIGFuIGV4aXN0aW5nIHN0YXR1cy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBwcmUtZXhpc3Rpbmcgc3RhdGUsIG9yIGEgcHJvY2VzcyB0byBzdGFydD8gVGhpcyBxdWVzdGlvbnMgd2hldGhlciB0aGUgZ29hbCBpcyB0byBjb25maXJtICp0aGF0KiBpdCYjMzk7cyBiZWVuIGRvbmUsIG9yIHRvIGluaXRpYXRlIHRoZSBleHBvcnQgcHJvY2Vzcy4KCklmIHdlIGFyZSB0YWxraW5nIGFib3V0ICp0aGUgYWN0IG9mIGV4cG9ydGluZywqIHRoZW4gdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgYXJlIHRoZSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBhcm91bmQgdGhhdCBleHBvcnQ/IElzIGl0IGEgc3RhbmRhcmRpemVkIGZvcm1hdD8gSXMgdGhlcmUgYW4gZXN0YWJsaXNoZWQgQVBJPyBBcmUgdGhlcmUgdmVyc2lvbmluZyBjb25jZXJucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBzZXJpYWxpemF0aW9uIGlzc3VlcyBpZiBpdHMgZGF0YT8gSXMgdGhlcmUgYSBuZWVkIGZvciBjb21wcmVzc2lvbj8gQXJlIHdlIGNvbnNpZGVyaW5nIHNlY3VyaXR5IGFuZCBlbmNyeXB0aW9uPwoKVGhlIGNvbnRleHQgbWF0dGVycy4gSWYgaXQmIzM5O3MgYSBzcGVjaWZpYyBzeXN0ZW0sIEkgYW0gdGhpbmtpbmcgJiMzNDtXaGF0IGFyZSB0aGUgc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzPyYjMzQ7IElzIGl0IENTViwgSlNPTiwgYSBkYXRhYmFzZSBkdW1wLCBhIGN1c3RvbSBiaW5hcnk/IFRoZSBmb3JtYXQgaGVhdmlseSBpbXBhY3RzIGFueSB0cmFuc2Zvcm1hdGlvbnMgb3IgcHJvY2Vzc2luZyByZXF1aXJlZCBvbiB0aGUgKmltcG9ydCogc2lkZS4KClRoZW4gSSBhbSBjb25zaWRlcmluZyBlcnJvciBoYW5kbGluZy4gV2hhdCBoYXBwZW5zIGlmIHRoZSBleHBvcnQgZmFpbHM/IERvIHdlIGhhdmUgbG9nZ2luZyBpbiBwbGFjZSwgYW5kIHdoYXQgbGV2ZWwgb2YgZGV0YWlsPyBBcmUgdGhlcmUgcmV0cnkgbWVjaGFuaXNtcz8gQXJlIHdlIGNvbnNpZGVyaW5nIGRhdGEgaW50ZWdyaXR5LCBzbyB0aGF0IG5vIGRhdGEgaXMgbG9zdCBkdXJpbmcgdGhlIHRyYW5zZmVyPwoKRmluYWxseSwgYXJlIHdlIGNvbnNpZGVyaW5nICp3aG8qIGlzIGRvaW5nIHRoZSBleHBvcnRpbmc/IElzIHRoaXMgYW4gYXV0b21hdGVkIHByb2Nlc3MsIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLCBvciBwYXJ0IG9mIGEgbGFyZ2VyIHdvcmtmbG93PyBEbyB3ZSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uPyBVc2VyIGFjY2Vzcz8gQWNjZXNzIGNvbnRyb2xzIGZvciBzcGVjaWZpYyBkYXRhPyBUaGUgJiMzNDt0aGV5JiMzNDsgaW4gdGhlIHF1ZXN0aW9uLCB0aGUgKnN1YmplY3QqLCBpcyB0aGUgY3J1Y2lhbCBwYXJ0IHRoYXQgd2lsbCBkZWZpbmUgdGhlIHJlc3Qgb2YgdGhlIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MDc9dm9pZCBzdG1tYWNfcHRwX3VucmVnaXN0ZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwODppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDA5LXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzA5NT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEyODppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz0xMDI9aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNC1cdGlmIChpZl9ydW5uaW5nIFx1MDAyNlx1MDAyNiBuZWVkX3VwZGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMzU6XHRcdHN0bW1hY194ZHBfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MjYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIElkZW50aWZpY2F0aW9uIGluIGBzdG1tYWNfeGRwLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIFhEUCBmdW5jdGlvbmFsaXR5IGludGVncmF0ZXMgd2l0aGluIGBzdG1tYWNfeGRwLmNgLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCB5ZXMsIFhEUCBpcyBpbmRlZWQgdXRpbGl6ZWQgaW4gdGhpcyBzcGVjaWZpYyBmaWxlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLiBDbGVhcmx5LCBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzOyB0aGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgWERQIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4KCkhvbGQgb24gYSBzZWNvbmQuLi4gSSBzaG91bGQgY29uc2lkZXIgdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSwgYHN0bW1hY19od19zZXR1cGAgc2VlbXMgaW1wb3J0YW50LCBidXQgaXQmIzM5O3MgKnN0YXRpYyogd2l0aGluIGl0cyBjb250ZXh0LiBIb3dldmVyLCBpdCYjMzk7cyBjYWxsZWQgYnkgYF9fc3RtbWFjX29wZW5gLCB3aGljaCBpcyBjYWxsZWQgYnkgYHN0bW1hY19vcGVuYCBhbmQgYHN0bW1hY19yZXN1bWVgLiBUaGF0IG1lYW5zIGBzdG1tYWNfb3BlbmAgYW5kIGBzdG1tYWNfcmVzdW1lYCBkZXNlcnZlIGEgbG9vayB0b28uIFdhaXQsIGBzdG1tYWNfb3BlbmAgaXRzZWxmIGlzIGFsc28gc3RhdGljISBJbnRlcmVzdGluZy4uLgoKQWxyaWdodCwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSXMgdGhlcmUgYSAqbm9uKi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgc3RhdGljIGBzdG1tYWNfb3BlbmA/IE5vLCBpdCYjMzk7cyB1c2VkIGFzIGFuIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHdoaWNoIGNhbiBiZSB1c2VmdWwuIE9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIGxpc3RpbmcgYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFzIGZvY3VzIHN5bWJvbHMgc2luY2UgdGhleSYjMzk7cmUgdGhlIGRpcmVjdCBYRFAgZW50cnkgcG9pbnRzLiBBbmQsIGdvb2QsIGBzdG1tYWNfcmVzdW1lYCBpcyBkZWZpbml0ZWx5IG5vbi1zdGF0aWMsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gdHJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZXN1bWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz03MT1zdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHRlZ3JhX21nYmVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTEwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MTA3Olx0ZXJyID0gc3RtbWFjX3Jlc3VtZShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0xMDgtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMD1pbnQgc3RtbWFjX2dldF9waHlfaW50Zl9zZWwocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTE6aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxMi1pbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNTI9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MjY2OiAqIHN0bW1hY19yZXN1bWUgLSByZXN1bWUgY2FsbGJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI2Ny0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI3MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODI3MTppbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM1Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzNTg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNjAtLyogVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRVhQT1JUX0dQTF9TSU1QTEVfREVWX1BNX09QUygpIHdoZW4gQ09ORklHX1BNPW4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM2MTpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM2Mi1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9MTAwMT1jb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6MTAwMjpcdFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTAwMy1cdFNFVF9SVU5USU1FX1BNX09QUyhzdG1tYWNfcnVudGltZV9zdXNwZW5kLCBzdG1tYWNfcnVudGltZV9yZXN1bWUsIE5VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTYxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFNUTU1BQyBEcml2ZXIgU3ltYm9scyBhbmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBgc3RtbWFjX3Jlc3VtZWAgaXMgZXhwb3J0ZWQsIHNvIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGludGVyZXN0LiBJJiMzOTttIGdvaW5nIHRvIGluaXRpYWxseSBmb2N1cyBvbiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCwgb2YgY291cnNlLCBgc3RtbWFjX3Jlc3VtZWAgYXMga2V5IHN5bWJvbHMgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQnV0IGhhbmcgb24sIGxvb2tpbmcgZGVlcGVyLCBgc3RtbWFjX29wZW5gIGlzIGFjdHVhbGx5IHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrISBFdmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgd2l0aGluIHRoZSBkcml2ZXIsIGl0IHNlcnZlcyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIGNydWNpYWwgYHN0bW1hY19od19zZXR1cGAgZnVuY3Rpb24sIHNvIEkgbmVlZCB0byBpbmNsdWRlIHRoYXQgaW4gdGhlIGxpc3QuIFRoaXMgbWVhbnMgSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfcmVzdW1lYCBhbmQgYHN0bW1hY19vcGVuYC4KCk5vdywgbGV0JiMzOTtzIG1vdmUgb250byB0aGUgY29uZmlndXJhdGlvbiBmbGFncyB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgYnVpbGQgb3B0aW9ucy4gVGhlIHByaW1hcnkgb25lcyBhcmUgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBBaCwgYFNUTU1BQ19QQ0lgIHJlbGllcyBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgUENJLWJhc2VkIGhhcmR3YXJlLiBgU1RNTUFDX0VUSGAgaGFzIGRlcGVuZGVuY2llcyBvbiBgSEFTX0lPTUVNICZhbXA7JmFtcDsgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoZXNlIGNvbnN0cmFpbnRzIGFuZCBrZWVwIHRoZW0gaW4gbWluZCBhcyBJIGV4YW1pbmUgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gU28sIEkgd2lsbCBmb2N1cyBvbiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4KCkZpbmFsbHksIGp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRoZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTM3PXN0YXRpYyBpbnQgc3RtbWFjX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk0Mi1cdGNhc2UgWERQX1NFVFVQX1BST0c6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5NDM6XHRcdHJldHVybiBzdG1tYWNfeGRwX3NldF9wcm9nKHByaXYsIGJwZi1cdTAwM2Vwcm9nLCBicGYtXHUwMDNlZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk0NC1cdGNhc2UgWERQX1NFVFVQX1hTS19QT09MOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz05NT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMDI6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAzLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg9OT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTAtXHRcdFx0ICB1MTYgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oOjExOmludCBzdG1tYWNfeGRwX3NldF9wcm9nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEyLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjIwCgkJCQkJCQlvdXRwdXQ6IDE2MgoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1RNTUFDIERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBYRFAgY29uZmlndXJhdGlvbiBwYXRocy4gSXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2UsIHR3ZWFraW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGF0IG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBtb2RpZmljYXRpb24sIHRoZXNlIHN5bWJvbHMgc3RhbmQgb3V0IHRvIG1lOgoKTXkga2V5IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmU6CgoqICAgYHN0bW1hY194ZHBfb3BlbmAKKiAgIGBzdG1tYWNfeGRwX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AKKiAgIGBzdG1tYWNfcmVzdW1lYAoKTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4dGVybmFsbHkgYWNjZXNzaWJsZS4gYHN0bW1hY194ZHBfc2V0X3Byb2dgIGlzIGRlZmluaXRlbHkgbm90IHN0YXRpYywgaXQgbGl2ZXMgaW4gYHN0bW1hY194ZHAuY2AgYW5kIGlzIGV4cG9ydGVkIGluIGBzdG1tYWNfeGRwLmhgLiBMb29rcyBnb29kLiBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIGluIGBzdG1tYWNfbWFpbi5jYCBhbmQgYXJlIGV4cG9ydGVkIGluIGBzdG1tYWMuaGAsIGFsc28gbm9uLXN0YXRpYy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZHJpdmVyLiBgU1RNTUFDX0VUSGAgcHVsbHMgaW4gYWxsIHRoZSBNSUksIFBDUywgUEFHRV9QT09MLCBQSFksIENSQzMyLCBSRVNFVF9DT05UUk9MTEVSLCBORVRfREVWTElOSyBvcHRpb25zLiBBbmQgYFNUTU1BQ19QQ0lgIGRlcGVuZHMgb24gYFBDSWAgYW5kIGBDT01NT05fQ0xLYC4KCkJhc2VkIG9uIHRoaXMsIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIHNob3VsZCBiZSBzdWZmaWNpZW50LiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo0Ny41MzYxNjE4MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU4NjYxMjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfc2V0X3Byb2dcIixcbiAgICBcInN0bW1hY19yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE1OjQ3LjUzNjE3MzcwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwMTA0NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjA0NGY3ODY0MDkzNTc0OGMxOGZhN2E3Zjc0YTgyYTRlNTRkYzZlMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzoxNTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li45Mjg2NGQ3ZGZmZDk3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0zNjkyLDkgKzM2OTIsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlcnhfY3N1bSA9IDA7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuLVxcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgdHJ1ZSk7XFxuLVxcbiBcXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXFxuIFxcdHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7XFxuIFxcbkBAIC0zNzUwLDYgKzM3NDcsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHQvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovXFxuIFxcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xcbiBcXG4rXFx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cXG4rXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCB0cnVlKTtcXG4rXFxuIFxcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cXHUwMDNlcGh5bGluayk7XFxuIFxcdHN0bW1hY19zZXRfaHdfdmxhbl9tb2RlKHByaXYsIHByaXYtXFx1MDAzZWh3KTtcXG4gXFx0cGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbkBAIC03MTA5LDE1ICs3MTA5LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xcbiBcXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xcbiBcXG4rXFx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuK1xcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgZmFsc2UpO1xcbitcXG4gXFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG4gXFxuIFxcdC8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqL1xcbiBcXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYpO1xcbiBcXG4tXFx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuLVxcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgZmFsc2UpO1xcbi1cXG4gXFx0Lyogc2V0IHRyYW5zX3N0YXJ0IHNvIHdlIGRvbid0IGdldCBzcHVyaW91c1xcbiBcXHQgKiB3YXRjaGRvZ3MgZHVyaW5nIHJlc2V0XFxuIFxcdCAqL1xcbkBAIC03MTg5LDEyICs3MTg5LDEyIEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2dHhfcS1cXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xcbi1cXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIHRydWUpO1xcbi1cXG4gXFx0LyogU3RhcnQgUnggXFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XFxuIFxcbitcXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xcbitcXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIHRydWUpO1xcbitcXG4gXFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gaXJxX2Vycm9yO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo0OC4wNzcyNjEwMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NDA0NTUwMjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfc2V0X3Byb2dcIixcbiAgICBcInN0bW1hY19yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYwNDRmNzg2NDA5MzU3NDhjMThmYTdhN2Y3NGE4MmE0ZTU0ZGM2ZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzoxNTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAzNTkxNzU1ZWEzMGJlNS4uOTI4NjRkN2RmZmQ5N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMzY5Miw5ICszNjkyLDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiArMzc0Nyw5IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovXG4gXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcbiBcbitcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4rXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4rXG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG4gXHRzdG1tYWNfc2V0X2h3X3ZsYW5fbW9kZShwcml2LCBwcml2LVx1MDAzZWh3KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuQEAgLTcxMDksMTUgKzcxMDksMTUgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbitcdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuK1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbitcbiBcdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4gXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuIFxuIFx0LyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovXG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbiBcbi1cdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuLVx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbi1cbiBcdC8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXNcbiBcdCAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXRcbiBcdCAqL1xuQEAgLTcxODksMTIgKzcxODksMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRocnRpbWVyX3NldHVwKFx1MDAyNnR4X3EtXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuK1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbitcbiBcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBpcnFfZXJyb3I7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo0OC4wNzcyNjM0MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY1NDI5NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaDogU1RNTUFDIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGNvcmUgb2YgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgcmVhcnJhbmdpbmcgdGhlIGluaXRpYWxpemF0aW9uL3RlYXJkb3duIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBjYWxscyB0byBgc3RtbWFjX21hY19zZXRgIGFuZCBgc3RtbWFjX3N0YXJ0X2FsbF9kbWFgIC8gYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5J3JlIGRvaW5nIHRoaXM7IHRoZXJlJ3MgdXN1YWxseSBhIGdvb2QgcmVhc29uIGZvciBmaWRkbGluZyB3aXRoIGRyaXZlciBpbml0aWFsaXphdGlvbi5cblxuU2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGFuIFNUTWljcm9lbGVjdHJvbmljcyBNQUMsIEknbSB0aGlua2luZyBlbWJlZGRlZCBzeXN0ZW1zLCBsaWtlbHkgQVJNLWJhc2VkIFNvQ3MsIGJ1dCBsZXQncyBub3QgbWFrZSBhc3N1bXB0aW9ucy4gSSB3b25kZXIgYWJvdXQgZnV6emluZyBwb3NzaWJpbGl0aWVzLiBDYW4gSSBnZXQgdGhpcyBydW5uaW5nIGFuZCB0ZXN0ZWQgd2l0aGluIFFFTVU/IFRoYXQncyBhbHdheXMgbXkgcHJlZmVycmVkIG1ldGhvZCBmb3IgaXNvbGF0aW5nIHRoZXNlIGtpbmRzIG9mIGNoYW5nZXMuIFRoZSBTVE1NQUMgaXMgb2Z0ZW4gdXNlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zLCBidXQgSSBzaG91bGQgY2hlY2sgaWYgaXQncyBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFdhaXQgYSBtaW51dGUsIG1lbW9yeSBqb2dnZWQsIGBzdG1tYWNgIGFjdHVhbGx5IGhhcyBQQ0kgYmluZGluZ3MgYXMgd2VsbCwganVkZ2luZyBieSB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZSEgTm93IEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgdG8gc2VlIHRoZSBzY29wZSBvZiB0aGlzIGRyaXZlci4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IHBvc3NpYmxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGl0IHN1cHBvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTU6NTMuMDQyNjk2NDA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiY2hhaW5fbW9kZS5jXCIsXG4gICAgXCJjb21tb24uaFwiLFxuICAgIFwiZGVzY3MuaFwiLFxuICAgIFwiZGVzY3NfY29tLmhcIixcbiAgICBcImR3bWFjLWFuYXJpb24uY1wiLFxuICAgIFwiZHdtYWMtZHdjLXFvcy1ldGguY1wiLFxuICAgIFwiZHdtYWMtZWljNzcwMC5jXCIsXG4gICAgXCJkd21hYy1nZW5lcmljLmNcIixcbiAgICBcImR3bWFjLWlteC5jXCIsXG4gICAgXCJkd21hYy1pbmdlbmljLmNcIixcbiAgICBcImR3bWFjLWludGVsLXBsYXQuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuaFwiLFxuICAgIFwiZHdtYWMtaXBxODA2eC5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3Nvbi5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3NvbjEuY1wiLFxuICAgIFwiZHdtYWMtbHBjMTh4eC5jXCIsXG4gICAgXCJkd21hYy1tZWRpYXRlay5jXCIsXG4gICAgXCJkd21hYy1tZXNvbi5jXCIsXG4gICAgXCJkd21hYy1tZXNvbjhiLmNcIixcbiAgICBcImR3bWFjLW1vdG9yY29tbS5jXCIsXG4gICAgXCJkd21hYy1udXZvdG9uLmNcIixcbiAgICBcImR3bWFjLXFjb20tZXRocW9zLmNcIixcbiAgICBcImR3bWFjLXJlbmVzYXMtZ2JldGguY1wiLFxuICAgIFwiZHdtYWMtcmsuY1wiLFxuICAgIFwiZHdtYWMtcnpuMS5jXCIsXG4gICAgXCJkd21hYy1zMzIuY1wiLFxuICAgIFwiZHdtYWMtc29jZnBnYS5jXCIsXG4gICAgXCJkd21hYy1zb3BoZ28uY1wiLFxuICAgIFwiZHdtYWMtc3BhY2VtaXQuY1wiLFxuICAgIFwiZHdtYWMtc3RhcmZpdmUuY1wiLFxuICAgIFwiZHdtYWMtc3RpLmNcIixcbiAgICBcImR3bWFjLXN0bTMyLmNcIixcbiAgICBcImR3bWFjLXN1bjU1aS5jXCIsXG4gICAgXCJkd21hYy1zdW44aS5jXCIsXG4gICAgXCJkd21hYy1zdW54aS5jXCIsXG4gICAgXCJkd21hYy10ZWdyYS5jXCIsXG4gICAgXCJkd21hYy10aGVhZC5jXCIsXG4gICAgXCJkd21hYy12aXNjb250aS5jXCIsXG4gICAgXCJkd21hYzEwMC5oXCIsXG4gICAgXCJkd21hYzEwMDAuaFwiLFxuICAgIFwiZHdtYWMxMDAwX2NvcmUuY1wiLFxuICAgIFwiZHdtYWMxMDAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzEwMF9jb3JlLmNcIixcbiAgICBcImR3bWFjMTAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzQuaFwiLFxuICAgIFwiZHdtYWM0X2NvcmUuY1wiLFxuICAgIFwiZHdtYWM0X2Rlc2NzLmNcIixcbiAgICBcImR3bWFjNF9kZXNjcy5oXCIsXG4gICAgXCJkd21hYzRfZG1hLmNcIixcbiAgICBcImR3bWFjNF9kbWEuaFwiLFxuICAgIFwiZHdtYWM0X2xpYi5jXCIsXG4gICAgXCJkd21hYzUuY1wiLFxuICAgIFwiZHdtYWM1LmhcIixcbiAgICBcImR3bWFjX2RtYS5oXCIsXG4gICAgXCJkd21hY19saWIuY1wiLFxuICAgIFwiZHd4Z21hYzIuaFwiLFxuICAgIFwiZHd4Z21hYzJfY29yZS5jXCIsXG4gICAgXCJkd3hnbWFjMl9kZXNjcy5jXCIsXG4gICAgXCJkd3hnbWFjMl9kbWEuY1wiLFxuICAgIFwiZHd4bGdtYWMyLmhcIixcbiAgICBcImVuaF9kZXNjLmNcIixcbiAgICBcImh3aWYuY1wiLFxuICAgIFwiaHdpZi5oXCIsXG4gICAgXCJtbWMuaFwiLFxuICAgIFwibW1jX2NvcmUuY1wiLFxuICAgIFwibm9ybV9kZXNjLmNcIixcbiAgICBcInJpbmdfbW9kZS5jXCIsXG4gICAgXCJzdG1tYWMuaFwiLFxuICAgIFwic3RtbWFjX2VzdC5jXCIsXG4gICAgXCJzdG1tYWNfZXN0LmhcIixcbiAgICBcInN0bW1hY19ldGh0b29sLmNcIixcbiAgICBcInN0bW1hY19mcGUuY1wiLFxuICAgIFwic3RtbWFjX2ZwZS5oXCIsXG4gICAgXCJzdG1tYWNfaHd0c3RhbXAuY1wiLFxuICAgIFwic3RtbWFjX2xpYnBjaS5jXCIsXG4gICAgXCJzdG1tYWNfbGlicGNpLmhcIixcbiAgICBcInN0bW1hY19tYWluLmNcIixcbiAgICBcInN0bW1hY19tZGlvLmNcIixcbiAgICBcInN0bW1hY19wY2kuY1wiLFxuICAgIFwic3RtbWFjX3Bjcy5jXCIsXG4gICAgXCJzdG1tYWNfcGNzLmhcIixcbiAgICBcInN0bW1hY19wbGF0Zm9ybS5jXCIsXG4gICAgXCJzdG1tYWNfcGxhdGZvcm0uaFwiLFxuICAgIFwic3RtbWFjX3B0cC5jXCIsXG4gICAgXCJzdG1tYWNfcHRwLmhcIixcbiAgICBcInN0bW1hY19zZWxmdGVzdHMuY1wiLFxuICAgIFwic3RtbWFjX3RjLmNcIixcbiAgICBcInN0bW1hY192bGFuLmNcIixcbiAgICBcInN0bW1hY192bGFuLmhcIixcbiAgICBcInN0bW1hY194ZHAuY1wiLFxuICAgIFwic3RtbWFjX3hkcC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE1OjUzLjA0Mjg2MzE4NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDQyMDE5MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBOZXR3b3JrIERldmljZXMgaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG5ldHdvcmsgZHJpdmVyIGZpbGVzOiBgc3RtbWFjX3BjaS5jYCwgYGR3bWFjLWludGVsLmNgLCBhbmQgYGR3bWFjLWludGVsLXBsYXQuY2AuIFRoZSBjaGFsbGVuZ2UsIGFzIGFsd2F5cywgaXMgZ2V0dGluZyB0aGVzZSB0aGluZ3MgdGVzdGVkIGVmZmVjdGl2ZWx5LiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgUUVNVSBvZmZlcnMgYSBuYXRpdmUgZW11bGF0aW9uIGZvciB0aGVzZSwgYnV0IEknbSBwcmV0dHkgc3VyZSBpdCBkb2Vzbid0LiBJZiBub3QsIGNhbiBJIGxldmVyYWdlIHRoZSB2aXJ0dWFsaXplZCBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlcyB3aXRoaW4gUUVNVSB0byBmdXp6IHRoZSB0YXJnZXQ/IFRoZSBjcml0aWNhbCBwYXJ0IGlzIHdoZXRoZXIgc3l6a2FsbGVyIGhhcyB0aGUgcmlnaHQgZGVzY3JpcHRpb25zIGZvciB0aGVzZSBkZXZpY2VzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIHN5emthbGxlciBoYXMgc3VwcG9ydCBmb3IgYHN0bW1hY2Agd2hpY2ggY291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQgbWUgY2hlY2sgdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjMxLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE1OjU2LjQ4NzA2Nzc4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDI4NzI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9zZWxmdGVzdHMuYy0zLSAqIENvcHlyaWdodCAoYykgMjAxOSBTeW5vcHN5cywgSW5jLiBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuXFxubmV0L2NvcmUvc2VsZnRlc3RzLmM6NDogKiBzdG1tYWMgU2VsZnRlc3RzIFN1cHBvcnRcXG5uZXQvY29yZS9zZWxmdGVzdHMuYy01LSAqXFxuLS1cXG5uZXQvY29yZS9zZWxmdGVzdHMuYy03LSAqXFxubmV0L2NvcmUvc2VsZnRlc3RzLmM6ODogKiBQb3J0ZWQgZnJvbSBzdG1tYWMgYnk6XFxubmV0L2NvcmUvc2VsZnRlc3RzLmMtOS0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgT2xla3NpaiBSZW1wZWwgXFx1MDAzY28ucmVtcGVsQHBlbmd1dHJvbml4LmRlXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo1Ni41ODEzNjUxNzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0MDI0NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3RtbWFjIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBmdXp6IHRoZSBzdG1tYWMgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHF1aWNrbHkgY2hlY2sgaWYgc3l6a2FsbGVyIGFscmVhZHkgaGFzIGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIGl0LiBUaGF0IHdvdWxkIGJlIGlkZWFsLiBBaCwgYnV0IHdhaXQsIEkgY2FuJ3QgZGlyZWN0bHkgcXVlcnkgc3l6a2FsbGVyJ3MgZGVzY3JpcHRpb25zIGluIHRoYXQgbWFubmVyLCBJIG5lZWQgdG8gdGFrZSBhIHNsaWdodGx5IGRpZmZlcmVudCBhcHByb2FjaC4gSSByZWNhbGwgUUVNVSBkb2Vzbid0IGVtdWxhdGUgc3RtbWFjLCBhIHBvdGVudGlhbCByb2FkYmxvY2suIEhvd2V2ZXIsIGlmIGl0J3MgYSBQQ0kgZGV2aWNlLCB0aGVuIHN5emthbGxlcidzIGBzeXpfcGNpX3NldHVwYCBzaG91bGQgYmUgYXBwbGljYWJsZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gbG9vayBpbnRvIGBzdG1tYWNfcGNpLmNgLiBJJ2xsIHNjYW4gdGhhdCBzb3VyY2UgZmlsZSB0byBpZGVudGlmeSB3aGljaCBQQ0kgSURzIGl0IGFjdHVhbGx5IGJpbmRzIHRvLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGZ1enphYmxlIHZpYSB0aGUgc3RhbmRhcmQgUENJLWJhc2VkIHN5emthbGxlciBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjowMC44MTUzOTE3ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0OTIyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDE6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MDAuODc3ODk1Mjk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQzMjMzMzE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0dGFjayBTdXJmYWNlOiBBIFBDSS1CYXNlZCBTVE1NQUMgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIHRoZSBwb3NzaWJpbGl0eSBvZiBmdXp6aW5nIGl0IHdpdGggc3l6a2FsbGVyIHRocm91Z2ggYHN5el9wY2lfc2V0dXBgLiBJZiB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgYHN5el9wY2lfc2V0dXBfc3RtbWFjYCBvciBldmVuIGp1c3QgYSBnZW5lcmljIFBDSSBzZXR1cCwgdGhhdCdzIGlkZWFsLiBCdXQgd2FpdCwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIFRoZSBwYXRjaCB0b3VjaGVzIGBzdG1tYWNfaHdfc2V0dXBgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGF0J3MgaW50ZXJlc3RpbmcuIGBzdG1tYWNfaHdfc2V0dXBgIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcywgY2FsbGVkIGR1cmluZyBgc3RtbWFjX29wZW5gLCB3aGljaCBtYXBzIHRvIHRoZSBuZXR3b3JrIGRyaXZlcidzIGBuZG9fb3BlbmAgZnVuY3Rpb24uIENhbiB3ZSB0cmlnZ2VyIHRoYXQ/IEFic29sdXRlbHksIGp1c3QgYnkgYnJpbmdpbmcgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHVwLlxuXG5BbmQgdGhlIFhEUCBmdW5jdGlvbnMg4oCTIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCDigJMgdGhvc2UgYXJlIHRyaWdnZXJlZCB3aGVuIHdlIGNvbmZpZ3VyZSBYRFAuIFNvLCB3ZSd2ZSBnb3QgdHdvIGNsZWFyIHBhdGhzIHRvIGNvZGUgZXhlY3V0aW9uOiBicmluZ2luZyB1cCB0aGUgaW50ZXJmYWNlIGFuZCBhdHRhY2hpbmcgYW4gWERQIHByb2dyYW0uIFRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBtb3JlIEkgc2VlIGhvdyBzeXprYWxsZXIgY2FuIHJlYWxseSBzaGluZSBoZXJlLiBXaXRoIHRoZSBQQ0kgZGV2aWNlIHNldHVwIHZpYSBgc3l6X3BjaV9zZXR1cGAsIHdlIGNhbiBpbmplY3QgaXQgYW5kIHRoZW4gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgbmV0d29yayBkZXZpY2UuIFRoaXMgaXMgZ3JlYXQsIGFuZCBhIGdvb2QgZXhhbXBsZSBvZiB0aGUgYXR0YWNrIHN1cmZhY2UuIE5vdywgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBjaGVjayBpZiBgc3RtbWFjX3BjaS5jYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3Igd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBUaGF0J3MgdGhlIG5leHQgc3RlcCwgbWFrZSBzdXJlIGl0J3MgZXZlbiBleHBvc2VkIGF0IHRoaXMgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MDYuMzEwMjMxMTU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkxMDI3ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDpjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3Mzpjb25maWcgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjowNi40NDkzNDAwNTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzOTEwMDg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIFNUTTMyIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBjb25maWd1cmluZyB0aGUgbmV0d29yayBkcml2ZXIgZm9yIHRoaXMgU1RNMzIgcHJvamVjdC4gSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJlLCBhbmQgZnJvbSB0aGUgY29udGV4dCwgSSBzZWUgdGhhdCBJJ2xsIGRlZmluaXRlbHkgbmVlZCBib3RoIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBOb3csIEkgd2FudCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgZXZlcnl0aGluZyBsaW5lZCB1cCBjb3JyZWN0bHkuIFRoZSBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBiaXRzIGFuZCBwaWVjZXMgZG9lcyB0aGF0IGBTVE1NQUNfUENJYCBvcHRpb24gcmVseSBvbj8gSSBuZWVkIHRvIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMgdGhvcm91Z2hseS4gR290dGEgZW5zdXJlIEknbSBlbmFibGluZyBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIHRoaXMgUENJIGludGVyZmFjZSBmdW5jdGlvbiBhcyBleHBlY3RlZC4gSSdsbCBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGBTVE1NQUNfUENJYCByaWdodCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDE0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MDkuNzg4NDQzNDk5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjA5Ljc4ODU0Mjk1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTY1Njg3OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlcGVuZGVuY3kgSW5xdWlyeSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gSSdtIG5vdGluZyBkb3duIHRoYXQgYm90aCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgZXNzZW50aWFsLiBHb29kLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBhIGtleSBjb25zaWRlcmF0aW9uIGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZC4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBoZXJlLiBJIGtub3cgYFNUTU1BQ19FVEhgIGlzIGltcG9ydGFudCwgYnV0IGJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgZXhhY3RseSBkb2VzIGBTVE1NQUNfRVRIYCByZWx5IG9uPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgdGhhdCBJIG5lZWQgdG8gY29uZmlybSBhcmUgYWxzbyBlbmFibGVkIG9yIHNhdGlzZmllZD8gVGhhdCdzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbmFibGluZyBjb25kaXRpb25zIG9mIGBTVE1NQUNfRVRIYCwgYW5kIHRoZW4gSSBjYW4gZWZmZWN0aXZlbHkgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTkxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjoxMy4zNTQyMzM2ODJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjEzLjM1NDMzMzgyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDkxOTEwNjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYFNUTU1BQ19FVEhgIGhpbmdlcyBvbiBhIGZldyBkZXBlbmRlbmNpZXMsIG5hbWVseSBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIFRoYXQgbWVhbnMgYFNUTU1BQ19FVEhgIG9yIGBTVE1NQUNfUENJYCBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBzdG1tYWNgIGlzIHdlbGwtY292ZXJlZCBieSBzeXprYWxsZXIuXG5cbkhtbSwgZG9lcyBzeXprYWxsZXIgaGF2ZSBleHBsaWNpdCBkZXNjcmlwdGlvbnMgZm9yIGBzdG1tYWNgPyBJIGNhbid0IGxvb2sgYXQgc3l6a2FsbGVyIGRpcmVjdGx5IGJ1dCBJIGNhbiBsb29rIGF0IHRoZSBkcml2ZXIgY29kZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgaW9jdGxzIHRoYXQgd291bGQgcHJvdmlkZSBhIGhvb2suXG5cblRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBtb2RpZmllcyBgc3RtbWFjX2h3X3NldHVwYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gSW50ZXJlc3RpbmcuIFRoZXNlIGFyZSBhbGwgaW52b2tlZCB0aHJvdWdoIHN0YW5kYXJkIG5ldGRldiBvcGVyYXRpb25zIGxpa2UgYG5kb19vcGVuYCBhbmQgYG5kb19icGZgLiBUaGF0J3MgZ29vZC4gV2hpY2ggbWVhbnMgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhdCB0aG9zZSBmdW5jdGlvbnMgaWYgdGhlIGRldmljZSBpcyBpbml0aWFsaXplZC5cblxuU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHN5emthbGxlcidzIGBzeXpfcGNpX3NldHVwYCBjYW4gbGlrZWx5IGluaXRpYWxpemUgaXQuIElmIG5vdCwgaXQgY2FuIHVzZSBwbGF0Zm9ybSBkZXZpY2VzLCBpZiBzeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgdGhhdCwgYnV0IHN5emthbGxlciBoYXMgYSBnZW5lcmljIFBDSSBmdXp6ZXIsIHNvIGl0IHNob3VsZCBiZSBhYmxlIHRvIGJpbmQgdG8gdGhlIGFwcHJvcHJpYXRlIFBDSSBJRHMuXG5cbldhaXQuLi50aGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcIkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcIi4gVGhhdCdzIGEgZ29vZCBzaWduISBJdCBsaWtlbHkgbWVhbnMgc3l6a2FsbGVyICpkaWQqIGZpbmQgYSBidWcgaGVyZSwgYW5kIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGl0LiBTbywgdGhhdCBtZWFucyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmchXG5cbk9rYXksIHRpbWUgdG8gY2hlY2sgb3V0IHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb246IGBzdG1tYWNfaHdfc2V0dXBgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGVzZSBleGlzdCBhbmQgYXJlbid0IHN0YXRpYyBvciBpbmxpbmVkLiBUaGVuIEkgY2FuIGRpZyBkZWVwZXIgaW50byB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDg5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MjEuODQ2MjQ3MzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYxOTEwODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19od19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYyNj1zdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYzMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2MzQ6ICogc3RtbWFjX2h3X3NldHVwIC0gc2V0dXAgbWFjIGluIGEgdXNhYmxlIHN0YXRlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYzNS0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2NDQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNjQ1OnN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zNjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzNj1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNTA6XFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTUxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNzE9aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODMyNDpcXHRyZXQgPSBzdG1tYWNfaHdfc2V0dXAobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI1LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjIzLjQwODE2NTU4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDMzMjgzOTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqUmVmbGVjdGluZyBvbiBBUEkgRGVzaWduIGZvciBTVE1NQUMgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjX2h3X3NldHVwYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBXYWl0IGEgbWludXRlLCB0aGF0IGdvZXMgYWdhaW5zdCBiZXN0IHByYWN0aWNlcywgZG9lc24ndCBpdD8gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgYWR2aXNlcyB0byAqcHJlZmVyKiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhpcyBpcyBjcml0aWNhbCBmb3IgZ29vZCBkcml2ZXIgZGVzaWduIGFuZCBtYWludGFpbmFiaWxpdHksIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBjb3JlIGFzIGhhcmR3YXJlIHNldHVwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhhdCBndWlkZWxpbmUuXG5cblNvLCBpZiBgc3RtbWFjX2h3X3NldHVwYCBpc24ndCB0aGUgcmlnaHQgcGxhY2UgdG8gYmUgZm9jdXNpbmcsIHdoYXQgYXJlIHRoZSBlbnRyeXBvaW50cz8gSSBuZWVkIHRvIGNvbnNpZGVyIHdoYXQgSSBrbm93IGFib3V0IHRoZSBTVE1NQUMgZHJpdmVyJ3MgbGlmZWN5Y2xlLiBgc3RtbWFjX29wZW5gLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBgc3RtbWFjX3Jlc3VtZWAgc2VlbSBsaWtlIGxpa2VseSBjYW5kaWRhdGVzIHRvIGludmVzdGlnYXRlLiBUaGV5J3JlIHByb2JhYmx5IHRoZSBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGFuZGxpbmcgdGhlIGhhcmR3YXJlIHNldHVwIHNlcXVlbmNlIGF0IGEgaGlnaGVyIGxldmVsLCBhbGxvd2luZyBmb3IgbW9yZSBmbGV4aWJpbGl0eSBhbmQgcG90ZW50aWFsbHkgYXZvaWRpbmcgdGhlIGxpbWl0YXRpb25zIG9mIGEgYHN0YXRpY2AgaGVscGVyLiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIG92ZXJhbGwgZGVzaWduIHRvIHNlZSBpZiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gb25lIG9mIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk3MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjI3LjQ0MTQ1MjgwOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNzM1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjE9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjc6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjgtICogIEBkZXYgOiBwb2ludGVyIHRvIHRoZSBkZXZpY2Ugc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDEzNjpzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzctXFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE4NTpzdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMTM6XFx0cmV0ID0gX19zdG1tYWNfb3BlbihkZXYsIGRtYV9jb25mKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjEwMz1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjEzOTpcXHRcXHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTA6XFx0Lm5kb19vcGVuID0gc3RtbWFjX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzExLVxcdC5uZG9fc3RhcnRfeG1pdCA9IHN0bW1hY194bWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTk2PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYxNS1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYxNjpcXHRcXHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYyMT1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjMyLVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjMzOlxcdFxcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjoyNy41MDY2MzgyMjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxNDA3NDAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGZvciB0aGlzIFNUTU1BQyBkcml2ZXIsIGFuZCBJJ3ZlIGdvdCBgc3RtbWFjX29wZW5gIGZsYWdnZWQgYXMgc3RhdGljIOKAkyB3aGljaCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjay4gVGhhdCBjb25maXJtcyBpdCdzIGEgY3JpdGljYWwgZW50cnkgcG9pbnQuIEl0J3MgdGhlIHN0YW5kYXJkIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiBlbnRyeSBwb2ludCwgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgY29tZXMgdXAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGFyZSB3ZSBtaXNzaW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIFhEUCBzdXBwb3J0PyBJIG5lZWQgdG8gY2xhcmlmeSBob3cgWERQIChlWHByZXNzIERhdGEgUGF0aCkgZml0cyBpbnRvIHRoaXMuIFdoYXQgYWJvdXQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gPyBBcmUgdGhlc2UgYWxzbyBzdGF0aWMgZnVuY3Rpb25zPyBBcmUgdGhleSBwYXJ0IG9mIHRoZSBgbmRvX29wZW5gIHByb2NlZHVyZSwgb3IgZG8gdGhleSBleGlzdCBhcyBhbiBpbmRlcGVuZGVudCBtb2R1bGU/IEFyZSB0aGV5IGNhbGxlZCBzZXBhcmF0ZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBtYW5hZ2VzIFhEUCBhdHRhY2ggYW5kIGRldGFjaC4gVGhhdCBpbmZvcm1hdGlvbiBpcyBnb2luZyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBiZWluZyBtYW5hZ2VkIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGNvcmUgZHJpdmVyIGFuZCB0aGUgWERQIGltcGxlbWVudGF0aW9uLCB0byBlbnN1cmUgcHJvcGVyIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIG5vIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0OTcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjozMi4zMjA3MTQ5MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDM4NDAxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwNTc9dm9pZCBzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzA5NTp2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzA5Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjMyLjcwNTEwNTgwOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDM3NTg0NzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBmdW5jdGlvbnMsIHRoaW5raW5nIHRoZW0gdGhyb3VnaDpcblxuKipDb25zaWRlcmluZyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAqKlxuXG5Pa2F5LCBJJ20gbm90aW5nIHRoYXQgdGhlc2UgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIGZ1bmN0aW9ucyBhcmVuJ3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCBzbyB0aGlzIG1lYW5zIHRoZXkncmUgaW50ZW5kZWQgdG8gaGF2ZSBleHRlcm5hbCBsaW5rYWdlIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIG1vZHVsZS4gVGhleSdyZSBwcm9iYWJseSBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBjb2RlIG91dHNpZGUgb2YgdGhlaXIgaW1tZWRpYXRlIGNvbXBpbGF0aW9uIHVuaXQuIFRoaXMgaW1wbGllcyB0aGV5J3JlIHBhcnQgb2YgYW4gQVBJIGV4cG9zZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIsIGxpa2VseSBmb3IgWERQIChlWHByZXNzIERhdGEgUGF0aCkgaW50ZWdyYXRpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lcy4gU29tZW9uZSBlbHNlLCBwb3RlbnRpYWxseSBhIGhpZ2hlci1sZXZlbCBYRFAgZnJhbWV3b3JrIG9yIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiB1c2luZyBYRFAsIHByb2JhYmx5IG5lZWRzIHRvIGNhbGwgdGhlc2UgdG8gbWFuYWdlIG9yIGludGVyYWN0IHdpdGggdGhlIHN0bW1hYyBkcml2ZXIncyBYRFAgY2FwYWJpbGl0aWVzLiBJbnRlcmVzdGluZy4gSSdsbCBtYWtlIGEgbm90ZSB0byByZW1lbWJlciB0aGF0IHRoZXkgY2FuIGJlIGFjY2Vzc2VkIGV4dGVybmFsbHksIHdoaWNoIGhhcyBpbXBsaWNhdGlvbnMgZm9yIHBvdGVudGlhbCByZWVudHJhbmN5LCBsb2NraW5nLCBhbmQgQUJJIHN0YWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjozNy43NDI2OTQ1NzRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTYyNzM3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwOTU9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMjg6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyOS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjM3Ljg5MjMyOTk4MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAyNzI4MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGFzc3VtaW5nIEknbSB0aGlua2luZyBhYm91dCB0aGUgcHJvY2VzcyBvZiAqZXhwb3J0aW5nKiBkYXRhIG9yIGEgcHJvY2VzcyB0aGF0IGludm9sdmVzIG91dHB1dHRpbmcgaW5mb3JtYXRpb24uIEknbGwgbWFrZSBpdCB0YXJnZXRlZCB0b3dhcmRzIHNvbWVvbmUgd2hvIGlzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqRXhwb3J0aW5nOiBUaGUgRGVlcCBEaXZlKipcblxuT2theSwgc28gd2UncmUgdGFsa2luZyBhYm91dCAqZXhwb3J0aW5nKi4uLiB3aGF0J3MgcmVhbGx5IGRyaXZpbmcgdGhpcyB0aG91Z2h0PyBJcyBpdCBhIGRhdGEgc2V0PyBBIG1vZGVsPyBDb25maWd1cmF0aW9uIHNldHRpbmdzPyBBIGNvbXBsZXRlIGFwcGxpY2F0aW9uPyBUaGlzIG1hdHRlcnMsIGJlY2F1c2UgdGhlIFwiaG93XCIgYW5kIFwid2h5XCIgb2YgZXhwb3J0aW5nIHdpbGwgY2hhbmdlLlxuXG5GaXJzdGx5LCBcIkFyZSB0aGV5IGV4cG9ydGVkP1wiIGltcGxpZXMgYW4gZXhpc3Rpbmcgc2V0IG9mIHNvbWV0aGluZyB0aGF0IG1heSBvciBtYXkgbm90IGJlIGV4cG9ydGVkLiBUaGUgdmVyYiB0ZW5zZSBmZWVscyBsaWtlIGNoZWNraW5nIGFuIGV4aXN0aW5nIHN0YXR1cy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBwcmUtZXhpc3Rpbmcgc3RhdGUsIG9yIGEgcHJvY2VzcyB0byBzdGFydD8gVGhpcyBxdWVzdGlvbnMgd2hldGhlciB0aGUgZ29hbCBpcyB0byBjb25maXJtICp0aGF0KiBpdCdzIGJlZW4gZG9uZSwgb3IgdG8gaW5pdGlhdGUgdGhlIGV4cG9ydCBwcm9jZXNzLlxuXG5JZiB3ZSBhcmUgdGFsa2luZyBhYm91dCAqdGhlIGFjdCBvZiBleHBvcnRpbmcsKiB0aGVuIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCB3aGF0IGFyZSB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgYXJvdW5kIHRoYXQgZXhwb3J0PyBJcyBpdCBhIHN0YW5kYXJkaXplZCBmb3JtYXQ/IElzIHRoZXJlIGFuIGVzdGFibGlzaGVkIEFQST8gQXJlIHRoZXJlIHZlcnNpb25pbmcgY29uY2VybnM/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc2VyaWFsaXphdGlvbiBpc3N1ZXMgaWYgaXRzIGRhdGE/IElzIHRoZXJlIGEgbmVlZCBmb3IgY29tcHJlc3Npb24/IEFyZSB3ZSBjb25zaWRlcmluZyBzZWN1cml0eSBhbmQgZW5jcnlwdGlvbj9cblxuVGhlIGNvbnRleHQgbWF0dGVycy4gSWYgaXQncyBhIHNwZWNpZmljIHN5c3RlbSwgSSBhbSB0aGlua2luZyBcIldoYXQgYXJlIHRoZSBzdXBwb3J0ZWQgZXhwb3J0IGZvcm1hdHM/XCIgSXMgaXQgQ1NWLCBKU09OLCBhIGRhdGFiYXNlIGR1bXAsIGEgY3VzdG9tIGJpbmFyeT8gVGhlIGZvcm1hdCBoZWF2aWx5IGltcGFjdHMgYW55IHRyYW5zZm9ybWF0aW9ucyBvciBwcm9jZXNzaW5nIHJlcXVpcmVkIG9uIHRoZSAqaW1wb3J0KiBzaWRlLlxuXG5UaGVuIEkgYW0gY29uc2lkZXJpbmcgZXJyb3IgaGFuZGxpbmcuIFdoYXQgaGFwcGVucyBpZiB0aGUgZXhwb3J0IGZhaWxzPyBEbyB3ZSBoYXZlIGxvZ2dpbmcgaW4gcGxhY2UsIGFuZCB3aGF0IGxldmVsIG9mIGRldGFpbD8gQXJlIHRoZXJlIHJldHJ5IG1lY2hhbmlzbXM/IEFyZSB3ZSBjb25zaWRlcmluZyBkYXRhIGludGVncml0eSwgc28gdGhhdCBubyBkYXRhIGlzIGxvc3QgZHVyaW5nIHRoZSB0cmFuc2Zlcj9cblxuRmluYWxseSwgYXJlIHdlIGNvbnNpZGVyaW5nICp3aG8qIGlzIGRvaW5nIHRoZSBleHBvcnRpbmc/IElzIHRoaXMgYW4gYXV0b21hdGVkIHByb2Nlc3MsIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLCBvciBwYXJ0IG9mIGEgbGFyZ2VyIHdvcmtmbG93PyBEbyB3ZSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uPyBVc2VyIGFjY2Vzcz8gQWNjZXNzIGNvbnRyb2xzIGZvciBzcGVjaWZpYyBkYXRhPyBUaGUgXCJ0aGV5XCIgaW4gdGhlIHF1ZXN0aW9uLCB0aGUgKnN1YmplY3QqLCBpcyB0aGUgY3J1Y2lhbCBwYXJ0IHRoYXQgd2lsbCBkZWZpbmUgdGhlIHJlc3Qgb2YgdGhlIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDk1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjo0NC4xOTUwNjIwNjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTgyODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194ZHBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDA3PXZvaWQgc3RtbWFjX3B0cF91bnJlZ2lzdGVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDA4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDA5LXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDk1PXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTI4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMzQtXFx0aWYgKGlmX3J1bm5pbmcgXFx1MDAyNlxcdTAwMjYgbmVlZF91cGRhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEzNTpcXHRcXHRzdG1tYWNfeGRwX29wZW4oZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjo0NC4yNjQwNTA0MjJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3MDUzMDE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1cyBTeW1ib2wgSWRlbnRpZmljYXRpb24gaW4gYHN0bW1hY194ZHAuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIFhEUCBmdW5jdGlvbmFsaXR5IGludGVncmF0ZXMgd2l0aGluIGBzdG1tYWNfeGRwLmNgLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCB5ZXMsIFhEUCBpcyBpbmRlZWQgdXRpbGl6ZWQgaW4gdGhpcyBzcGVjaWZpYyBmaWxlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLiBDbGVhcmx5LCBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzOyB0aGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgWERQIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBJIHNob3VsZCBjb25zaWRlciB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUsIGBzdG1tYWNfaHdfc2V0dXBgIHNlZW1zIGltcG9ydGFudCwgYnV0IGl0J3MgKnN0YXRpYyogd2l0aGluIGl0cyBjb250ZXh0LiBIb3dldmVyLCBpdCdzIGNhbGxlZCBieSBgX19zdG1tYWNfb3BlbmAsIHdoaWNoIGlzIGNhbGxlZCBieSBgc3RtbWFjX29wZW5gIGFuZCBgc3RtbWFjX3Jlc3VtZWAuIFRoYXQgbWVhbnMgYHN0bW1hY19vcGVuYCBhbmQgYHN0bW1hY19yZXN1bWVgIGRlc2VydmUgYSBsb29rIHRvby4gV2FpdCwgYHN0bW1hY19vcGVuYCBpdHNlbGYgaXMgYWxzbyBzdGF0aWMhIEludGVyZXN0aW5nLi4uXG5cbkFscmlnaHQsIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIElzIHRoZXJlIGEgKm5vbiotc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHN0YXRpYyBgc3RtbWFjX29wZW5gPyBObywgaXQncyB1c2VkIGFzIGFuIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHdoaWNoIGNhbiBiZSB1c2VmdWwuIE9rYXksIEknbSBjb25maWRlbnQgaW4gbGlzdGluZyBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXMgZm9jdXMgc3ltYm9scyBzaW5jZSB0aGV5J3JlIHRoZSBkaXJlY3QgWERQIGVudHJ5IHBvaW50cy4gQW5kLCBnb29kLCBgc3RtbWFjX3Jlc3VtZWAgaXMgZGVmaW5pdGVseSBub24tc3RhdGljLCBzbyB0aGF0J3MgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gdHJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDI2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjQ5LjQzNDU4NDY1NVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2MDkwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3Jlc3VtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz03MT1zdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHRlZ3JhX21nYmVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MTA3OlxcdGVyciA9IHN0bW1hY19yZXN1bWUoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTEwOC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMD1pbnQgc3RtbWFjX2dldF9waHlfaW50Zl9zZWwocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDExOmludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEyLWludCBzdG1tYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MjUyPXN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF9xdWV1ZXNfcGFyYW0oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODI2NjogKiBzdG1tYWNfcmVzdW1lIC0gcmVzdW1lIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY3LSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MjcxOmludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzU3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzNTg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM2MC0vKiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBFWFBPUlRfR1BMX1NJTVBMRV9ERVZfUE1fT1BTKCkgd2hlbiBDT05GSUdfUE09biAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM2MTpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNjItRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9MTAwMT1jb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjEwMDI6XFx0U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoc3RtbWFjX3N1c3BlbmQsIHN0bW1hY19yZXN1bWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTAwMy1cXHRTRVRfUlVOVElNRV9QTV9PUFMoc3RtbWFjX3J1bnRpbWVfc3VzcGVuZCwgc3RtbWFjX3J1bnRpbWVfcmVzdW1lLCBOVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjo0OS41MDMyMDE3MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMjE2NzUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBzZWUuIGBzdG1tYWNfcmVzdW1lYCBpcyBleHBvcnRlZCwgc28gdGhhdCdzIGRlZmluaXRlbHkgYSBwb2ludCBvZiBpbnRlcmVzdC4gSSdtIGdvaW5nIHRvIGluaXRpYWxseSBmb2N1cyBvbiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCwgb2YgY291cnNlLCBgc3RtbWFjX3Jlc3VtZWAgYXMga2V5IHN5bWJvbHMgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQnV0IGhhbmcgb24sIGxvb2tpbmcgZGVlcGVyLCBgc3RtbWFjX29wZW5gIGlzIGFjdHVhbGx5IHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrISBFdmVuIHRob3VnaCBpdCdzIHN0YXRpYyB3aXRoaW4gdGhlIGRyaXZlciwgaXQgc2VydmVzIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgY3J1Y2lhbCBgc3RtbWFjX2h3X3NldHVwYCBmdW5jdGlvbiwgc28gSSBuZWVkIHRvIGluY2x1ZGUgdGhhdCBpbiB0aGUgbGlzdC4gVGhpcyBtZWFucyBJJ2xsIGJlIGZvY3VzZWQgb24gYHN0bW1hY194ZHBfb3BlbmAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3Jlc3VtZWAgYW5kIGBzdG1tYWNfb3BlbmAuXG5cbk5vdywgbGV0J3MgbW92ZSBvbnRvIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcidzIGJ1aWxkIG9wdGlvbnMuIFRoZSBwcmltYXJ5IG9uZXMgYXJlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gQWgsIGBTVE1NQUNfUENJYCByZWxpZXMgb24gYFBDSWAgYW5kIGBDT01NT05fQ0xLYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIFBDSS1iYXNlZCBoYXJkd2FyZS4gYFNUTU1BQ19FVEhgIGhhcyBkZXBlbmRlbmNpZXMgb24gYEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoZXNlIGNvbnN0cmFpbnRzIGFuZCBrZWVwIHRoZW0gaW4gbWluZCBhcyBJIGV4YW1pbmUgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gU28sIEkgd2lsbCBmb2N1cyBvbiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC5cblxuRmluYWxseSwganVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5NjEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6NTQuNzA1MzcxNzk2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA2Mjg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX3NldF9wcm9nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5Mzc9c3RhdGljIGludCBzdG1tYWNfYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY5NDItXFx0Y2FzZSBYRFBfU0VUVVBfUFJPRzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5NDM6XFx0XFx0cmV0dXJuIHN0bW1hY194ZHBfc2V0X3Byb2cocHJpdiwgYnBmLVxcdTAwM2Vwcm9nLCBicGYtXFx1MDAzZWV4dGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02OTQ0LVxcdGNhc2UgWERQX1NFVFVQX1hTS19QT09MOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk1PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEwMjppbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAzLVxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuaD05PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTAtXFx0XFx0XFx0ICB1MTYgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuaDoxMTppbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTItXFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6NTQuNzc2NDQzNzE0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNTQzNTI3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFNUTU1BQyBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBYRFAgY29uZmlndXJhdGlvbiBwYXRocy4gSXQncyBtZXNzaW5nIHdpdGggdGhlIGhhcmR3YXJlIHNldHVwIGFuZCB0ZWFyZG93biBzZXF1ZW5jZSwgdHdlYWtpbmcgdGhlIG9yZGVyIG9mIE1BQyBSeC9UeCBlbmFibGUvZGlzYWJsZSBhbmQgRE1BIHN0YXJ0L3N0b3AuIFRoYXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbiwgdGhlc2Ugc3ltYm9scyBzdGFuZCBvdXQgdG8gbWU6XG5cbk15IGtleSBmb2N1cyBzeW1ib2xzIGhlcmUgYXJlOlxuXG4qICAgYHN0bW1hY194ZHBfb3BlbmBcbiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYFxuKiAgIGBzdG1tYWNfeGRwX3NldF9wcm9nYFxuKiAgIGBzdG1tYWNfcmVzdW1lYFxuXG5MZXQncyBtYWtlIHN1cmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBleHRlcm5hbGx5IGFjY2Vzc2libGUuIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBpcyBkZWZpbml0ZWx5IG5vdCBzdGF0aWMsIGl0IGxpdmVzIGluIGBzdG1tYWNfeGRwLmNgIGFuZCBpcyBleHBvcnRlZCBpbiBgc3RtbWFjX3hkcC5oYC4gTG9va3MgZ29vZC4gYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFyZSBpbiBgc3RtbWFjX21haW4uY2AgYW5kIGFyZSBleHBvcnRlZCBpbiBgc3RtbWFjLmhgLCBhbHNvIG5vbi1zdGF0aWMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnIG9wdGlvbnMuIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSB0aGUgb25lcyB0byBmb2N1cyBvbiBmb3IgdGhpcyBkcml2ZXIuIGBTVE1NQUNfRVRIYCBwdWxscyBpbiBhbGwgdGhlIE1JSSwgUENTLCBQQUdFX1BPT0wsIFBIWSwgQ1JDMzIsIFJFU0VUX0NPTlRST0xMRVIsIE5FVF9ERVZMSU5LIG9wdGlvbnMuIEFuZCBgU1RNTUFDX1BDSWAgZGVwZW5kcyBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLlxuXG5CYXNlZCBvbiB0aGlzLCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBzaG91bGQgYmUgc3VmZmljaWVudC4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTIyMCwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTc6MDIuMDMwNzk5NzI4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE5NTkwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCBYRFAgY29uZmlndXJhdGlvbiBwYXRocy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSBpbnRlcmZhY2Ugc3VwcG9ydC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfc2V0X3Byb2dcIixcbiAgICBcInN0bW1hY19yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 16:51:45 +0000 UTC FinishedAt: 2026-07-27 17:17:03 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8cd9520d35a6c38db6567e97dd93b1f11f185dc6", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "STMMAC_ETH", "STMMAC_PCI" ], "series_id": "4b0ede31-0e1c-4619-93b1-fa0d88e37e8e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "stmmac_xdp_open", "stmmac_xdp_release", "stmmac_xdp_set_prog", "stmmac_resume" ], "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+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA2MDQ0Zjc4NjQwOTM1NzQ4YzE4ZmE3YTdmNzRhODJhNGU1NGRjNmUxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTc6MTU6NDUgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li45Mjg2NGQ3ZGZmZDk3YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmNcbkBAIC0zNjkyLDkgJiM0MzszNjkyLDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiAmIzQzOzM3NDcsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogU3RhcnQgdGhlIGJhbGwgcm9sbGluZy4uLiAqL1xuIFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XG4gXG4mIzQzO1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbiYjNDM7XHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4mIzQzO1xuIFx0cGh5bGlua19yeF9jbGtfc3RvcF9ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuIFx0c3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi1cdTAwM2Vodyk7XG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX3VuYmxvY2socHJpdi1cdTAwM2VwaHlsaW5rKTtcbkBAIC03MTA5LDE1ICYjNDM7NzEwOSwxNSBAQCB2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0LyogRnJlZSB0aGUgSVJRIGxpbmVzICovXG4gXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xuIFxuJiM0MztcdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuJiM0MztcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCBmYWxzZSk7XG4mIzQzO1xuIFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdG9wX2FsbF9kbWEocHJpdik7XG4gXG4gXHQvKiBSZWxlYXNlIGFuZCBmcmVlIHRoZSBSeC9UeCByZXNvdXJjZXMgKi9cbiBcdGZyZWVfZG1hX2Rlc2NfcmVzb3VyY2VzKHByaXYsIFx1MDAyNnByaXYtXHUwMDNlZG1hX2NvbmYpO1xuIFxuLVx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgZmFsc2UpO1xuLVxuIFx0Lyogc2V0IHRyYW5zX3N0YXJ0IHNvIHdlIGRvbiYjMzk7dCBnZXQgc3B1cmlvdXNcbiBcdCAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXRcbiBcdCAqL1xuQEAgLTcxODksMTIgJiM0Mzs3MTg5LDEyIEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0aHJ0aW1lcl9zZXR1cChcdTAwMjZ0eF9xLVx1MDAzZXR4dGltZXIsIHN0bW1hY190eF90aW1lciwgQ0xPQ0tfTU9OT1RPTklDLCBIUlRJTUVSX01PREVfUkVMKTtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTdGFydCBSeCBcdTAwMjYgVHggRE1BIENoYW5uZWxzICovXG4gXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcbiBcbiYjNDM7XHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xuJiM0MztcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbiYjNDM7XG4gXHRyZXQgPSBzdG1tYWNfcmVxdWVzdF9pcnEoZGV2KTtcbiBcdGlmIChyZXQpXG4gXHRcdGdvdG8gaXJxX2Vycm9yO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtTVE1NQUNfRVRIJiMzNDssCiAgICAmIzM0O1NUTU1BQ19QQ0kmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdG1tYWNfeGRwX29wZW4mIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9yZWxlYXNlJiMzNDssCiAgICAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Jlc3VtZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXImIzM5O3MgaW5pdGlhbGl6YXRpb24gYW5kIFhEUCBjb25maWd1cmF0aW9uIHBhdGhzLiBUaGUgZHJpdmVyIGNhbiBiZSBmdXp6ZWQgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIHZpYSBpdHMgUENJIGludGVyZmFjZSBzdXBwb3J0LiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjA0NGY3ODY0MDkzNTc0OGMxOGZhN2E3Zjc0YTgyYTRlNTRkYzZlMQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBNb24gSnVsIDI3IDE3OjE1OjQ1IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKaW5kZXggMzU5MTc1NWVhMzBiZTUuLjkyODY0ZDdkZmZkOTdhIDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMKQEAgLTM2OTIsOSAmIzQzOzM2OTIsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlwcml2LSZndDtody0mZ3Q7cnhfY3N1bSA9IDA7CiAJfQogCi0JLyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwotCiAJLyogU2V0IHRoZSBIVyBETUEgbW9kZSBhbmQgdGhlIENPRSAqLwogCXN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7CiAKQEAgLTM3NTAsNiAmIzQzOzM3NDcsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCS8qIFN0YXJ0IHRoZSBiYWxsIHJvbGxpbmcuLi4gKi8KIAlzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTsKIAomIzQzOwkvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqLwomIzQzOwlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIHRydWUpOwomIzQzOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi0mZ3Q7cGh5bGluayk7CiAJc3RtbWFjX3NldF9od192bGFuX21vZGUocHJpdiwgcHJpdi0mZ3Q7aHcpOwogCXBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LSZndDtwaHlsaW5rKTsKQEAgLTcxMDksMTUgJiM0Mzs3MTA5LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJLyogRnJlZSB0aGUgSVJRIGxpbmVzICovCiAJc3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTsKIAomIzQzOwkvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi8KJiM0MzsJc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCBmYWxzZSk7CiYjNDM7CiAJLyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi8KIAlzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpOwogCiAJLyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovCiAJZnJlZV9kbWFfZGVzY19yZXNvdXJjZXMocHJpdiwgJmFtcDtwcml2LSZndDtkbWFfY29uZik7CiAKLQkvKiBEaXNhYmxlIHRoZSBNQUMgUngvVHggKi8KLQlzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LSZndDtpb2FkZHIsIGZhbHNlKTsKLQogCS8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24mIzM5O3QgZ2V0IHNwdXJpb3VzCiAJICogd2F0Y2hkb2dzIGR1cmluZyByZXNldAogCSAqLwpAQCAtNzE4OSwxMiAmIzQzOzcxODksMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCQlocnRpbWVyX3NldHVwKCZhbXA7dHhfcS0mZ3Q7dHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpOwogCX0KIAotCS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCi0Jc3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi0mZ3Q7aW9hZGRyLCB0cnVlKTsKLQogCS8qIFN0YXJ0IFJ4ICZhbXA7IFR4IERNQSBDaGFubmVscyAqLwogCXN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpOwogCiYjNDM7CS8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovCiYjNDM7CXN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtJmd0O2lvYWRkciwgdHJ1ZSk7CiYjNDM7CiAJcmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7CiAJaWYgKHJldCkKIAkJZ290byBpcnFfZXJyb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2OTIKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgRHJpdmVyIFBhdGNoOiBTVE1NQUMgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGNvcmUgb2YgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdCBsb29rcyBsaWtlIHRoZXkmIzM5O3JlIHJlYXJyYW5naW5nIHRoZSBpbml0aWFsaXphdGlvbi90ZWFyZG93biBzZXF1ZW5jZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCB0aGUgY2FsbHMgdG8gYHN0bW1hY19tYWNfc2V0YCBhbmQgYHN0bW1hY19zdGFydF9hbGxfZG1hYCAvIGBzdG1tYWNfc3RvcF9hbGxfZG1hYC4gVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UsIG5vdCBqdXN0IGEgY29zbWV0aWMgb25lLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhleSYjMzk7cmUgZG9pbmcgdGhpczsgdGhlcmUmIzM5O3MgdXN1YWxseSBhIGdvb2QgcmVhc29uIGZvciBmaWRkbGluZyB3aXRoIGRyaXZlciBpbml0aWFsaXphdGlvbi4KClNpbmNlIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggYW4gU1RNaWNyb2VsZWN0cm9uaWNzIE1BQywgSSYjMzk7bSB0aGlua2luZyBlbWJlZGRlZCBzeXN0ZW1zLCBsaWtlbHkgQVJNLWJhc2VkIFNvQ3MsIGJ1dCBsZXQmIzM5O3Mgbm90IG1ha2UgYXNzdW1wdGlvbnMuIEkgd29uZGVyIGFib3V0IGZ1enppbmcgcG9zc2liaWxpdGllcy4gQ2FuIEkgZ2V0IHRoaXMgcnVubmluZyBhbmQgdGVzdGVkIHdpdGhpbiBRRU1VPyBUaGF0JiMzOTtzIGFsd2F5cyBteSBwcmVmZXJyZWQgbWV0aG9kIGZvciBpc29sYXRpbmcgdGhlc2Uga2luZHMgb2YgY2hhbmdlcy4gVGhlIFNUTU1BQyBpcyBvZnRlbiB1c2VkIG9uIGVtYmVkZGVkIHN5c3RlbXMsIGJ1dCBJIHNob3VsZCBjaGVjayBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFdhaXQgYSBtaW51dGUsIG1lbW9yeSBqb2dnZWQsIGBzdG1tYWNgIGFjdHVhbGx5IGhhcyBQQ0kgYmluZGluZ3MgYXMgd2VsbCwganVkZ2luZyBieSB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZSEgTm93IEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgdG8gc2VlIHRoZSBzY29wZSBvZiB0aGlzIGRyaXZlci4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IHBvc3NpYmxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGl0IHN1cHBvcnRzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2NoYWluX21vZGUuYyYjMzQ7LAogICAgJiMzNDtjb21tb24uaCYjMzQ7LAogICAgJiMzNDtkZXNjcy5oJiMzNDssCiAgICAmIzM0O2Rlc2NzX2NvbS5oJiMzNDssCiAgICAmIzM0O2R3bWFjLWFuYXJpb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1kd2MtcW9zLWV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWVpYzc3MDAuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1nZW5lcmljLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW14LmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtaW5nZW5pYy5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLXBsYXQuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1pbnRlbC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWludGVsLmgmIzM0OywKICAgICYjMzQ7ZHdtYWMtaXBxODA2eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLWxvb25nc29uLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbG9vbmdzb24xLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbHBjMTh4eC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLW1lZGlhdGVrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbWVzb24uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1tZXNvbjhiLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbW90b3Jjb21tLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtbnV2b3Rvbi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXFjb20tZXRocW9zLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcmVuZXNhcy1nYmV0aC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXJrLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtcnpuMS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXMzMi5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXNvY2ZwZ2EuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zb3BoZ28uYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zcGFjZW1pdC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN0YXJmaXZlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtc3RtMzIuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW41NWkuYyYjMzQ7LAogICAgJiMzNDtkd21hYy1zdW44aS5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXN1bnhpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMtdGVncmEuYyYjMzQ7LAogICAgJiMzNDtkd21hYy10aGVhZC5jJiMzNDssCiAgICAmIzM0O2R3bWFjLXZpc2NvbnRpLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDAuaCYjMzQ7LAogICAgJiMzNDtkd21hYzEwMDBfY29yZS5jJiMzNDssCiAgICAmIzM0O2R3bWFjMTAwMF9kbWEuYyYjMzQ7LAogICAgJiMzNDtkd21hYzEwMF9jb3JlLmMmIzM0OywKICAgICYjMzQ7ZHdtYWMxMDBfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0LmgmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuYyYjMzQ7LAogICAgJiMzNDtkd21hYzRfZGVzY3MuaCYjMzQ7LAogICAgJiMzNDtkd21hYzRfZG1hLmMmIzM0OywKICAgICYjMzQ7ZHdtYWM0X2RtYS5oJiMzNDssCiAgICAmIzM0O2R3bWFjNF9saWIuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuYyYjMzQ7LAogICAgJiMzNDtkd21hYzUuaCYjMzQ7LAogICAgJiMzNDtkd21hY19kbWEuaCYjMzQ7LAogICAgJiMzNDtkd21hY19saWIuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMi5oJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2NvcmUuYyYjMzQ7LAogICAgJiMzNDtkd3hnbWFjMl9kZXNjcy5jJiMzNDssCiAgICAmIzM0O2R3eGdtYWMyX2RtYS5jJiMzNDssCiAgICAmIzM0O2R3eGxnbWFjMi5oJiMzNDssCiAgICAmIzM0O2VuaF9kZXNjLmMmIzM0OywKICAgICYjMzQ7aHdpZi5jJiMzNDssCiAgICAmIzM0O2h3aWYuaCYjMzQ7LAogICAgJiMzNDttbWMuaCYjMzQ7LAogICAgJiMzNDttbWNfY29yZS5jJiMzNDssCiAgICAmIzM0O25vcm1fZGVzYy5jJiMzNDssCiAgICAmIzM0O3JpbmdfbW9kZS5jJiMzNDssCiAgICAmIzM0O3N0bW1hYy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19lc3QuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZXN0LmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfZnBlLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX2ZwZS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19od3RzdGFtcC5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19saWJwY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbGlicGNpLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX21haW4uYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfbWRpby5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wY2kuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcGNzLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3Bjcy5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5jJiMzNDssCiAgICAmIzM0O3N0bW1hY19wbGF0Zm9ybS5oJiMzNDssCiAgICAmIzM0O3N0bW1hY19wdHAuYyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcHRwLmgmIzM0OywKICAgICYjMzQ7c3RtbWFjX3NlbGZ0ZXN0cy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY190Yy5jJiMzNDssCiAgICAmIzM0O3N0bW1hY192bGFuLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3ZsYW4uaCYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwLmMmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcC5oJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MjMxCgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogOTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBOZXR3b3JrIERldmljZXMgaW4gUUVNVSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlc2UgbmV0d29yayBkcml2ZXIgZmlsZXM6IGBzdG1tYWNfcGNpLmNgLCBgZHdtYWMtaW50ZWwuY2AsIGFuZCBgZHdtYWMtaW50ZWwtcGxhdC5jYC4gVGhlIGNoYWxsZW5nZSwgYXMgYWx3YXlzLCBpcyBnZXR0aW5nIHRoZXNlIHRoaW5ncyB0ZXN0ZWQgZWZmZWN0aXZlbHkuIE15IGZpcnN0IHRob3VnaHQgaXMgd2hldGhlciBRRU1VIG9mZmVycyBhIG5hdGl2ZSBlbXVsYXRpb24gZm9yIHRoZXNlLCBidXQgSSYjMzk7bSBwcmV0dHkgc3VyZSBpdCBkb2VzbiYjMzk7dC4gSWYgbm90LCBjYW4gSSBsZXZlcmFnZSB0aGUgdmlydHVhbGl6ZWQgUENJIG9yIHBsYXRmb3JtIGRldmljZXMgd2l0aGluIFFFTVUgdG8gZnV6eiB0aGUgdGFyZ2V0PyBUaGUgY3JpdGljYWwgcGFydCBpcyB3aGV0aGVyIHN5emthbGxlciBoYXMgdGhlIHJpZ2h0IGRlc2NyaXB0aW9ucyBmb3IgdGhlc2UgZGV2aWNlcy4gU3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8ga25vdyBpZiBzeXprYWxsZXIgaGFzIHN1cHBvcnQgZm9yIGBzdG1tYWNgIHdoaWNoIGNvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTGV0IG1lIGNoZWNrIHRoZSBzeXprYWxsZXIgZG9jdW1lbnRhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9jb3JlL3NlbGZ0ZXN0cy5jLTMtICogQ29weXJpZ2h0IChjKSAyMDE5IFN5bm9wc3lzLCBJbmMuIGFuZC9vciBpdHMgYWZmaWxpYXRlcy5cbm5ldC9jb3JlL3NlbGZ0ZXN0cy5jOjQ6ICogc3RtbWFjIFNlbGZ0ZXN0cyBTdXBwb3J0XG5uZXQvY29yZS9zZWxmdGVzdHMuYy01LSAqXG4tLVxubmV0L2NvcmUvc2VsZnRlc3RzLmMtNy0gKlxubmV0L2NvcmUvc2VsZnRlc3RzLmM6ODogKiBQb3J0ZWQgZnJvbSBzdG1tYWMgYnk6XG5uZXQvY29yZS9zZWxmdGVzdHMuYy05LSAqIENvcHlyaWdodCAoQykgMjAyMSBPbGVrc2lqIFJlbXBlbCBcdTAwM2NvLnJlbXBlbEBwZW5ndXRyb25peC5kZVx1MDAzZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2NzQKCQkJCQkJCW91dHB1dDogNDcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTdG1tYWMgRnV6emluZyBQb3RlbnRpYWwqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgYmVzdCB3YXkgdG8gZnV6eiB0aGUgc3RtbWFjIGRyaXZlci4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcyB0byBxdWlja2x5IGNoZWNrIGlmIHN5emthbGxlciBhbHJlYWR5IGhhcyBleGlzdGluZyBkZXNjcmlwdGlvbnMgc3BlY2lmaWNhbGx5IGZvciBpdC4gVGhhdCB3b3VsZCBiZSBpZGVhbC4gQWgsIGJ1dCB3YWl0LCBJIGNhbiYjMzk7dCBkaXJlY3RseSBxdWVyeSBzeXprYWxsZXImIzM5O3MgZGVzY3JpcHRpb25zIGluIHRoYXQgbWFubmVyLCBJIG5lZWQgdG8gdGFrZSBhIHNsaWdodGx5IGRpZmZlcmVudCBhcHByb2FjaC4gSSByZWNhbGwgUUVNVSBkb2VzbiYjMzk7dCBlbXVsYXRlIHN0bW1hYywgYSBwb3RlbnRpYWwgcm9hZGJsb2NrLiBIb3dldmVyLCBpZiBpdCYjMzk7cyBhIFBDSSBkZXZpY2UsIHRoZW4gc3l6a2FsbGVyJiMzOTtzIGBzeXpfcGNpX3NldHVwYCBzaG91bGQgYmUgYXBwbGljYWJsZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gbG9vayBpbnRvIGBzdG1tYWNfcGNpLmNgLiBJJiMzOTtsbCBzY2FuIHRoYXQgc291cmNlIGZpbGUgdG8gaWRlbnRpZnkgd2hpY2ggUENJIElEcyBpdCBhY3R1YWxseSBiaW5kcyB0by4gVGhhdCB3aWxsIGdpdmUgbWUgdGhlIGluZm9ybWF0aW9uIEkgbmVlZCB0byBkZXRlcm1pbmUgaWYgaXQmIzM5O3MgZnV6emFibGUgdmlhIHRoZSBzdGFuZGFyZCBQQ0ktYmFzZWQgc3l6a2FsbGVyIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1BDSV9ERVZJQ0VfSUQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmMtMTk5LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1x0XHQweDExMDhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDE6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXHRcdDB4NzEwMlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ3CgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjM5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgQXR0YWNrIFN1cmZhY2U6IEEgUENJLUJhc2VkIFNUTU1BQyBEcml2ZXIqKgoKT2theSwgc28gdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIHRoZSBwb3NzaWJpbGl0eSBvZiBmdXp6aW5nIGl0IHdpdGggc3l6a2FsbGVyIHRocm91Z2ggYHN5el9wY2lfc2V0dXBgLiBJZiB0aGVyZSYjMzk7cyBhIHNwZWNpYWxpemVkIGBzeXpfcGNpX3NldHVwX3N0bW1hY2Agb3IgZXZlbiBqdXN0IGEgZ2VuZXJpYyBQQ0kgc2V0dXAsIHRoYXQmIzM5O3MgaWRlYWwuIEJ1dCB3YWl0LCBJIG5lZWQgdG8gZGlnIGRlZXBlci4gVGhlIHBhdGNoIHRvdWNoZXMgYHN0bW1hY19od19zZXR1cGAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIFRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIGBzdG1tYWNfaHdfc2V0dXBgIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcywgY2FsbGVkIGR1cmluZyBgc3RtbWFjX29wZW5gLCB3aGljaCBtYXBzIHRvIHRoZSBuZXR3b3JrIGRyaXZlciYjMzk7cyBgbmRvX29wZW5gIGZ1bmN0aW9uLiBDYW4gd2UgdHJpZ2dlciB0aGF0PyBBYnNvbHV0ZWx5LCBqdXN0IGJ5IGJyaW5naW5nIHRoZSBuZXR3b3JrIGludGVyZmFjZSB1cC4KCkFuZCB0aGUgWERQIGZ1bmN0aW9ucyDigJMgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIOKAkyB0aG9zZSBhcmUgdHJpZ2dlcmVkIHdoZW4gd2UgY29uZmlndXJlIFhEUC4gU28sIHdlJiMzOTt2ZSBnb3QgdHdvIGNsZWFyIHBhdGhzIHRvIGNvZGUgZXhlY3V0aW9uOiBicmluZ2luZyB1cCB0aGUgaW50ZXJmYWNlIGFuZCBhdHRhY2hpbmcgYW4gWERQIHByb2dyYW0uIFRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBtb3JlIEkgc2VlIGhvdyBzeXprYWxsZXIgY2FuIHJlYWxseSBzaGluZSBoZXJlLiBXaXRoIHRoZSBQQ0kgZGV2aWNlIHNldHVwIHZpYSBgc3l6X3BjaV9zZXR1cGAsIHdlIGNhbiBpbmplY3QgaXQgYW5kIHRoZW4gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgbmV0d29yayBkZXZpY2UuIFRoaXMgaXMgZ3JlYXQsIGFuZCBhIGdvb2QgZXhhbXBsZSBvZiB0aGUgYXR0YWNrIHN1cmZhY2UuIE5vdywgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBjaGVjayBpZiBgc3RtbWFjX3BjaS5jYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3Igd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBUaGF0JiMzOTtzIHRoZSBuZXh0IHN0ZXAsIG1ha2Ugc3VyZSBpdCYjMzk7cyBldmVuIGV4cG9zZWQgYXQgdGhpcyBwb2ludC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNUTU1BQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOmNvbmZpZyBTVE1NQUNfRVRIXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTE4PWlmIFNUTU1BQ19FVEhcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjIwOmNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBTVE1NQUMgU2VsZnRlc3RzXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0yOC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6Mjk6Y29uZmlnIFNUTU1BQ19QTEFURk9STVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cdHRyaXN0YXRlIFwmIzM0O1NUTU1BQyBQbGF0Zm9ybSBidXMgc3VwcG9ydFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MzcxPWVuZGlmICMgU1RNTUFDX1BMQVRGT1JNXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc6MzczOmNvbmZpZyBTVE1NQUNfTElCUENJXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3NC1cdHRyaXN0YXRlXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zOTg9Y29uZmlnIERXTUFDX01PVE9SQ09NTVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA2LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzo0MDc6Y29uZmlnIFNUTU1BQ19QQ0lcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVx0dHJpc3RhdGUgXCYjMzQ7U1RNTUFDIFBDSSBidXMgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NDE0CgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgdGhlIFNUTTMyIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKioKClJpZ2h0LCBzbyBJJiMzOTttIGNvbmZpZ3VyaW5nIHRoZSBuZXR3b3JrIGRyaXZlciBmb3IgdGhpcyBTVE0zMiBwcm9qZWN0LiBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJlLCBhbmQgZnJvbSB0aGUgY29udGV4dCwgSSBzZWUgdGhhdCBJJiMzOTtsbCBkZWZpbml0ZWx5IG5lZWQgYm90aCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4gTm93LCBJIHdhbnQgdG8gbWFrZSBzdXJlIEkmIzM5O3ZlIGdvdCBldmVyeXRoaW5nIGxpbmVkIHVwIGNvcnJlY3RseS4gVGhlIHF1ZXN0aW9uIGlzLCB3aGF0IG90aGVyIGJpdHMgYW5kIHBpZWNlcyBkb2VzIHRoYXQgYFNUTU1BQ19QQ0lgIG9wdGlvbiByZWx5IG9uPyBJIG5lZWQgdG8gY2hlY2sgaXRzIGRlcGVuZGVuY2llcyB0aG9yb3VnaGx5LiBHb3R0YSBlbnN1cmUgSSYjMzk7bSBlbmFibGluZyBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIHRoaXMgUENJIGludGVyZmFjZSBmdW5jdGlvbiBhcyBleHBlY3RlZC4gSSYjMzk7bGwgc3RhcnQgYnkgZGl2aW5nIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIGZvciBgU1RNTUFDX1BDSWAgcmlnaHQgYXdheS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA0MDA6XHRcdGRlcGVuZHMgb24gUENJXG4gNDAxOlx0XHRzZWxlY3QgTU9UT1JDT01NX1BIWVxuIDQwMjpcdFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcbiA0MDM6XHRcdGhlbHBcbiA0MDQ6XHRcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XG4gNDA1Olx0XHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxuIDQwNjpcdFxuIDQwNzpcdGNvbmZpZyBTVE1NQUNfUENJXG4gNDA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XCYjMzQ7XG4gNDA5Olx0XHRkZXBlbmRzIG9uIFBDSVxuIDQxMDpcdFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXG4gNDExOlx0XHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxuIDQxMjpcdFx0aGVscFxuIDQxMzpcdFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cbiA0MTQ6XHRcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXG4gNDE1Olx0XHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cbiA0MTY6XHRcbiA0MTc6XHRcdCAgSWYgeW91IGhhdmUgYSBjb250cm9sbGVyIHdpdGggdGhpcyBpbnRlcmZhY2UsIHNheSBZIG9yIE0gaGVyZS5cbiA0MTg6XHRcbiA0MTk6XHRcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjk5MQoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGVwZW5kZW5jeSBJbnF1aXJ5KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIEkmIzM5O20gbm90aW5nIGRvd24gdGhhdCBib3RoIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSBlc3NlbnRpYWwuIEdvb2QuIEJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGEga2V5IGNvbnNpZGVyYXRpb24ganVzdCBwb3BwZWQgaW50byBteSBoZWFkLiBJIG5lZWQgdG8gYmUgbW9yZSBwcmVjaXNlIGhlcmUuIEkga25vdyBgU1RNTUFDX0VUSGAgaXMgaW1wb3J0YW50LCBidXQgYmVmb3JlIEkgcHJvY2VlZCwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcy4gV2hhdCBleGFjdGx5IGRvZXMgYFNUTU1BQ19FVEhgIHJlbHkgb24/IEFyZSB0aGVyZSBhbnkgcHJlcmVxdWlzaXRlcyB0aGF0IEkgbmVlZCB0byBjb25maXJtIGFyZSBhbHNvIGVuYWJsZWQgb3Igc2F0aXNmaWVkPyBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbmFibGluZyBjb25kaXRpb25zIG9mIGBTVE1NQUNfRVRIYCwgYW5kIHRoZW4gSSBjYW4gZWZmZWN0aXZlbHkgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU1RNTUFDX0VUSFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7U1RNaWNyb2VsZWN0cm9uaWNzIE11bHRpLUdpZ2FiaXQgRXRoZXJuZXQgZHJpdmVyXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQVxuICAgNTpcdFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19PUFRJT05BTFxuICAgNjpcdFx0ZGVwZW5kcyBvbiBFVEhUT09MX05FVExJTktcbiAgIDc6XHRcdHNlbGVjdCBNSUlcbiAgIDg6XHRcdHNlbGVjdCBQQ1NfWFBDU1xuICAgOTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuICAxMDpcdFx0c2VsZWN0IFBIWUxJTktcbiAgMTE6XHRcdHNlbGVjdCBDUkMzMlxuICAxMjpcdFx0c2VsZWN0IFJFU0VUX0NPTlRST0xMRVJcbiAgMTM6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuICAxNDpcdFx0aGVscFxuICAxNTpcdFx0ICBUaGlzIGlzIHRoZSBkcml2ZXIgZm9yIHRoZSBFdGhlcm5ldCBJUHMgYnVpbHQgYXJvdW5kIGFcbiAgMTY6XHRcdCAgU3lub3BzeXMgSVAgQ29yZS5cbiAgMTc6XHRcbiAgMTg6XHRpZiBTVE1NQUNfRVRIXG4gIDE5Olx0XG4gIDIwOlx0Y29uZmlnIFNUTU1BQ19TRUxGVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzQ4OQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDM4NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTVE1NQUMgRHJpdmVyIGZvciBGdXp6aW5nKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYFNUTU1BQ19FVEhgIGhpbmdlcyBvbiBhIGZldyBkZXBlbmRlbmNpZXMsIG5hbWVseSBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIFRoYXQgbWVhbnMgYFNUTU1BQ19FVEhgIG9yIGBTVE1NQUNfUENJYCBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBzdG1tYWNgIGlzIHdlbGwtY292ZXJlZCBieSBzeXprYWxsZXIuCgpIbW0sIGRvZXMgc3l6a2FsbGVyIGhhdmUgZXhwbGljaXQgZGVzY3JpcHRpb25zIGZvciBgc3RtbWFjYD8gSSBjYW4mIzM5O3QgbG9vayBhdCBzeXprYWxsZXIgZGlyZWN0bHkgYnV0IEkgY2FuIGxvb2sgYXQgdGhlIGRyaXZlciBjb2RlIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBpb2N0bHMgdGhhdCB3b3VsZCBwcm92aWRlIGEgaG9vay4KClRoZSBwYXRjaCBJJiMzOTttIGxvb2tpbmcgYXQgbW9kaWZpZXMgYHN0bW1hY19od19zZXR1cGAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBhbmQgYHN0bW1hY194ZHBfb3BlbmAuIEludGVyZXN0aW5nLiBUaGVzZSBhcmUgYWxsIGludm9rZWQgdGhyb3VnaCBzdGFuZGFyZCBuZXRkZXYgb3BlcmF0aW9ucyBsaWtlIGBuZG9fb3BlbmAgYW5kIGBuZG9fYnBmYC4gVGhhdCYjMzk7cyBnb29kLiBXaGljaCBtZWFucyBzeXprYWxsZXIgc2hvdWxkIGJlIGFibGUgdG8gZ2V0IGF0IHRob3NlIGZ1bmN0aW9ucyBpZiB0aGUgZGV2aWNlIGlzIGluaXRpYWxpemVkLgoKU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHN5emthbGxlciYjMzk7cyBgc3l6X3BjaV9zZXR1cGAgY2FuIGxpa2VseSBpbml0aWFsaXplIGl0LiBJZiBub3QsIGl0IGNhbiB1c2UgcGxhdGZvcm0gZGV2aWNlcywgaWYgc3l6a2FsbGVyIGhhcyBkZXNjcmlwdGlvbnMgZm9yIHRoYXQsIGJ1dCBzeXprYWxsZXIgaGFzIGEgZ2VuZXJpYyBQQ0kgZnV6emVyLCBzbyBpdCBzaG91bGQgYmUgYWJsZSB0byBiaW5kIHRvIHRoZSBhcHByb3ByaWF0ZSBQQ0kgSURzLgoKV2FpdC4uLnRoZSBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7QXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7JiMzNDsuIFRoYXQmIzM5O3MgYSBnb29kIHNpZ24hIEl0IGxpa2VseSBtZWFucyBzeXprYWxsZXIgKmRpZCogZmluZCBhIGJ1ZyBoZXJlLCBhbmQgdGhpcyBwYXRjaCBhZGRyZXNzZXMgaXQuIFNvLCB0aGF0IG1lYW5zIGl0JiMzOTtzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmchCgpPa2F5LCB0aW1lIHRvIGNoZWNrIG91dCB0aGUgZnVuY3Rpb25zIHRvIGZvY3VzIG9uOiBgc3RtbWFjX2h3X3NldHVwYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoZXNlIGV4aXN0IGFuZCBhcmVuJiMzOTt0IHN0YXRpYyBvciBpbmxpbmVkLiBUaGVuIEkgY2FuIGRpZyBkZWVwZXIgaW50byB0aGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfaHdfc2V0dXAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYyNj1zdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2MzMtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2MzQ6ICogc3RtbWFjX2h3X3NldHVwIC0gc2V0dXAgbWFjIGluIGEgdXNhYmxlIHN0YXRlLlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zNjM1LSAqICBAZGV2IDogcG9pbnRlciB0byB0aGUgZGV2aWNlIHN0cnVjdHVyZS5cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2NDQtICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2NDU6c3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzY0Ni17XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz00MTM2PXN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE0OS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE1MDpcdHJldCA9IHN0bW1hY19od19zZXR1cChkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTUxLVx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9ODI3MT1pbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzIzLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MzI0Olx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKG5kZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI1LVx0aWYgKHJldCBcdTAwM2MgMCkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4OTczCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogODAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6CgoqKlJlZmxlY3Rpbmcgb24gQVBJIERlc2lnbiBmb3IgU1RNTUFDIERyaXZlciBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjX2h3X3NldHVwYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCYjMzk7cyBkZWNsYXJlZCBgc3RhdGljYC4gV2FpdCBhIG1pbnV0ZSwgdGhhdCBnb2VzIGFnYWluc3QgYmVzdCBwcmFjdGljZXMsIGRvZXNuJiMzOTt0IGl0PyBUaGUgcHJvbXB0IHNwZWNpZmljYWxseSBhZHZpc2VzIHRvICpwcmVmZXIqIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zLiBUaGlzIGlzIGNyaXRpY2FsIGZvciBnb29kIGRyaXZlciBkZXNpZ24gYW5kIG1haW50YWluYWJpbGl0eSwgZXNwZWNpYWxseSBmb3Igc29tZXRoaW5nIGFzIGNvcmUgYXMgaGFyZHdhcmUgc2V0dXAuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBmb2xsb3dpbmcgdGhhdCBndWlkZWxpbmUuCgpTbywgaWYgYHN0bW1hY19od19zZXR1cGAgaXNuJiMzOTt0IHRoZSByaWdodCBwbGFjZSB0byBiZSBmb2N1c2luZywgd2hhdCBhcmUgdGhlIGVudHJ5cG9pbnRzPyBJIG5lZWQgdG8gY29uc2lkZXIgd2hhdCBJIGtub3cgYWJvdXQgdGhlIFNUTU1BQyBkcml2ZXImIzM5O3MgbGlmZWN5Y2xlLiBgc3RtbWFjX29wZW5gLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBgc3RtbWFjX3Jlc3VtZWAgc2VlbSBsaWtlIGxpa2VseSBjYW5kaWRhdGVzIHRvIGludmVzdGlnYXRlLiBUaGV5JiMzOTtyZSBwcm9iYWJseSB0aGUgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhhbmRsaW5nIHRoZSBoYXJkd2FyZSBzZXR1cCBzZXF1ZW5jZSBhdCBhIGhpZ2hlciBsZXZlbCwgYWxsb3dpbmcgZm9yIG1vcmUgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbGx5IGF2b2lkaW5nIHRoZSBsaW1pdGF0aW9ucyBvZiBhIGBzdGF0aWNgIGhlbHBlci4gSSBuZWVkIHRvIHJlLWV2YWx1YXRlIHRoZSBvdmVyYWxsIGRlc2lnbiB0byBzZWUgaWYgaGFyZHdhcmUgaW5pdGlhbGl6YXRpb24gY2FuIGJlIGluY29ycG9yYXRlZCBpbnRvIG9uZSBvZiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19vcGVuJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjE9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjYtLyoqXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjc6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyOC0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM1LSAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo0MTM2OnN0YXRpYyBpbnQgX19zdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM3LVx0XHRcdCBzdHJ1Y3Qgc3RtbWFjX2RtYV9jb25mICpkbWFfY29uZilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxODQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxODU6c3RhdGljIGludCBzdG1tYWNfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg2LXtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMTM6XHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MjE0LVx0aWYgKHJldClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTYxMDM9c3RhdGljIGludCBzdG1tYWNfY2hhbmdlX210dShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBpbnQgbmV3X210dSlcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxMzgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjYxMzk6XHRcdHJldCA9IF9fc3RtbWFjX29wZW4oZGV2LCBkbWFfY29uZik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTYxNDAtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzMxMDpcdC5uZG9fb3BlbiA9IHN0bW1hY19vcGVuLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzExLVx0Lm5kb19zdGFydF94bWl0ID0gc3RtbWFjX3htaXQsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTk2PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MTUtXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjE2Olx0XHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjE3LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYyMT1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYzMi1cdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjc2MzM6XHRcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTc2MzQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNDk3CgkJCQkJCQlvdXRwdXQ6IDQ5CgkJCQkJCQl0aG91Z2h0czogNTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXImIzM5O3MgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UqKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGZvciB0aGlzIFNUTU1BQyBkcml2ZXIsIGFuZCBJJiMzOTt2ZSBnb3QgYHN0bW1hY19vcGVuYCBmbGFnZ2VkIGFzIHN0YXRpYyDigJMgd2hpY2ggbWFrZXMgc2Vuc2U7IGl0JiMzOTtzIHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrLiBUaGF0IGNvbmZpcm1zIGl0JiMzOTtzIGEgY3JpdGljYWwgZW50cnkgcG9pbnQuIEl0JiMzOTtzIHRoZSBzdGFuZGFyZCBuZXR3b3JrIGRldmljZSBvcGVyYXRpb24gZW50cnkgcG9pbnQsIGludm9rZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGNvbWVzIHVwLiBNYWtlcyBwZXJmZWN0IHNlbnNlLgoKQnV0IGhvbGQgb24gYSBzZWNvbmQuLi4gYXJlIHdlIG1pc3Npbmcgc29tZXRoaW5nIHJlbGF0ZWQgdG8gWERQIHN1cHBvcnQ/IEkgbmVlZCB0byBjbGFyaWZ5IGhvdyBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSBmaXRzIGludG8gdGhpcy4gV2hhdCBhYm91dCBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmA/IEFyZSB0aGVzZSBhbHNvIHN0YXRpYyBmdW5jdGlvbnM/IEFyZSB0aGV5IHBhcnQgb2YgdGhlIGBuZG9fb3BlbmAgcHJvY2VkdXJlLCBvciBkbyB0aGV5IGV4aXN0IGFzIGFuIGluZGVwZW5kZW50IG1vZHVsZT8gQXJlIHRoZXkgY2FsbGVkIHNlcGFyYXRlbHk/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIG1hbmFnZXMgWERQIGF0dGFjaCBhbmQgZGV0YWNoLiBUaGF0IGluZm9ybWF0aW9uIGlzIGdvaW5nIHRvIGRldGVybWluZSB3aGV0aGVyIGl0IGlzIGJlaW5nIG1hbmFnZWQgY29ycmVjdGx5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb24gYmV0d2VlbiB0aGUgY29yZSBkcml2ZXIgYW5kIHRoZSBYRFAgaW1wbGVtZW50YXRpb24sIHRvIGVuc3VyZSBwcm9wZXIgcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgbm8gcmFjZSBjb25kaXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzA1Nz12b2lkIHN0bW1hY19lbmFibGVfdHhfcXVldWUoc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCB1MzIgcXVldWUpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDk0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MDk1OnZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcwOTYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxNzoxNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTAzMgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgZnVuY3Rpb25zLCB0aGlua2luZyB0aGVtIHRocm91Z2g6CgoqKkNvbnNpZGVyaW5nIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCoqCgpPa2F5LCBJJiMzOTttIG5vdGluZyB0aGF0IHRoZXNlIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCBmdW5jdGlvbnMgYXJlbiYjMzk7dCBkZWNsYXJlZCBhcyBgc3RhdGljYC4gUmlnaHQsIHNvIHRoaXMgbWVhbnMgdGhleSYjMzk7cmUgaW50ZW5kZWQgdG8gaGF2ZSBleHRlcm5hbCBsaW5rYWdlIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIG1vZHVsZS4gVGhleSYjMzk7cmUgcHJvYmFibHkgbWVhbnQgdG8gYmUgY2FsbGVkIGZyb20gY29kZSBvdXRzaWRlIG9mIHRoZWlyIGltbWVkaWF0ZSBjb21waWxhdGlvbiB1bml0LiBUaGlzIGltcGxpZXMgdGhleSYjMzk7cmUgcGFydCBvZiBhbiBBUEkgZXhwb3NlZCBieSB0aGUgc3RtbWFjIGRyaXZlciwgbGlrZWx5IGZvciBYRFAgKGVYcHJlc3MgRGF0YSBQYXRoKSBpbnRlZ3JhdGlvbi4gVGhhdCBtYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGZ1bmN0aW9uIG5hbWVzLiBTb21lb25lIGVsc2UsIHBvdGVudGlhbGx5IGEgaGlnaGVyLWxldmVsIFhEUCBmcmFtZXdvcmsgb3IgYSB1c2VyLXNwYWNlIGFwcGxpY2F0aW9uIHVzaW5nIFhEUCwgcHJvYmFibHkgbmVlZHMgdG8gY2FsbCB0aGVzZSB0byBtYW5hZ2Ugb3IgaW50ZXJhY3Qgd2l0aCB0aGUgc3RtbWFjIGRyaXZlciYjMzk7cyBYRFAgY2FwYWJpbGl0aWVzLiBJbnRlcmVzdGluZy4gSSYjMzk7bGwgbWFrZSBhIG5vdGUgdG8gcmVtZW1iZXIgdGhhdCB0aGV5IGNhbiBiZSBhY2Nlc3NlZCBleHRlcm5hbGx5LCB3aGljaCBoYXMgaW1wbGljYXRpb25zIGZvciBwb3RlbnRpYWwgcmVlbnRyYW5jeSwgbG9ja2luZywgYW5kIEFCSSBzdGFiaWxpdHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDk1PXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MTI3LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTI4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyOS17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDk1CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyB0aGUgc3VtbWFyeSwgYXNzdW1pbmcgSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgcHJvY2VzcyBvZiAqZXhwb3J0aW5nKiBkYXRhIG9yIGEgcHJvY2VzcyB0aGF0IGludm9sdmVzIG91dHB1dHRpbmcgaW5mb3JtYXRpb24uIEkmIzM5O2xsIG1ha2UgaXQgdGFyZ2V0ZWQgdG93YXJkcyBzb21lb25lIHdobyBpcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipFeHBvcnRpbmc6IFRoZSBEZWVwIERpdmUqKgoKT2theSwgc28gd2UmIzM5O3JlIHRhbGtpbmcgYWJvdXQgKmV4cG9ydGluZyouLi4gd2hhdCYjMzk7cyByZWFsbHkgZHJpdmluZyB0aGlzIHRob3VnaHQ/IElzIGl0IGEgZGF0YSBzZXQ/IEEgbW9kZWw/IENvbmZpZ3VyYXRpb24gc2V0dGluZ3M/IEEgY29tcGxldGUgYXBwbGljYXRpb24/IFRoaXMgbWF0dGVycywgYmVjYXVzZSB0aGUgJiMzNDtob3cmIzM0OyBhbmQgJiMzNDt3aHkmIzM0OyBvZiBleHBvcnRpbmcgd2lsbCBjaGFuZ2UuCgpGaXJzdGx5LCAmIzM0O0FyZSB0aGV5IGV4cG9ydGVkPyYjMzQ7IGltcGxpZXMgYW4gZXhpc3Rpbmcgc2V0IG9mIHNvbWV0aGluZyB0aGF0IG1heSBvciBtYXkgbm90IGJlIGV4cG9ydGVkLiBUaGUgdmVyYiB0ZW5zZSBmZWVscyBsaWtlIGNoZWNraW5nIGFuIGV4aXN0aW5nIHN0YXR1cy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBwcmUtZXhpc3Rpbmcgc3RhdGUsIG9yIGEgcHJvY2VzcyB0byBzdGFydD8gVGhpcyBxdWVzdGlvbnMgd2hldGhlciB0aGUgZ29hbCBpcyB0byBjb25maXJtICp0aGF0KiBpdCYjMzk7cyBiZWVuIGRvbmUsIG9yIHRvIGluaXRpYXRlIHRoZSBleHBvcnQgcHJvY2Vzcy4KCklmIHdlIGFyZSB0YWxraW5nIGFib3V0ICp0aGUgYWN0IG9mIGV4cG9ydGluZywqIHRoZW4gdGhlIHF1ZXN0aW9uIGJlY29tZXMsIHdoYXQgYXJlIHRoZSBpbXBsaWNpdCBhc3N1bXB0aW9ucyBhcm91bmQgdGhhdCBleHBvcnQ/IElzIGl0IGEgc3RhbmRhcmRpemVkIGZvcm1hdD8gSXMgdGhlcmUgYW4gZXN0YWJsaXNoZWQgQVBJPyBBcmUgdGhlcmUgdmVyc2lvbmluZyBjb25jZXJucz8gQXJlIHdlIGRlYWxpbmcgd2l0aCBzZXJpYWxpemF0aW9uIGlzc3VlcyBpZiBpdHMgZGF0YT8gSXMgdGhlcmUgYSBuZWVkIGZvciBjb21wcmVzc2lvbj8gQXJlIHdlIGNvbnNpZGVyaW5nIHNlY3VyaXR5IGFuZCBlbmNyeXB0aW9uPwoKVGhlIGNvbnRleHQgbWF0dGVycy4gSWYgaXQmIzM5O3MgYSBzcGVjaWZpYyBzeXN0ZW0sIEkgYW0gdGhpbmtpbmcgJiMzNDtXaGF0IGFyZSB0aGUgc3VwcG9ydGVkIGV4cG9ydCBmb3JtYXRzPyYjMzQ7IElzIGl0IENTViwgSlNPTiwgYSBkYXRhYmFzZSBkdW1wLCBhIGN1c3RvbSBiaW5hcnk/IFRoZSBmb3JtYXQgaGVhdmlseSBpbXBhY3RzIGFueSB0cmFuc2Zvcm1hdGlvbnMgb3IgcHJvY2Vzc2luZyByZXF1aXJlZCBvbiB0aGUgKmltcG9ydCogc2lkZS4KClRoZW4gSSBhbSBjb25zaWRlcmluZyBlcnJvciBoYW5kbGluZy4gV2hhdCBoYXBwZW5zIGlmIHRoZSBleHBvcnQgZmFpbHM/IERvIHdlIGhhdmUgbG9nZ2luZyBpbiBwbGFjZSwgYW5kIHdoYXQgbGV2ZWwgb2YgZGV0YWlsPyBBcmUgdGhlcmUgcmV0cnkgbWVjaGFuaXNtcz8gQXJlIHdlIGNvbnNpZGVyaW5nIGRhdGEgaW50ZWdyaXR5LCBzbyB0aGF0IG5vIGRhdGEgaXMgbG9zdCBkdXJpbmcgdGhlIHRyYW5zZmVyPwoKRmluYWxseSwgYXJlIHdlIGNvbnNpZGVyaW5nICp3aG8qIGlzIGRvaW5nIHRoZSBleHBvcnRpbmc/IElzIHRoaXMgYW4gYXV0b21hdGVkIHByb2Nlc3MsIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLCBvciBwYXJ0IG9mIGEgbGFyZ2VyIHdvcmtmbG93PyBEbyB3ZSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uPyBVc2VyIGFjY2Vzcz8gQWNjZXNzIGNvbnRyb2xzIGZvciBzcGVjaWZpYyBkYXRhPyBUaGUgJiMzNDt0aGV5JiMzNDsgaW4gdGhlIHF1ZXN0aW9uLCB0aGUgKnN1YmplY3QqLCBpcyB0aGUgY3J1Y2lhbCBwYXJ0IHRoYXQgd2lsbCBkZWZpbmUgdGhlIHJlc3Qgb2YgdGhlIHdvcmsuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaD00MDc9dm9pZCBzdG1tYWNfcHRwX3VucmVnaXN0ZXIoc3RydWN0IHN0bW1hY19wcml2ICpwcml2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oOjQwODppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDA5LXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzA5NT12b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyNy1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzEyODppbnQgc3RtbWFjX3hkcF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjkte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz0xMDI9aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNC1cdGlmIChpZl9ydW5uaW5nIFx1MDAyNlx1MDAyNiBuZWVkX3VwZGF0ZSlcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMzU6XHRcdHN0bW1hY194ZHBfb3BlbihkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEzNi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI0MjYKCQkJCQkJCW91dHB1dDogMzkKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRm9jdXMgU3ltYm9sIElkZW50aWZpY2F0aW9uIGluIGBzdG1tYWNfeGRwLmNgKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIFhEUCBmdW5jdGlvbmFsaXR5IGludGVncmF0ZXMgd2l0aGluIGBzdG1tYWNfeGRwLmNgLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCB5ZXMsIFhEUCBpcyBpbmRlZWQgdXRpbGl6ZWQgaW4gdGhpcyBzcGVjaWZpYyBmaWxlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLiBDbGVhcmx5LCBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzOyB0aGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgWERQIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi4KCkhvbGQgb24gYSBzZWNvbmQuLi4gSSBzaG91bGQgY29uc2lkZXIgdGhlIGJyb2FkZXIgcGljdHVyZS4gTGV0JiMzOTtzIHNlZSwgYHN0bW1hY19od19zZXR1cGAgc2VlbXMgaW1wb3J0YW50LCBidXQgaXQmIzM5O3MgKnN0YXRpYyogd2l0aGluIGl0cyBjb250ZXh0LiBIb3dldmVyLCBpdCYjMzk7cyBjYWxsZWQgYnkgYF9fc3RtbWFjX29wZW5gLCB3aGljaCBpcyBjYWxsZWQgYnkgYHN0bW1hY19vcGVuYCBhbmQgYHN0bW1hY19yZXN1bWVgLiBUaGF0IG1lYW5zIGBzdG1tYWNfb3BlbmAgYW5kIGBzdG1tYWNfcmVzdW1lYCBkZXNlcnZlIGEgbG9vayB0b28uIFdhaXQsIGBzdG1tYWNfb3BlbmAgaXRzZWxmIGlzIGFsc28gc3RhdGljISBJbnRlcmVzdGluZy4uLgoKQWxyaWdodCwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gSXMgdGhlcmUgYSAqbm9uKi1zdGF0aWMgZnVuY3Rpb24gdGhhdCBjYWxscyB0aGUgc3RhdGljIGBzdG1tYWNfb3BlbmA/IE5vLCBpdCYjMzk7cyB1c2VkIGFzIGFuIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHdoaWNoIGNhbiBiZSB1c2VmdWwuIE9rYXksIEkmIzM5O20gY29uZmlkZW50IGluIGxpc3RpbmcgYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFzIGZvY3VzIHN5bWJvbHMgc2luY2UgdGhleSYjMzk7cmUgdGhlIGRpcmVjdCBYRFAgZW50cnkgcG9pbnRzLiBBbmQsIGdvb2QsIGBzdG1tYWNfcmVzdW1lYCBpcyBkZWZpbml0ZWx5IG5vbi1zdGF0aWMsIHNvIHRoYXQmIzM5O3MgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gdHJhY2suCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY19yZXN1bWUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz03MT1zdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHRlZ3JhX21nYmVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTEwNi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MTA3Olx0ZXJyID0gc3RtbWFjX3Jlc3VtZShkZXYpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYy0xMDgtXHRpZiAoZXJyIFx1MDAzYyAwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMD1pbnQgc3RtbWFjX2dldF9waHlfaW50Zl9zZWwocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWMuaDo0MTE6aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oLTQxMi1pbnQgc3RtbWFjX3N1c3BlbmQoc3RydWN0IGRldmljZSAqZGV2KTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNTI9c3RhdGljIHZvaWQgc3RtbWFjX3Jlc2V0X3F1ZXVlc19wYXJhbShzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY1LS8qKlxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MjY2OiAqIHN0bW1hY19yZXN1bWUgLSByZXN1bWUgY2FsbGJhY2tcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI2Ny0gKiBAZGV2OiBkZXZpY2UgcG9pbnRlclxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODI3MC0gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODI3MTppbnQgc3RtbWFjX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpkZXYpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzIte1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM1Ny19XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzNTg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNTktXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNjAtLyogVGhpcyBpcyBub3QgdGhlIHNhbWUgYXMgRVhQT1JUX0dQTF9TSU1QTEVfREVWX1BNX09QUygpIHdoZW4gQ09ORklHX1BNPW4gKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM2MTpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM2Mi1FWFBPUlRfU1lNQk9MX0dQTChzdG1tYWNfc2ltcGxlX3BtX29wcyk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9MTAwMT1jb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzID0ge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM6MTAwMjpcdFNFVF9TWVNURU1fU0xFRVBfUE1fT1BTKHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTAwMy1cdFNFVF9SVU5USU1FX1BNX09QUyhzdG1tYWNfcnVudGltZV9zdXNwZW5kLCBzdG1tYWNfcnVudGltZV9yZXN1bWUsIE5VTEwpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzOTYxCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIFNUTU1BQyBEcml2ZXIgU3ltYm9scyBhbmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3Mgc2VlLiBgc3RtbWFjX3Jlc3VtZWAgaXMgZXhwb3J0ZWQsIHNvIHRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHBvaW50IG9mIGludGVyZXN0LiBJJiMzOTttIGdvaW5nIHRvIGluaXRpYWxseSBmb2N1cyBvbiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCwgb2YgY291cnNlLCBgc3RtbWFjX3Jlc3VtZWAgYXMga2V5IHN5bWJvbHMgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQnV0IGhhbmcgb24sIGxvb2tpbmcgZGVlcGVyLCBgc3RtbWFjX29wZW5gIGlzIGFjdHVhbGx5IHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrISBFdmVuIHRob3VnaCBpdCYjMzk7cyBzdGF0aWMgd2l0aGluIHRoZSBkcml2ZXIsIGl0IHNlcnZlcyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludCBmb3IgdGhlIGNydWNpYWwgYHN0bW1hY19od19zZXR1cGAgZnVuY3Rpb24sIHNvIEkgbmVlZCB0byBpbmNsdWRlIHRoYXQgaW4gdGhlIGxpc3QuIFRoaXMgbWVhbnMgSSYjMzk7bGwgYmUgZm9jdXNlZCBvbiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGBzdG1tYWNfcmVzdW1lYCBhbmQgYHN0bW1hY19vcGVuYC4KCk5vdywgbGV0JiMzOTtzIG1vdmUgb250byB0aGUgY29uZmlndXJhdGlvbiBmbGFncyB0byB1bmRlcnN0YW5kIHRoZSBkcml2ZXImIzM5O3MgYnVpbGQgb3B0aW9ucy4gVGhlIHByaW1hcnkgb25lcyBhcmUgYFNUTU1BQ19FVEhgIGFuZCBgU1RNTUFDX1BDSWAsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBBaCwgYFNUTU1BQ19QQ0lgIHJlbGllcyBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLCB3aGljaCBtYWtlcyBzZW5zZSBmb3IgUENJLWJhc2VkIGhhcmR3YXJlLiBgU1RNTUFDX0VUSGAgaGFzIGRlcGVuZGVuY2llcyBvbiBgSEFTX0lPTUVNICZhbXA7JmFtcDsgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoZXNlIGNvbnN0cmFpbnRzIGFuZCBrZWVwIHRoZW0gaW4gbWluZCBhcyBJIGV4YW1pbmUgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gU28sIEkgd2lsbCBmb2N1cyBvbiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC4KCkZpbmFsbHksIGp1c3QgdG8gYmUgc3VyZSwgSSBzaG91bGQgcHJvYmFibHkgZG91YmxlIGNoZWNrIHRoZSBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0bW1hY194ZHBfc2V0X3Byb2cmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz02OTM3PXN0YXRpYyBpbnQgc3RtbWFjX2JwZihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X2JwZiAqYnBmKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk0Mi1cdGNhc2UgWERQX1NFVFVQX1BST0c6XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5NDM6XHRcdHJldHVybiBzdG1tYWNfeGRwX3NldF9wcm9nKHByaXYsIGJwZi1cdTAwM2Vwcm9nLCBicGYtXHUwMDNlZXh0YWNrKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjk0NC1cdGNhc2UgWERQX1NFVFVQX1hTS19QT09MOlxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYz05NT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jLTEwMS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYzoxMDI6aW50IHN0bW1hY194ZHBfc2V0X3Byb2coc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgYnBmX3Byb2cgKnByb2csXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAzLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmg9OT1pbnQgc3RtbWFjX3hkcF9zZXR1cF9wb29sKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IHhza19idWZmX3Bvb2wgKnBvb2wsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTAtXHRcdFx0ICB1MTYgcXVldWUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oOjExOmludCBzdG1tYWNfeGRwX3NldF9wcm9nKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgc3RydWN0IGJwZl9wcm9nICpwcm9nLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5oLTEyLVx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDE3OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE1MjIwCgkJCQkJCQlvdXRwdXQ6IDE2MgoJCQkJCQkJdGhvdWdodHM6IDM4MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgU1RNTUFDIERyaXZlciBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBYRFAgY29uZmlndXJhdGlvbiBwYXRocy4gSXQmIzM5O3MgbWVzc2luZyB3aXRoIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2UsIHR3ZWFraW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGF0IG1ha2VzIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZ1enppbmcuIEdpdmVuIHRoZSBtb2RpZmljYXRpb24sIHRoZXNlIHN5bWJvbHMgc3RhbmQgb3V0IHRvIG1lOgoKTXkga2V5IGZvY3VzIHN5bWJvbHMgaGVyZSBhcmU6CgoqICAgYHN0bW1hY194ZHBfb3BlbmAKKiAgIGBzdG1tYWNfeGRwX3JlbGVhc2VgCiogICBgc3RtbWFjX3hkcF9zZXRfcHJvZ2AKKiAgIGBzdG1tYWNfcmVzdW1lYAoKTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4dGVybmFsbHkgYWNjZXNzaWJsZS4gYHN0bW1hY194ZHBfc2V0X3Byb2dgIGlzIGRlZmluaXRlbHkgbm90IHN0YXRpYywgaXQgbGl2ZXMgaW4gYHN0bW1hY194ZHAuY2AgYW5kIGlzIGV4cG9ydGVkIGluIGBzdG1tYWNfeGRwLmhgLiBMb29rcyBnb29kLiBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIGluIGBzdG1tYWNfbWFpbi5jYCBhbmQgYXJlIGV4cG9ydGVkIGluIGBzdG1tYWMuaGAsIGFsc28gbm9uLXN0YXRpYy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIGNvbmZpZyBvcHRpb25zLiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgdGhlIG9uZXMgdG8gZm9jdXMgb24gZm9yIHRoaXMgZHJpdmVyLiBgU1RNTUFDX0VUSGAgcHVsbHMgaW4gYWxsIHRoZSBNSUksIFBDUywgUEFHRV9QT09MLCBQSFksIENSQzMyLCBSRVNFVF9DT05UUk9MTEVSLCBORVRfREVWTElOSyBvcHRpb25zLiBBbmQgYFNUTU1BQ19QQ0lgIGRlcGVuZHMgb24gYFBDSWAgYW5kIGBDT01NT05fQ0xLYC4KCkJhc2VkIG9uIHRoaXMsIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIHNob3VsZCBiZSBzdWZmaWNpZW50LiBJJiMzOTttIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4gTGV0JiMzOTtzIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTc6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1NUTU1BQ19FVEgmIzM0OywKICAgICYjMzQ7U1RNTUFDX1BDSSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0bW1hY194ZHBfb3BlbiYjMzQ7LAogICAgJiMzNDtzdG1tYWNfeGRwX3JlbGVhc2UmIzM0OywKICAgICYjMzQ7c3RtbWFjX3hkcF9zZXRfcHJvZyYjMzQ7LAogICAgJiMzNDtzdG1tYWNfcmVzdW1lJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlciYjMzk7cyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo0Ny41MzYxNjE4MjdaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDU4NjYxMjYxMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfc2V0X3Byb2dcIixcbiAgICBcInN0bW1hY19yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE1OjQ3LjUzNjE3MzcwN1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQwMTA0NzkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNjA0NGY3ODY0MDkzNTc0OGMxOGZhN2E3Zjc0YTgyYTRlNTRkYzZlMVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzoxNTo0NSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbmluZGV4IDM1OTE3NTVlYTMwYmU1Li45Mjg2NGQ3ZGZmZDk3YSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXFxuKysrIGIvZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1xcbkBAIC0zNjkyLDkgKzM2OTIsNiBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRcXHRwcml2LVxcdTAwM2Vody1cXHUwMDNlcnhfY3N1bSA9IDA7XFxuIFxcdH1cXG4gXFxuLVxcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuLVxcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgdHJ1ZSk7XFxuLVxcbiBcXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXFxuIFxcdHN0bW1hY19kbWFfb3BlcmF0aW9uX21vZGUocHJpdik7XFxuIFxcbkBAIC0zNzUwLDYgKzM3NDcsOSBAQCBzdGF0aWMgaW50IHN0bW1hY19od19zZXR1cChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHQvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovXFxuIFxcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xcbiBcXG4rXFx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cXG4rXFx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cXHUwMDNlaW9hZGRyLCB0cnVlKTtcXG4rXFxuIFxcdHBoeWxpbmtfcnhfY2xrX3N0b3BfYmxvY2socHJpdi1cXHUwMDNlcGh5bGluayk7XFxuIFxcdHN0bW1hY19zZXRfaHdfdmxhbl9tb2RlKHByaXYsIHByaXYtXFx1MDAzZWh3KTtcXG4gXFx0cGh5bGlua19yeF9jbGtfc3RvcF91bmJsb2NrKHByaXYtXFx1MDAzZXBoeWxpbmspO1xcbkBAIC03MTA5LDE1ICs3MTA5LDE1IEBAIHZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xcbiBcXHRzdG1tYWNfZnJlZV9pcnEoZGV2LCBSRVFfSVJRX0VSUl9BTEwsIDApO1xcbiBcXG4rXFx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuK1xcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgZmFsc2UpO1xcbitcXG4gXFx0LyogU3RvcCBUWC9SWCBETUEgY2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0b3BfYWxsX2RtYShwcml2KTtcXG4gXFxuIFxcdC8qIFJlbGVhc2UgYW5kIGZyZWUgdGhlIFJ4L1R4IHJlc291cmNlcyAqL1xcbiBcXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcXHUwMDI2cHJpdi1cXHUwMDNlZG1hX2NvbmYpO1xcbiBcXG4tXFx0LyogRGlzYWJsZSB0aGUgTUFDIFJ4L1R4ICovXFxuLVxcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXFx1MDAzZWlvYWRkciwgZmFsc2UpO1xcbi1cXG4gXFx0Lyogc2V0IHRyYW5zX3N0YXJ0IHNvIHdlIGRvbid0IGdldCBzcHVyaW91c1xcbiBcXHQgKiB3YXRjaGRvZ3MgZHVyaW5nIHJlc2V0XFxuIFxcdCAqL1xcbkBAIC03MTg5LDEyICs3MTg5LDEyIEBAIGludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0XFx0aHJ0aW1lcl9zZXR1cChcXHUwMDI2dHhfcS1cXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xcbiBcXHR9XFxuIFxcbi1cXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xcbi1cXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIHRydWUpO1xcbi1cXG4gXFx0LyogU3RhcnQgUnggXFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cXG4gXFx0c3RtbWFjX3N0YXJ0X2FsbF9kbWEocHJpdik7XFxuIFxcbitcXHQvKiBFbmFibGUgdGhlIE1BQyBSeC9UeCAqL1xcbitcXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVxcdTAwM2Vpb2FkZHIsIHRydWUpO1xcbitcXG4gXFx0cmV0ID0gc3RtbWFjX3JlcXVlc3RfaXJxKGRldik7XFxuIFxcdGlmIChyZXQpXFxuIFxcdFxcdGdvdG8gaXJxX2Vycm9yO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo0OC4wNzcyNjEwMzdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NDA0NTUwMjY3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfc2V0X3Byb2dcIixcbiAgICBcInN0bW1hY19yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDYwNDRmNzg2NDA5MzU3NDhjMThmYTdhN2Y3NGE4MmE0ZTU0ZGM2ZTFcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAxNzoxNTo0NSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5pbmRleCAzNTkxNzU1ZWEzMGJlNS4uOTI4NjRkN2RmZmQ5N2EgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG4rKysgYi9kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXG5AQCAtMzY5Miw5ICszNjkyLDYgQEAgc3RhdGljIGludCBzdG1tYWNfaHdfc2V0dXAoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdFx0cHJpdi1cdTAwM2Vody1cdTAwM2VyeF9jc3VtID0gMDtcbiBcdH1cbiBcbi1cdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4tXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4tXG4gXHQvKiBTZXQgdGhlIEhXIERNQSBtb2RlIGFuZCB0aGUgQ09FICovXG4gXHRzdG1tYWNfZG1hX29wZXJhdGlvbl9tb2RlKHByaXYpO1xuIFxuQEAgLTM3NTAsNiArMzc0Nyw5IEBAIHN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHQvKiBTdGFydCB0aGUgYmFsbCByb2xsaW5nLi4uICovXG4gXHRzdG1tYWNfc3RhcnRfYWxsX2RtYShwcml2KTtcbiBcbitcdC8qIEVuYWJsZSB0aGUgTUFDIFJ4L1R4ICovXG4rXHRzdG1tYWNfbWFjX3NldChwcml2LCBwcml2LVx1MDAzZWlvYWRkciwgdHJ1ZSk7XG4rXG4gXHRwaHlsaW5rX3J4X2Nsa19zdG9wX2Jsb2NrKHByaXYtXHUwMDNlcGh5bGluayk7XG4gXHRzdG1tYWNfc2V0X2h3X3ZsYW5fbW9kZShwcml2LCBwcml2LVx1MDAzZWh3KTtcbiBcdHBoeWxpbmtfcnhfY2xrX3N0b3BfdW5ibG9jayhwcml2LVx1MDAzZXBoeWxpbmspO1xuQEAgLTcxMDksMTUgKzcxMDksMTUgQEAgdm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdC8qIEZyZWUgdGhlIElSUSBsaW5lcyAqL1xuIFx0c3RtbWFjX2ZyZWVfaXJxKGRldiwgUkVRX0lSUV9FUlJfQUxMLCAwKTtcbiBcbitcdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuK1x0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbitcbiBcdC8qIFN0b3AgVFgvUlggRE1BIGNoYW5uZWxzICovXG4gXHRzdG1tYWNfc3RvcF9hbGxfZG1hKHByaXYpO1xuIFxuIFx0LyogUmVsZWFzZSBhbmQgZnJlZSB0aGUgUngvVHggcmVzb3VyY2VzICovXG4gXHRmcmVlX2RtYV9kZXNjX3Jlc291cmNlcyhwcml2LCBcdTAwMjZwcml2LVx1MDAzZWRtYV9jb25mKTtcbiBcbi1cdC8qIERpc2FibGUgdGhlIE1BQyBSeC9UeCAqL1xuLVx0c3RtbWFjX21hY19zZXQocHJpdiwgcHJpdi1cdTAwM2Vpb2FkZHIsIGZhbHNlKTtcbi1cbiBcdC8qIHNldCB0cmFuc19zdGFydCBzbyB3ZSBkb24ndCBnZXQgc3B1cmlvdXNcbiBcdCAqIHdhdGNoZG9ncyBkdXJpbmcgcmVzZXRcbiBcdCAqL1xuQEAgLTcxODksMTIgKzcxODksMTIgQEAgaW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0XHRocnRpbWVyX3NldHVwKFx1MDAyNnR4X3EtXHUwMDNldHh0aW1lciwgc3RtbWFjX3R4X3RpbWVyLCBDTE9DS19NT05PVE9OSUMsIEhSVElNRVJfTU9ERV9SRUwpO1xuIFx0fVxuIFxuLVx0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbi1cdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbi1cbiBcdC8qIFN0YXJ0IFJ4IFx1MDAyNiBUeCBETUEgQ2hhbm5lbHMgKi9cbiBcdHN0bW1hY19zdGFydF9hbGxfZG1hKHByaXYpO1xuIFxuK1x0LyogRW5hYmxlIHRoZSBNQUMgUngvVHggKi9cbitcdHN0bW1hY19tYWNfc2V0KHByaXYsIHByaXYtXHUwMDNlaW9hZGRyLCB0cnVlKTtcbitcbiBcdHJldCA9IHN0bW1hY19yZXF1ZXN0X2lycShkZXYpO1xuIFx0aWYgKHJldClcbiBcdFx0Z290byBpcnFfZXJyb3I7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo0OC4wNzcyNjM0MTdaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTY1NDI5NjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIERyaXZlciBQYXRjaDogU1RNTUFDIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY2AuIEltbWVkaWF0ZWx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGNvcmUgb2YgdGhlIFNUTWljcm9lbGVjdHJvbmljcyBFdGhlcm5ldCBNQUMgZHJpdmVyLiBJdCBsb29rcyBsaWtlIHRoZXkncmUgcmVhcnJhbmdpbmcgdGhlIGluaXRpYWxpemF0aW9uL3RlYXJkb3duIHNlcXVlbmNlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHRoZSBjYWxscyB0byBgc3RtbWFjX21hY19zZXRgIGFuZCBgc3RtbWFjX3N0YXJ0X2FsbF9kbWFgIC8gYHN0bW1hY19zdG9wX2FsbF9kbWFgLiBUaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm90IGp1c3QgYSBjb3NtZXRpYyBvbmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5J3JlIGRvaW5nIHRoaXM7IHRoZXJlJ3MgdXN1YWxseSBhIGdvb2QgcmVhc29uIGZvciBmaWRkbGluZyB3aXRoIGRyaXZlciBpbml0aWFsaXphdGlvbi5cblxuU2luY2Ugd2UncmUgZGVhbGluZyB3aXRoIGFuIFNUTWljcm9lbGVjdHJvbmljcyBNQUMsIEknbSB0aGlua2luZyBlbWJlZGRlZCBzeXN0ZW1zLCBsaWtlbHkgQVJNLWJhc2VkIFNvQ3MsIGJ1dCBsZXQncyBub3QgbWFrZSBhc3N1bXB0aW9ucy4gSSB3b25kZXIgYWJvdXQgZnV6emluZyBwb3NzaWJpbGl0aWVzLiBDYW4gSSBnZXQgdGhpcyBydW5uaW5nIGFuZCB0ZXN0ZWQgd2l0aGluIFFFTVU/IFRoYXQncyBhbHdheXMgbXkgcHJlZmVycmVkIG1ldGhvZCBmb3IgaXNvbGF0aW5nIHRoZXNlIGtpbmRzIG9mIGNoYW5nZXMuIFRoZSBTVE1NQUMgaXMgb2Z0ZW4gdXNlZCBvbiBlbWJlZGRlZCBzeXN0ZW1zLCBidXQgSSBzaG91bGQgY2hlY2sgaWYgaXQncyBhIFBDSSBkZXZpY2Ugb3IgYSBwbGF0Zm9ybSBkZXZpY2UuIFdhaXQgYSBtaW51dGUsIG1lbW9yeSBqb2dnZWQsIGBzdG1tYWNgIGFjdHVhbGx5IGhhcyBQQ0kgYmluZGluZ3MgYXMgd2VsbCwganVkZ2luZyBieSB0aGUgYHN0bW1hY19wY2kuY2AgZmlsZSEgTm93IEkgbmVlZCB0byBkaXZlIGRlZXBlciBpbnRvIHRoZSBgZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvYCBkaXJlY3RvcnkgdG8gc2VlIHRoZSBzY29wZSBvZiB0aGlzIGRyaXZlci4gR290dGEgdW5kZXJzdGFuZCB0aGUgZGlmZmVyZW50IHBvc3NpYmxlIGhhcmR3YXJlIGNvbmZpZ3VyYXRpb25zIGl0IHN1cHBvcnRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjkyLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTU6NTMuMDQyNjk2NDA0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiY29kZXNlYXJjaC1kaXItaW5kZXgiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjQ4MzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJEaXJcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRmlsZXNcIjogW1xuICAgIFwiY2hhaW5fbW9kZS5jXCIsXG4gICAgXCJjb21tb24uaFwiLFxuICAgIFwiZGVzY3MuaFwiLFxuICAgIFwiZGVzY3NfY29tLmhcIixcbiAgICBcImR3bWFjLWFuYXJpb24uY1wiLFxuICAgIFwiZHdtYWMtZHdjLXFvcy1ldGguY1wiLFxuICAgIFwiZHdtYWMtZWljNzcwMC5jXCIsXG4gICAgXCJkd21hYy1nZW5lcmljLmNcIixcbiAgICBcImR3bWFjLWlteC5jXCIsXG4gICAgXCJkd21hYy1pbmdlbmljLmNcIixcbiAgICBcImR3bWFjLWludGVsLXBsYXQuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuY1wiLFxuICAgIFwiZHdtYWMtaW50ZWwuaFwiLFxuICAgIFwiZHdtYWMtaXBxODA2eC5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3Nvbi5jXCIsXG4gICAgXCJkd21hYy1sb29uZ3NvbjEuY1wiLFxuICAgIFwiZHdtYWMtbHBjMTh4eC5jXCIsXG4gICAgXCJkd21hYy1tZWRpYXRlay5jXCIsXG4gICAgXCJkd21hYy1tZXNvbi5jXCIsXG4gICAgXCJkd21hYy1tZXNvbjhiLmNcIixcbiAgICBcImR3bWFjLW1vdG9yY29tbS5jXCIsXG4gICAgXCJkd21hYy1udXZvdG9uLmNcIixcbiAgICBcImR3bWFjLXFjb20tZXRocW9zLmNcIixcbiAgICBcImR3bWFjLXJlbmVzYXMtZ2JldGguY1wiLFxuICAgIFwiZHdtYWMtcmsuY1wiLFxuICAgIFwiZHdtYWMtcnpuMS5jXCIsXG4gICAgXCJkd21hYy1zMzIuY1wiLFxuICAgIFwiZHdtYWMtc29jZnBnYS5jXCIsXG4gICAgXCJkd21hYy1zb3BoZ28uY1wiLFxuICAgIFwiZHdtYWMtc3BhY2VtaXQuY1wiLFxuICAgIFwiZHdtYWMtc3RhcmZpdmUuY1wiLFxuICAgIFwiZHdtYWMtc3RpLmNcIixcbiAgICBcImR3bWFjLXN0bTMyLmNcIixcbiAgICBcImR3bWFjLXN1bjU1aS5jXCIsXG4gICAgXCJkd21hYy1zdW44aS5jXCIsXG4gICAgXCJkd21hYy1zdW54aS5jXCIsXG4gICAgXCJkd21hYy10ZWdyYS5jXCIsXG4gICAgXCJkd21hYy10aGVhZC5jXCIsXG4gICAgXCJkd21hYy12aXNjb250aS5jXCIsXG4gICAgXCJkd21hYzEwMC5oXCIsXG4gICAgXCJkd21hYzEwMDAuaFwiLFxuICAgIFwiZHdtYWMxMDAwX2NvcmUuY1wiLFxuICAgIFwiZHdtYWMxMDAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzEwMF9jb3JlLmNcIixcbiAgICBcImR3bWFjMTAwX2RtYS5jXCIsXG4gICAgXCJkd21hYzQuaFwiLFxuICAgIFwiZHdtYWM0X2NvcmUuY1wiLFxuICAgIFwiZHdtYWM0X2Rlc2NzLmNcIixcbiAgICBcImR3bWFjNF9kZXNjcy5oXCIsXG4gICAgXCJkd21hYzRfZG1hLmNcIixcbiAgICBcImR3bWFjNF9kbWEuaFwiLFxuICAgIFwiZHdtYWM0X2xpYi5jXCIsXG4gICAgXCJkd21hYzUuY1wiLFxuICAgIFwiZHdtYWM1LmhcIixcbiAgICBcImR3bWFjX2RtYS5oXCIsXG4gICAgXCJkd21hY19saWIuY1wiLFxuICAgIFwiZHd4Z21hYzIuaFwiLFxuICAgIFwiZHd4Z21hYzJfY29yZS5jXCIsXG4gICAgXCJkd3hnbWFjMl9kZXNjcy5jXCIsXG4gICAgXCJkd3hnbWFjMl9kbWEuY1wiLFxuICAgIFwiZHd4bGdtYWMyLmhcIixcbiAgICBcImVuaF9kZXNjLmNcIixcbiAgICBcImh3aWYuY1wiLFxuICAgIFwiaHdpZi5oXCIsXG4gICAgXCJtbWMuaFwiLFxuICAgIFwibW1jX2NvcmUuY1wiLFxuICAgIFwibm9ybV9kZXNjLmNcIixcbiAgICBcInJpbmdfbW9kZS5jXCIsXG4gICAgXCJzdG1tYWMuaFwiLFxuICAgIFwic3RtbWFjX2VzdC5jXCIsXG4gICAgXCJzdG1tYWNfZXN0LmhcIixcbiAgICBcInN0bW1hY19ldGh0b29sLmNcIixcbiAgICBcInN0bW1hY19mcGUuY1wiLFxuICAgIFwic3RtbWFjX2ZwZS5oXCIsXG4gICAgXCJzdG1tYWNfaHd0c3RhbXAuY1wiLFxuICAgIFwic3RtbWFjX2xpYnBjaS5jXCIsXG4gICAgXCJzdG1tYWNfbGlicGNpLmhcIixcbiAgICBcInN0bW1hY19tYWluLmNcIixcbiAgICBcInN0bW1hY19tZGlvLmNcIixcbiAgICBcInN0bW1hY19wY2kuY1wiLFxuICAgIFwic3RtbWFjX3Bjcy5jXCIsXG4gICAgXCJzdG1tYWNfcGNzLmhcIixcbiAgICBcInN0bW1hY19wbGF0Zm9ybS5jXCIsXG4gICAgXCJzdG1tYWNfcGxhdGZvcm0uaFwiLFxuICAgIFwic3RtbWFjX3B0cC5jXCIsXG4gICAgXCJzdG1tYWNfcHRwLmhcIixcbiAgICBcInN0bW1hY19zZWxmdGVzdHMuY1wiLFxuICAgIFwic3RtbWFjX3RjLmNcIixcbiAgICBcInN0bW1hY192bGFuLmNcIixcbiAgICBcInN0bW1hY192bGFuLmhcIixcbiAgICBcInN0bW1hY194ZHAuY1wiLFxuICAgIFwic3RtbWFjX3hkcC5oXCJcbiAgXSxcbiAgXCJTdWJkaXJzXCI6IG51bGxcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE1OjUzLjA0Mjg2MzE4NFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NDQyMDE5MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBOZXR3b3JrIERldmljZXMgaW4gUUVNVSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIG5ldHdvcmsgZHJpdmVyIGZpbGVzOiBgc3RtbWFjX3BjaS5jYCwgYGR3bWFjLWludGVsLmNgLCBhbmQgYGR3bWFjLWludGVsLXBsYXQuY2AuIFRoZSBjaGFsbGVuZ2UsIGFzIGFsd2F5cywgaXMgZ2V0dGluZyB0aGVzZSB0aGluZ3MgdGVzdGVkIGVmZmVjdGl2ZWx5LiBNeSBmaXJzdCB0aG91Z2h0IGlzIHdoZXRoZXIgUUVNVSBvZmZlcnMgYSBuYXRpdmUgZW11bGF0aW9uIGZvciB0aGVzZSwgYnV0IEknbSBwcmV0dHkgc3VyZSBpdCBkb2Vzbid0LiBJZiBub3QsIGNhbiBJIGxldmVyYWdlIHRoZSB2aXJ0dWFsaXplZCBQQ0kgb3IgcGxhdGZvcm0gZGV2aWNlcyB3aXRoaW4gUUVNVSB0byBmdXp6IHRoZSB0YXJnZXQ/IFRoZSBjcml0aWNhbCBwYXJ0IGlzIHdoZXRoZXIgc3l6a2FsbGVyIGhhcyB0aGUgcmlnaHQgZGVzY3JpcHRpb25zIGZvciB0aGVzZSBkZXZpY2VzLiBTcGVjaWZpY2FsbHksIEkgbmVlZCB0byBrbm93IGlmIHN5emthbGxlciBoYXMgc3VwcG9ydCBmb3IgYHN0bW1hY2Agd2hpY2ggY291bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBMZXQgbWUgY2hlY2sgdGhlIHN5emthbGxlciBkb2N1bWVudGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MjMxLCJPdXRwdXRUb2tlbnMiOjI1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE1OjU2LjQ4NzA2Nzc4OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NDI4NzI2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvY29yZS9zZWxmdGVzdHMuYy0zLSAqIENvcHlyaWdodCAoYykgMjAxOSBTeW5vcHN5cywgSW5jLiBhbmQvb3IgaXRzIGFmZmlsaWF0ZXMuXFxubmV0L2NvcmUvc2VsZnRlc3RzLmM6NDogKiBzdG1tYWMgU2VsZnRlc3RzIFN1cHBvcnRcXG5uZXQvY29yZS9zZWxmdGVzdHMuYy01LSAqXFxuLS1cXG5uZXQvY29yZS9zZWxmdGVzdHMuYy03LSAqXFxubmV0L2NvcmUvc2VsZnRlc3RzLmM6ODogKiBQb3J0ZWQgZnJvbSBzdG1tYWMgYnk6XFxubmV0L2NvcmUvc2VsZnRlc3RzLmMtOS0gKiBDb3B5cmlnaHQgKEMpIDIwMjEgT2xla3NpaiBSZW1wZWwgXFx1MDAzY28ucmVtcGVsQHBlbmd1dHJvbml4LmRlXFx1MDAzZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNTo1Ni41ODEzNjUxNzdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjM0MDI0NjkwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU3RtbWFjIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IHRoZSBiZXN0IHdheSB0byBmdXp6IHRoZSBzdG1tYWMgZHJpdmVyLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRvIHF1aWNrbHkgY2hlY2sgaWYgc3l6a2FsbGVyIGFscmVhZHkgaGFzIGV4aXN0aW5nIGRlc2NyaXB0aW9ucyBzcGVjaWZpY2FsbHkgZm9yIGl0LiBUaGF0IHdvdWxkIGJlIGlkZWFsLiBBaCwgYnV0IHdhaXQsIEkgY2FuJ3QgZGlyZWN0bHkgcXVlcnkgc3l6a2FsbGVyJ3MgZGVzY3JpcHRpb25zIGluIHRoYXQgbWFubmVyLCBJIG5lZWQgdG8gdGFrZSBhIHNsaWdodGx5IGRpZmZlcmVudCBhcHByb2FjaC4gSSByZWNhbGwgUUVNVSBkb2Vzbid0IGVtdWxhdGUgc3RtbWFjLCBhIHBvdGVudGlhbCByb2FkYmxvY2suIEhvd2V2ZXIsIGlmIGl0J3MgYSBQQ0kgZGV2aWNlLCB0aGVuIHN5emthbGxlcidzIGBzeXpfcGNpX3NldHVwYCBzaG91bGQgYmUgYXBwbGljYWJsZS4gVGhlIGNvcmUgcXVlc3Rpb24gaXM6IGlzIHRoaXMgYSBQQ0kgZGV2aWNlPyBJIG5lZWQgdG8gbG9vayBpbnRvIGBzdG1tYWNfcGNpLmNgLiBJJ2xsIHNjYW4gdGhhdCBzb3VyY2UgZmlsZSB0byBpZGVudGlmeSB3aGljaCBQQ0kgSURzIGl0IGFjdHVhbGx5IGJpbmRzIHRvLiBUaGF0IHdpbGwgZ2l2ZSBtZSB0aGUgaW5mb3JtYXRpb24gSSBuZWVkIHRvIGRldGVybWluZSBpZiBpdCdzIGZ1enphYmxlIHZpYSB0aGUgc3RhbmRhcmQgUENJLWJhc2VkIHN5emthbGxlciBhcHByb2FjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDY3NCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjowMC44MTUzOTE3ODdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI0OTIyOTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiUENJX0RFVklDRV9JRFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfcGNpLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jPTE5Mj1zdGF0aWMgdm9pZCBzdG1tYWNfcGNpX3JlbW92ZShzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYy0xOTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jOjIwMDojZGVmaW5lIFBDSV9ERVZJQ0VfSURfU1RNTUFDX1NUTU1BQ1xcdFxcdDB4MTEwOFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wY2kuYzoyMDE6I2RlZmluZSBQQ0lfREVWSUNFX0lEX1NZTk9QU1lTX0dNQUM1X0lEXFx0XFx0MHg3MTAyXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BjaS5jLTIwMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MDAuODc3ODk1Mjk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQzMjMzMzE1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0dGFjayBTdXJmYWNlOiBBIFBDSS1CYXNlZCBTVE1NQUMgRHJpdmVyKipcblxuT2theSwgc28gdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHdoaWNoIGltbWVkaWF0ZWx5IG9wZW5zIHVwIHRoZSBwb3NzaWJpbGl0eSBvZiBmdXp6aW5nIGl0IHdpdGggc3l6a2FsbGVyIHRocm91Z2ggYHN5el9wY2lfc2V0dXBgLiBJZiB0aGVyZSdzIGEgc3BlY2lhbGl6ZWQgYHN5el9wY2lfc2V0dXBfc3RtbWFjYCBvciBldmVuIGp1c3QgYSBnZW5lcmljIFBDSSBzZXR1cCwgdGhhdCdzIGlkZWFsLiBCdXQgd2FpdCwgSSBuZWVkIHRvIGRpZyBkZWVwZXIuIFRoZSBwYXRjaCB0b3VjaGVzIGBzdG1tYWNfaHdfc2V0dXBgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBUaGF0J3MgaW50ZXJlc3RpbmcuIGBzdG1tYWNfaHdfc2V0dXBgIGlzIGNsZWFybHkgcGFydCBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcywgY2FsbGVkIGR1cmluZyBgc3RtbWFjX29wZW5gLCB3aGljaCBtYXBzIHRvIHRoZSBuZXR3b3JrIGRyaXZlcidzIGBuZG9fb3BlbmAgZnVuY3Rpb24uIENhbiB3ZSB0cmlnZ2VyIHRoYXQ/IEFic29sdXRlbHksIGp1c3QgYnkgYnJpbmdpbmcgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHVwLlxuXG5BbmQgdGhlIFhEUCBmdW5jdGlvbnMg4oCTIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFuZCBgc3RtbWFjX3hkcF9vcGVuYCDigJMgdGhvc2UgYXJlIHRyaWdnZXJlZCB3aGVuIHdlIGNvbmZpZ3VyZSBYRFAuIFNvLCB3ZSd2ZSBnb3QgdHdvIGNsZWFyIHBhdGhzIHRvIGNvZGUgZXhlY3V0aW9uOiBicmluZ2luZyB1cCB0aGUgaW50ZXJmYWNlIGFuZCBhdHRhY2hpbmcgYW4gWERQIHByb2dyYW0uIFRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIHRoZSBtb3JlIEkgc2VlIGhvdyBzeXprYWxsZXIgY2FuIHJlYWxseSBzaGluZSBoZXJlLiBXaXRoIHRoZSBQQ0kgZGV2aWNlIHNldHVwIHZpYSBgc3l6X3BjaV9zZXR1cGAsIHdlIGNhbiBpbmplY3QgaXQgYW5kIHRoZW4gaW50ZXJhY3QgZGlyZWN0bHkgd2l0aCB0aGUgbmV0d29yayBkZXZpY2UuIFRoaXMgaXMgZ3JlYXQsIGFuZCBhIGdvb2QgZXhhbXBsZSBvZiB0aGUgYXR0YWNrIHN1cmZhY2UuIE5vdywgYmVmb3JlIEkgZ2V0IHRvbyBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBjaGVjayBpZiBgc3RtbWFjX3BjaS5jYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQgb3Igd2hhdCBzcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkLiBUaGF0J3MgdGhlIG5leHQgc3RlcCwgbWFrZSBzdXJlIGl0J3MgZXZlbiBleHBvc2VkIGF0IHRoaXMgcG9pbnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDcsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MDYuMzEwMjMxMTU0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzkxMDI3ODgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNUTU1BQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjI6Y29uZmlnIFNUTU1BQ19FVEhcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlNUTWljcm9lbGVjdHJvbmljcyBNdWx0aS1HaWdhYml0IEV0aGVybmV0IGRyaXZlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWc9MTg9aWYgU1RNTUFDX0VUSFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMTktXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyMDpjb25maWcgU1RNTUFDX1NFTEZURVNUU1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjEtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgU1RNTUFDIFNlbGZ0ZXN0c1xcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMjgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZzoyOTpjb25maWcgU1RNTUFDX1BMQVRGT1JNXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZy0zMC1cXHR0cmlzdGF0ZSBcXFwiU1RNTUFDIFBsYXRmb3JtIGJ1cyBzdXBwb3J0XFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZz0zNzE9ZW5kaWYgIyBTVE1NQUNfUExBVEZPUk1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTM3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjM3Mzpjb25maWcgU1RNTUFDX0xJQlBDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctMzc0LVxcdHRyaXN0YXRlXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnPTM5OD1jb25maWcgRFdNQUNfTU9UT1JDT01NXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnLTQwNi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9LY29uZmlnOjQwNzpjb25maWcgU1RNTUFDX1BDSVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWctNDA4LVxcdHRyaXN0YXRlIFxcXCJTVE1NQUMgUENJIGJ1cyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjowNi40NDkzNDAwNTJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMzOTEwMDg2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIFNUTTMyIEV0aGVybmV0IERyaXZlciBDb25maWd1cmF0aW9uKipcblxuUmlnaHQsIHNvIEknbSBjb25maWd1cmluZyB0aGUgbmV0d29yayBkcml2ZXIgZm9yIHRoaXMgU1RNMzIgcHJvamVjdC4gSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIEV0aGVybmV0IGNvbnRyb2xsZXIgYXJjaGl0ZWN0dXJlLCBhbmQgZnJvbSB0aGUgY29udGV4dCwgSSBzZWUgdGhhdCBJJ2xsIGRlZmluaXRlbHkgbmVlZCBib3RoIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLiBOb3csIEkgd2FudCB0byBtYWtlIHN1cmUgSSd2ZSBnb3QgZXZlcnl0aGluZyBsaW5lZCB1cCBjb3JyZWN0bHkuIFRoZSBxdWVzdGlvbiBpcywgd2hhdCBvdGhlciBiaXRzIGFuZCBwaWVjZXMgZG9lcyB0aGF0IGBTVE1NQUNfUENJYCBvcHRpb24gcmVseSBvbj8gSSBuZWVkIHRvIGNoZWNrIGl0cyBkZXBlbmRlbmNpZXMgdGhvcm91Z2hseS4gR290dGEgZW5zdXJlIEknbSBlbmFibGluZyBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIHRoaXMgUENJIGludGVyZmFjZSBmdW5jdGlvbiBhcyBleHBlY3RlZC4gSSdsbCBzdGFydCBieSBkaXZpbmcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgZm9yIGBTVE1NQUNfUENJYCByaWdodCBhd2F5LlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDE0LCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MDkuNzg4NDQzNDk5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3OTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDAwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNDAwOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuIDQwMTpcXHRcXHRzZWxlY3QgTU9UT1JDT01NX1BIWVxcbiA0MDI6XFx0XFx0c2VsZWN0IFNUTU1BQ19MSUJQQ0lcXG4gNDAzOlxcdFxcdGhlbHBcXG4gNDA0OlxcdFxcdCAgVGhpcyBlbmFibGVzIGdsdWUgZHJpdmVyIGZvciBNb3RvcmNvbW0gRFdNQUMtYmFzZWQgUENJIEV0aGVybmV0XFxuIDQwNTpcXHRcXHQgIGNvbnRyb2xsZXJzLiBDdXJyZW50bHkgb25seSBZVDY4MDEgaXMgc3VwcG9ydGVkLlxcbiA0MDY6XFx0XFxuIDQwNzpcXHRjb25maWcgU1RNTUFDX1BDSVxcbiA0MDg6XFx0XFx0dHJpc3RhdGUgXFxcIlNUTU1BQyBQQ0kgYnVzIHN1cHBvcnRcXFwiXFxuIDQwOTpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiA0MTA6XFx0XFx0ZGVwZW5kcyBvbiBDT01NT05fQ0xLXFxuIDQxMTpcXHRcXHRzZWxlY3QgU1RNTUFDX0xJQlBDSVxcbiA0MTI6XFx0XFx0aGVscFxcbiA0MTM6XFx0XFx0ICBUaGlzIHNlbGVjdHMgdGhlIHBsYXRmb3JtIHNwZWNpZmljIGJ1cyBzdXBwb3J0IGZvciB0aGUgc3RtbWFjIGRyaXZlci5cXG4gNDE0OlxcdFxcdCAgVGhpcyBkcml2ZXIgd2FzIHRlc3RlZCBvbiBYTElOWCBYQzJWMzAwMCBGRjExNTJBTVQwMjIxXFxuIDQxNTpcXHRcXHQgIEQxMjE1OTk0QSBWSVJURVggRlBHQSBib2FyZCBhbmQgU05QUyBRb1MgSVBLIFByb3RvdHlwaW5nIEtpdC5cXG4gNDE2OlxcdFxcbiA0MTc6XFx0XFx0ICBJZiB5b3UgaGF2ZSBhIGNvbnRyb2xsZXIgd2l0aCB0aGlzIGludGVyZmFjZSwgc2F5IFkgb3IgTSBoZXJlLlxcbiA0MTg6XFx0XFxuIDQxOTpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IE4uXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjA5Ljc4ODU0Mjk1OVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTY1Njg3OTYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKkRlcGVuZGVuY3kgSW5xdWlyeSoqXG5cbkFscmlnaHQsIGxldCdzIHNlZS4gSSdtIG5vdGluZyBkb3duIHRoYXQgYm90aCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBhcmUgZXNzZW50aWFsLiBHb29kLiBCdXQgaG9sZCBvbiBhIHNlY29uZC4uLiBhIGtleSBjb25zaWRlcmF0aW9uIGp1c3QgcG9wcGVkIGludG8gbXkgaGVhZC4gSSBuZWVkIHRvIGJlIG1vcmUgcHJlY2lzZSBoZXJlLiBJIGtub3cgYFNUTU1BQ19FVEhgIGlzIGltcG9ydGFudCwgYnV0IGJlZm9yZSBJIHByb2NlZWQsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBkZXBlbmRlbmNpZXMuIFdoYXQgZXhhY3RseSBkb2VzIGBTVE1NQUNfRVRIYCByZWx5IG9uPyBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMgdGhhdCBJIG5lZWQgdG8gY29uZmlybSBhcmUgYWxzbyBlbmFibGVkIG9yIHNhdGlzZmllZD8gVGhhdCdzIHRoZSBjcml0aWNhbCBxdWVzdGlvbiBub3cuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBlbmFibGluZyBjb25kaXRpb25zIG9mIGBTVE1NQUNfRVRIYCwgYW5kIHRoZW4gSSBjYW4gZWZmZWN0aXZlbHkgbW92ZSBmb3J3YXJkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTkxLCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjoxMy4zNTQyMzM2ODJaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTg1NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbiAgIDI6XFx0Y29uZmlnIFNUTU1BQ19FVEhcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJTVE1pY3JvZWxlY3Ryb25pY3MgTXVsdGktR2lnYWJpdCBFdGhlcm5ldCBkcml2ZXJcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT01FTSBcXHUwMDI2XFx1MDAyNiBIQVNfRE1BXFxuICAgNTpcXHRcXHRkZXBlbmRzIG9uIFBUUF8xNTg4X0NMT0NLX09QVElPTkFMXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIEVUSFRPT0xfTkVUTElOS1xcbiAgIDc6XFx0XFx0c2VsZWN0IE1JSVxcbiAgIDg6XFx0XFx0c2VsZWN0IFBDU19YUENTXFxuICAgOTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuICAxMDpcXHRcXHRzZWxlY3QgUEhZTElOS1xcbiAgMTE6XFx0XFx0c2VsZWN0IENSQzMyXFxuICAxMjpcXHRcXHRzZWxlY3QgUkVTRVRfQ09OVFJPTExFUlxcbiAgMTM6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuICAxNDpcXHRcXHRoZWxwXFxuICAxNTpcXHRcXHQgIFRoaXMgaXMgdGhlIGRyaXZlciBmb3IgdGhlIEV0aGVybmV0IElQcyBidWlsdCBhcm91bmQgYVxcbiAgMTY6XFx0XFx0ICBTeW5vcHN5cyBJUCBDb3JlLlxcbiAgMTc6XFx0XFxuICAxODpcXHRpZiBTVE1NQUNfRVRIXFxuICAxOTpcXHRcXG4gIDIwOlxcdGNvbmZpZyBTVE1NQUNfU0VMRlRFU1RTXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjEzLjM1NDMzMzgyMloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NDkxOTEwNjExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNUTU1BQyBEcml2ZXIgZm9yIEZ1enppbmcqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIEZyb20gd2hhdCBJIHNlZSwgYFNUTU1BQ19FVEhgIGhpbmdlcyBvbiBhIGZldyBkZXBlbmRlbmNpZXMsIG5hbWVseSBgSEFTX0lPTUVNYCwgYEhBU19ETUFgLCBgUFRQXzE1ODhfQ0xPQ0tfT1BUSU9OQUxgLCBhbmQgYEVUSFRPT0xfTkVUTElOS2AuIFRoYXQgbWVhbnMgYFNUTU1BQ19FVEhgIG9yIGBTVE1NQUNfUENJYCBzaG91bGQgYmUgZW5vdWdoIHRvIGdldCB0aGUgY29yZSBmdW5jdGlvbmFsaXR5LiBJIG5lZWQgdG8gbWFrZSBzdXJlIGBzdG1tYWNgIGlzIHdlbGwtY292ZXJlZCBieSBzeXprYWxsZXIuXG5cbkhtbSwgZG9lcyBzeXprYWxsZXIgaGF2ZSBleHBsaWNpdCBkZXNjcmlwdGlvbnMgZm9yIGBzdG1tYWNgPyBJIGNhbid0IGxvb2sgYXQgc3l6a2FsbGVyIGRpcmVjdGx5IGJ1dCBJIGNhbiBsb29rIGF0IHRoZSBkcml2ZXIgY29kZSBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgaW9jdGxzIHRoYXQgd291bGQgcHJvdmlkZSBhIGhvb2suXG5cblRoZSBwYXRjaCBJJ20gbG9va2luZyBhdCBtb2RpZmllcyBgc3RtbWFjX2h3X3NldHVwYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCBgc3RtbWFjX3hkcF9vcGVuYC4gSW50ZXJlc3RpbmcuIFRoZXNlIGFyZSBhbGwgaW52b2tlZCB0aHJvdWdoIHN0YW5kYXJkIG5ldGRldiBvcGVyYXRpb25zIGxpa2UgYG5kb19vcGVuYCBhbmQgYG5kb19icGZgLiBUaGF0J3MgZ29vZC4gV2hpY2ggbWVhbnMgc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIGdldCBhdCB0aG9zZSBmdW5jdGlvbnMgaWYgdGhlIGRldmljZSBpcyBpbml0aWFsaXplZC5cblxuU2luY2UgdGhpcyBpcyBhIFBDSSBkZXZpY2UsIHN5emthbGxlcidzIGBzeXpfcGNpX3NldHVwYCBjYW4gbGlrZWx5IGluaXRpYWxpemUgaXQuIElmIG5vdCwgaXQgY2FuIHVzZSBwbGF0Zm9ybSBkZXZpY2VzLCBpZiBzeXprYWxsZXIgaGFzIGRlc2NyaXB0aW9ucyBmb3IgdGhhdCwgYnV0IHN5emthbGxlciBoYXMgYSBnZW5lcmljIFBDSSBmdXp6ZXIsIHNvIGl0IHNob3VsZCBiZSBhYmxlIHRvIGJpbmQgdG8gdGhlIGFwcHJvcHJpYXRlIFBDSSBJRHMuXG5cbldhaXQuLi50aGUgY29tbWl0IG1lc3NhZ2Ugc2F5cyBcIkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcIi4gVGhhdCdzIGEgZ29vZCBzaWduISBJdCBsaWtlbHkgbWVhbnMgc3l6a2FsbGVyICpkaWQqIGZpbmQgYSBidWcgaGVyZSwgYW5kIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGl0LiBTbywgdGhhdCBtZWFucyBpdCdzIGRlZmluaXRlbHkgcmVhY2hhYmxlLiBEZWZpbml0ZWx5IHdvcnRoIGZ1enppbmchXG5cbk9rYXksIHRpbWUgdG8gY2hlY2sgb3V0IHRoZSBmdW5jdGlvbnMgdG8gZm9jdXMgb246IGBzdG1tYWNfaHdfc2V0dXBgLCBgc3RtbWFjX3hkcF9yZWxlYXNlYCwgYW5kIGBzdG1tYWNfeGRwX29wZW5gLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGVzZSBleGlzdCBhbmQgYXJlbid0IHN0YXRpYyBvciBpbmxpbmVkLiBUaGVuIEkgY2FuIGRpZyBkZWVwZXIgaW50byB0aGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NDg5LCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mzg0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6MjEuODQ2MjQ3MzUzWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTYxOTEwODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY19od19zZXR1cFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9MzYyNj1zdGF0aWMgYm9vbCBzdG1tYWNfdHNvX2NoYW5uZWxfcGVybWl0dGVkKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYzMy0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjM2MzQ6ICogc3RtbWFjX2h3X3NldHVwIC0gc2V0dXAgbWFjIGluIGEgdXNhYmxlIHN0YXRlLlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtMzYzNS0gKiAgQGRldiA6IHBvaW50ZXIgdG8gdGhlIGRldmljZSBzdHJ1Y3R1cmUuXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTM2NDQtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzozNjQ1OnN0YXRpYyBpbnQgc3RtbWFjX2h3X3NldHVwKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy0zNjQ2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NDEzNj1zdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDE0OS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxNTA6XFx0cmV0ID0gc3RtbWFjX2h3X3NldHVwKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTUxLVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTgyNzE9aW50IHN0bW1hY19yZXN1bWUoc3RydWN0IGRldmljZSAqZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzIzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODMyNDpcXHRyZXQgPSBzdG1tYWNfaHdfc2V0dXAobmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzI1LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjIzLjQwODE2NTU4M1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDMzMjgzOTg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqUmVmbGVjdGluZyBvbiBBUEkgRGVzaWduIGZvciBTVE1NQUMgRHJpdmVyIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgc3RtbWFjX2h3X3NldHVwYCBmdW5jdGlvbi4gVGhlIGNvZGUgc2F5cyBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBXYWl0IGEgbWludXRlLCB0aGF0IGdvZXMgYWdhaW5zdCBiZXN0IHByYWN0aWNlcywgZG9lc24ndCBpdD8gVGhlIHByb21wdCBzcGVjaWZpY2FsbHkgYWR2aXNlcyB0byAqcHJlZmVyKiBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucy4gVGhpcyBpcyBjcml0aWNhbCBmb3IgZ29vZCBkcml2ZXIgZGVzaWduIGFuZCBtYWludGFpbmFiaWxpdHksIGVzcGVjaWFsbHkgZm9yIHNvbWV0aGluZyBhcyBjb3JlIGFzIGhhcmR3YXJlIHNldHVwLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBmb2xsb3dpbmcgdGhhdCBndWlkZWxpbmUuXG5cblNvLCBpZiBgc3RtbWFjX2h3X3NldHVwYCBpc24ndCB0aGUgcmlnaHQgcGxhY2UgdG8gYmUgZm9jdXNpbmcsIHdoYXQgYXJlIHRoZSBlbnRyeXBvaW50cz8gSSBuZWVkIHRvIGNvbnNpZGVyIHdoYXQgSSBrbm93IGFib3V0IHRoZSBTVE1NQUMgZHJpdmVyJ3MgbGlmZWN5Y2xlLiBgc3RtbWFjX29wZW5gLCBgX19zdG1tYWNfb3BlbmAsIGFuZCBgc3RtbWFjX3Jlc3VtZWAgc2VlbSBsaWtlIGxpa2VseSBjYW5kaWRhdGVzIHRvIGludmVzdGlnYXRlLiBUaGV5J3JlIHByb2JhYmx5IHRoZSBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGFuZGxpbmcgdGhlIGhhcmR3YXJlIHNldHVwIHNlcXVlbmNlIGF0IGEgaGlnaGVyIGxldmVsLCBhbGxvd2luZyBmb3IgbW9yZSBmbGV4aWJpbGl0eSBhbmQgcG90ZW50aWFsbHkgYXZvaWRpbmcgdGhlIGxpbWl0YXRpb25zIG9mIGEgYHN0YXRpY2AgaGVscGVyLiBJIG5lZWQgdG8gcmUtZXZhbHVhdGUgdGhlIG92ZXJhbGwgZGVzaWduIHRvIHNlZSBpZiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBjYW4gYmUgaW5jb3Jwb3JhdGVkIGludG8gb25lIG9mIHRob3NlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODk3MywiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjgwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjI3LjQ0MTQ1MjgwOFoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNzM1MDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTQwNjE9c3RtbWFjX3NldHVwX2RtYV9kZXNjKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdW5zaWduZWQgaW50IG10dSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDEyNi0vKipcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQxMjc6ICogIF9fc3RtbWFjX29wZW4gLSBvcGVuIGVudHJ5IHBvaW50IG9mIHRoZSBkcml2ZXJcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMjgtICogIEBkZXYgOiBwb2ludGVyIHRvIHRoZSBkZXZpY2Ugc3RydWN0dXJlLlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTM1LSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDEzNjpzdGF0aWMgaW50IF9fc3RtbWFjX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQxMzctXFx0XFx0XFx0IHN0cnVjdCBzdG1tYWNfZG1hX2NvbmYgKmRtYV9jb25mKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NDE4NTpzdGF0aWMgaW50IHN0bW1hY19vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy00MTg2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNDIxMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjQyMTM6XFx0cmV0ID0gX19zdG1tYWNfb3BlbihkZXYsIGRtYV9jb25mKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTQyMTQtXFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NjEwMz1zdGF0aWMgaW50IHN0bW1hY19jaGFuZ2VfbXR1KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIGludCBuZXdfbXR1KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02MTM4LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NjEzOTpcXHRcXHRyZXQgPSBfX3N0bW1hY19vcGVuKGRldiwgZG1hX2NvbmYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNjE0MC1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTczMDk9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBzdG1tYWNfbmV0ZGV2X29wcyA9IHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjczMTA6XFx0Lm5kb19vcGVuID0gc3RtbWFjX29wZW4sXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MzExLVxcdC5uZG9fc3RhcnRfeG1pdCA9IHN0bW1hY194bWl0LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03NTk2PWludCBzdG1tYWNfcmVpbml0X3F1ZXVlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1OCByeF9jbnQsIHU4IHR4X2NudClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYxNS1cXHRpZiAobmV0aWZfcnVubmluZyhkZXYpKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzYxNjpcXHRcXHRyZXQgPSBzdG1tYWNfb3BlbihkZXYpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzYxNy1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM9NzYyMT1pbnQgc3RtbWFjX3JlaW5pdF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdTMyIHJ4X3NpemUsIHUzMiB0eF9zaXplKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjMyLVxcdGlmIChuZXRpZl9ydW5uaW5nKGRldikpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3NjMzOlxcdFxcdHJldCA9IHN0bW1hY19vcGVuKGRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03NjM0LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjoyNy41MDY2MzgyMjZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgxNDA3NDAzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipBbmFseXppbmcgdGhlIFNUTU1BQyBEcml2ZXIncyBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSoqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSB0cmFjaW5nIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGZvciB0aGlzIFNUTU1BQyBkcml2ZXIsIGFuZCBJJ3ZlIGdvdCBgc3RtbWFjX29wZW5gIGZsYWdnZWQgYXMgc3RhdGljIOKAkyB3aGljaCBtYWtlcyBzZW5zZTsgaXQncyB0aGUgYG5kb19vcGVuYCBjYWxsYmFjay4gVGhhdCBjb25maXJtcyBpdCdzIGEgY3JpdGljYWwgZW50cnkgcG9pbnQuIEl0J3MgdGhlIHN0YW5kYXJkIG5ldHdvcmsgZGV2aWNlIG9wZXJhdGlvbiBlbnRyeSBwb2ludCwgaW52b2tlZCB3aGVuIHRoZSBpbnRlcmZhY2UgY29tZXMgdXAuIE1ha2VzIHBlcmZlY3Qgc2Vuc2UuXG5cbkJ1dCBob2xkIG9uIGEgc2Vjb25kLi4uIGFyZSB3ZSBtaXNzaW5nIHNvbWV0aGluZyByZWxhdGVkIHRvIFhEUCBzdXBwb3J0PyBJIG5lZWQgdG8gY2xhcmlmeSBob3cgWERQIChlWHByZXNzIERhdGEgUGF0aCkgZml0cyBpbnRvIHRoaXMuIFdoYXQgYWJvdXQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gPyBBcmUgdGhlc2UgYWxzbyBzdGF0aWMgZnVuY3Rpb25zPyBBcmUgdGhleSBwYXJ0IG9mIHRoZSBgbmRvX29wZW5gIHByb2NlZHVyZSwgb3IgZG8gdGhleSBleGlzdCBhcyBhbiBpbmRlcGVuZGVudCBtb2R1bGU/IEFyZSB0aGV5IGNhbGxlZCBzZXBhcmF0ZWx5PyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBtYW5hZ2VzIFhEUCBhdHRhY2ggYW5kIGRldGFjaC4gVGhhdCBpbmZvcm1hdGlvbiBpcyBnb2luZyB0byBkZXRlcm1pbmUgd2hldGhlciBpdCBpcyBiZWluZyBtYW5hZ2VkIGNvcnJlY3RseS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIGNvcmUgZHJpdmVyIGFuZCB0aGUgWERQIGltcGxlbWVudGF0aW9uLCB0byBlbnN1cmUgcHJvcGVyIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIG5vIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0OTcsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjozMi4zMjA3MTQ5MDZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NDM4NDAxMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwNTc9dm9pZCBzdG1tYWNfZW5hYmxlX3R4X3F1ZXVlKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdiwgdTMyIHF1ZXVlKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy03MDk0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6NzA5NTp2b2lkIHN0bW1hY194ZHBfcmVsZWFzZShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzA5Ni17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjMyLjcwNTEwNTgwOVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MDM3NTg0NzE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBmdW5jdGlvbnMsIHRoaW5raW5nIHRoZW0gdGhyb3VnaDpcblxuKipDb25zaWRlcmluZyBgc3RtbWFjX3hkcF9yZWxlYXNlYCBhbmQgYHN0bW1hY194ZHBfb3BlbmAqKlxuXG5Pa2F5LCBJJ20gbm90aW5nIHRoYXQgdGhlc2UgYHN0bW1hY194ZHBfcmVsZWFzZWAgYW5kIGBzdG1tYWNfeGRwX29wZW5gIGZ1bmN0aW9ucyBhcmVuJ3QgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFJpZ2h0LCBzbyB0aGlzIG1lYW5zIHRoZXkncmUgaW50ZW5kZWQgdG8gaGF2ZSBleHRlcm5hbCBsaW5rYWdlIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIG1vZHVsZS4gVGhleSdyZSBwcm9iYWJseSBtZWFudCB0byBiZSBjYWxsZWQgZnJvbSBjb2RlIG91dHNpZGUgb2YgdGhlaXIgaW1tZWRpYXRlIGNvbXBpbGF0aW9uIHVuaXQuIFRoaXMgaW1wbGllcyB0aGV5J3JlIHBhcnQgb2YgYW4gQVBJIGV4cG9zZWQgYnkgdGhlIHN0bW1hYyBkcml2ZXIsIGxpa2VseSBmb3IgWERQIChlWHByZXNzIERhdGEgUGF0aCkgaW50ZWdyYXRpb24uIFRoYXQgbWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBmdW5jdGlvbiBuYW1lcy4gU29tZW9uZSBlbHNlLCBwb3RlbnRpYWxseSBhIGhpZ2hlci1sZXZlbCBYRFAgZnJhbWV3b3JrIG9yIGEgdXNlci1zcGFjZSBhcHBsaWNhdGlvbiB1c2luZyBYRFAsIHByb2JhYmx5IG5lZWRzIHRvIGNhbGwgdGhlc2UgdG8gbWFuYWdlIG9yIGludGVyYWN0IHdpdGggdGhlIHN0bW1hYyBkcml2ZXIncyBYRFAgY2FwYWJpbGl0aWVzLiBJbnRlcmVzdGluZy4gSSdsbCBtYWtlIGEgbm90ZSB0byByZW1lbWJlciB0aGF0IHRoZXkgY2FuIGJlIGFjY2Vzc2VkIGV4dGVybmFsbHksIHdoaWNoIGhhcyBpbXBsaWNhdGlvbnMgZm9yIHBvdGVudGlhbCByZWVudHJhbmN5LCBsb2NraW5nLCBhbmQgQUJJIHN0YWJpbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTEwMzIsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjozNy43NDI2OTQ1NzRaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0OTYyNzM3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTcwOTU9dm9pZCBzdG1tYWNfeGRwX3JlbGVhc2Uoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyNy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjcxMjg6aW50IHN0bW1hY194ZHBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtNzEyOS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjM3Ljg5MjMyOTk4MloiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MzAyNzI4MjAxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcnksIGFzc3VtaW5nIEknbSB0aGlua2luZyBhYm91dCB0aGUgcHJvY2VzcyBvZiAqZXhwb3J0aW5nKiBkYXRhIG9yIGEgcHJvY2VzcyB0aGF0IGludm9sdmVzIG91dHB1dHRpbmcgaW5mb3JtYXRpb24uIEknbGwgbWFrZSBpdCB0YXJnZXRlZCB0b3dhcmRzIHNvbWVvbmUgd2hvIGlzIGFuIGV4cGVydCBpbiB0aGUgZmllbGQ6XG5cbioqRXhwb3J0aW5nOiBUaGUgRGVlcCBEaXZlKipcblxuT2theSwgc28gd2UncmUgdGFsa2luZyBhYm91dCAqZXhwb3J0aW5nKi4uLiB3aGF0J3MgcmVhbGx5IGRyaXZpbmcgdGhpcyB0aG91Z2h0PyBJcyBpdCBhIGRhdGEgc2V0PyBBIG1vZGVsPyBDb25maWd1cmF0aW9uIHNldHRpbmdzPyBBIGNvbXBsZXRlIGFwcGxpY2F0aW9uPyBUaGlzIG1hdHRlcnMsIGJlY2F1c2UgdGhlIFwiaG93XCIgYW5kIFwid2h5XCIgb2YgZXhwb3J0aW5nIHdpbGwgY2hhbmdlLlxuXG5GaXJzdGx5LCBcIkFyZSB0aGV5IGV4cG9ydGVkP1wiIGltcGxpZXMgYW4gZXhpc3Rpbmcgc2V0IG9mIHNvbWV0aGluZyB0aGF0IG1heSBvciBtYXkgbm90IGJlIGV4cG9ydGVkLiBUaGUgdmVyYiB0ZW5zZSBmZWVscyBsaWtlIGNoZWNraW5nIGFuIGV4aXN0aW5nIHN0YXR1cy4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYSBwcmUtZXhpc3Rpbmcgc3RhdGUsIG9yIGEgcHJvY2VzcyB0byBzdGFydD8gVGhpcyBxdWVzdGlvbnMgd2hldGhlciB0aGUgZ29hbCBpcyB0byBjb25maXJtICp0aGF0KiBpdCdzIGJlZW4gZG9uZSwgb3IgdG8gaW5pdGlhdGUgdGhlIGV4cG9ydCBwcm9jZXNzLlxuXG5JZiB3ZSBhcmUgdGFsa2luZyBhYm91dCAqdGhlIGFjdCBvZiBleHBvcnRpbmcsKiB0aGVuIHRoZSBxdWVzdGlvbiBiZWNvbWVzLCB3aGF0IGFyZSB0aGUgaW1wbGljaXQgYXNzdW1wdGlvbnMgYXJvdW5kIHRoYXQgZXhwb3J0PyBJcyBpdCBhIHN0YW5kYXJkaXplZCBmb3JtYXQ/IElzIHRoZXJlIGFuIGVzdGFibGlzaGVkIEFQST8gQXJlIHRoZXJlIHZlcnNpb25pbmcgY29uY2VybnM/IEFyZSB3ZSBkZWFsaW5nIHdpdGggc2VyaWFsaXphdGlvbiBpc3N1ZXMgaWYgaXRzIGRhdGE/IElzIHRoZXJlIGEgbmVlZCBmb3IgY29tcHJlc3Npb24/IEFyZSB3ZSBjb25zaWRlcmluZyBzZWN1cml0eSBhbmQgZW5jcnlwdGlvbj9cblxuVGhlIGNvbnRleHQgbWF0dGVycy4gSWYgaXQncyBhIHNwZWNpZmljIHN5c3RlbSwgSSBhbSB0aGlua2luZyBcIldoYXQgYXJlIHRoZSBzdXBwb3J0ZWQgZXhwb3J0IGZvcm1hdHM/XCIgSXMgaXQgQ1NWLCBKU09OLCBhIGRhdGFiYXNlIGR1bXAsIGEgY3VzdG9tIGJpbmFyeT8gVGhlIGZvcm1hdCBoZWF2aWx5IGltcGFjdHMgYW55IHRyYW5zZm9ybWF0aW9ucyBvciBwcm9jZXNzaW5nIHJlcXVpcmVkIG9uIHRoZSAqaW1wb3J0KiBzaWRlLlxuXG5UaGVuIEkgYW0gY29uc2lkZXJpbmcgZXJyb3IgaGFuZGxpbmcuIFdoYXQgaGFwcGVucyBpZiB0aGUgZXhwb3J0IGZhaWxzPyBEbyB3ZSBoYXZlIGxvZ2dpbmcgaW4gcGxhY2UsIGFuZCB3aGF0IGxldmVsIG9mIGRldGFpbD8gQXJlIHRoZXJlIHJldHJ5IG1lY2hhbmlzbXM/IEFyZSB3ZSBjb25zaWRlcmluZyBkYXRhIGludGVncml0eSwgc28gdGhhdCBubyBkYXRhIGlzIGxvc3QgZHVyaW5nIHRoZSB0cmFuc2Zlcj9cblxuRmluYWxseSwgYXJlIHdlIGNvbnNpZGVyaW5nICp3aG8qIGlzIGRvaW5nIHRoZSBleHBvcnRpbmc/IElzIHRoaXMgYW4gYXV0b21hdGVkIHByb2Nlc3MsIGEgdXNlci1pbml0aWF0ZWQgYWN0aW9uLCBvciBwYXJ0IG9mIGEgbGFyZ2VyIHdvcmtmbG93PyBEbyB3ZSByZXF1aXJlIGF1dGhlbnRpY2F0aW9uPyBVc2VyIGFjY2Vzcz8gQWNjZXNzIGNvbnRyb2xzIGZvciBzcGVjaWZpYyBkYXRhPyBUaGUgXCJ0aGV5XCIgaW4gdGhlIHF1ZXN0aW9uLCB0aGUgKnN1YmplY3QqLCBpcyB0aGUgY3J1Y2lhbCBwYXJ0IHRoYXQgd2lsbCBkZWZpbmUgdGhlIHJlc3Qgb2YgdGhlIHdvcmsuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNDk1LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjo0NC4xOTUwNjIwNjNaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY4OTgyODM5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0bW1hY194ZHBfb3BlblwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg9NDA3PXZvaWQgc3RtbWFjX3B0cF91bnJlZ2lzdGVyKHN0cnVjdCBzdG1tYWNfcHJpdiAqcHJpdik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDA4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDA5LXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz03MDk1PXZvaWQgc3RtbWFjX3hkcF9yZWxlYXNlKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjctXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo3MTI4OmludCBzdG1tYWNfeGRwX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTcxMjkte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTEwMj1pbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMzQtXFx0aWYgKGlmX3J1bm5pbmcgXFx1MDAyNlxcdTAwMjYgbmVlZF91cGRhdGUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEzNTpcXHRcXHRzdG1tYWNfeGRwX29wZW4oZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTM2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjo0NC4yNjQwNTA0MjJaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE3MDUzMDE3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGb2N1cyBTeW1ib2wgSWRlbnRpZmljYXRpb24gaW4gYHN0bW1hY194ZHAuY2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgdGhlIFhEUCBmdW5jdGlvbmFsaXR5IGludGVncmF0ZXMgd2l0aGluIGBzdG1tYWNfeGRwLmNgLiBGaXJzdCwgSSBjb25maXJtZWQgdGhhdCB5ZXMsIFhEUCBpcyBpbmRlZWQgdXRpbGl6ZWQgaW4gdGhpcyBzcGVjaWZpYyBmaWxlLiBOb3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUga2V5IGZ1bmN0aW9ucyB0byBleGFtaW5lLiBDbGVhcmx5LCBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXJlIGdvb2Qgc3RhcnRpbmcgcG9pbnRzOyB0aGV5IGRpcmVjdGx5IHJlbGF0ZSB0byB0aGUgWERQIGluaXRpYWxpemF0aW9uIGFuZCB0ZWFyZG93bi5cblxuSG9sZCBvbiBhIHNlY29uZC4uLiBJIHNob3VsZCBjb25zaWRlciB0aGUgYnJvYWRlciBwaWN0dXJlLiBMZXQncyBzZWUsIGBzdG1tYWNfaHdfc2V0dXBgIHNlZW1zIGltcG9ydGFudCwgYnV0IGl0J3MgKnN0YXRpYyogd2l0aGluIGl0cyBjb250ZXh0LiBIb3dldmVyLCBpdCdzIGNhbGxlZCBieSBgX19zdG1tYWNfb3BlbmAsIHdoaWNoIGlzIGNhbGxlZCBieSBgc3RtbWFjX29wZW5gIGFuZCBgc3RtbWFjX3Jlc3VtZWAuIFRoYXQgbWVhbnMgYHN0bW1hY19vcGVuYCBhbmQgYHN0bW1hY19yZXN1bWVgIGRlc2VydmUgYSBsb29rIHRvby4gV2FpdCwgYHN0bW1hY19vcGVuYCBpdHNlbGYgaXMgYWxzbyBzdGF0aWMhIEludGVyZXN0aW5nLi4uXG5cbkFscmlnaHQsIGxldCBtZSB0aGluayB0aGlzIHRocm91Z2guIElzIHRoZXJlIGEgKm5vbiotc3RhdGljIGZ1bmN0aW9uIHRoYXQgY2FsbHMgdGhlIHN0YXRpYyBgc3RtbWFjX29wZW5gPyBObywgaXQncyB1c2VkIGFzIGFuIGBuZG9fb3BlbmAgY2FsbGJhY2ssIHdoaWNoIGNhbiBiZSB1c2VmdWwuIE9rYXksIEknbSBjb25maWRlbnQgaW4gbGlzdGluZyBgc3RtbWFjX3hkcF9vcGVuYCBhbmQgYHN0bW1hY194ZHBfcmVsZWFzZWAgYXMgZm9jdXMgc3ltYm9scyBzaW5jZSB0aGV5J3JlIHRoZSBkaXJlY3QgWERQIGVudHJ5IHBvaW50cy4gQW5kLCBnb29kLCBgc3RtbWFjX3Jlc3VtZWAgaXMgZGVmaW5pdGVseSBub24tc3RhdGljLCBzbyB0aGF0J3MgYW5vdGhlciBrZXkgZnVuY3Rpb24gdG8gdHJhY2suXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyNDI2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDE3OjE2OjQ5LjQzNDU4NDY1NVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Njg2MDkwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RtbWFjX3Jlc3VtZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvZHdtYWMtdGVncmEuYz03MT1zdGF0aWMgaW50IF9fbWF5YmVfdW51c2VkIHRlZ3JhX21nYmVfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmMtMTA2LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL2R3bWFjLXRlZ3JhLmM6MTA3OlxcdGVyciA9IHN0bW1hY19yZXN1bWUoZGV2KTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9kd21hYy10ZWdyYS5jLTEwOC1cXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hYy5oPTQxMD1pbnQgc3RtbWFjX2dldF9waHlfaW50Zl9zZWwocGh5X2ludGVyZmFjZV90IGludGVyZmFjZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmg6NDExOmludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjLmgtNDEyLWludCBzdG1tYWNfc3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYz04MjUyPXN0YXRpYyB2b2lkIHN0bW1hY19yZXNldF9xdWV1ZXNfcGFyYW0oc3RydWN0IHN0bW1hY19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY1LS8qKlxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODI2NjogKiBzdG1tYWNfcmVzdW1lIC0gcmVzdW1lIGNhbGxiYWNrXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MjY3LSAqIEBkZXY6IGRldmljZSBwb2ludGVyXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzAtICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYzo4MjcxOmludCBzdG1tYWNfcmVzdW1lKHN0cnVjdCBkZXZpY2UgKmRldilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgyNzIte1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzU3LX1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjgzNTg6RVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3Jlc3VtZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy04MzU5LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmMtODM2MC0vKiBUaGlzIGlzIG5vdCB0aGUgc2FtZSBhcyBFWFBPUlRfR1BMX1NJTVBMRV9ERVZfUE1fT1BTKCkgd2hlbiBDT05GSUdfUE09biAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19tYWluLmM6ODM2MTpERUZJTkVfU0lNUExFX0RFVl9QTV9PUFMoc3RtbWFjX3NpbXBsZV9wbV9vcHMsIHN0bW1hY19zdXNwZW5kLCBzdG1tYWNfcmVzdW1lKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTgzNjItRVhQT1JUX1NZTUJPTF9HUEwoc3RtbWFjX3NpbXBsZV9wbV9vcHMpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmM9MTAwMT1jb25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBzdG1tYWNfcGx0ZnJfcG1fb3BzID0ge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY19wbGF0Zm9ybS5jOjEwMDI6XFx0U0VUX1NZU1RFTV9TTEVFUF9QTV9PUFMoc3RtbWFjX3N1c3BlbmQsIHN0bW1hY19yZXN1bWUpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3BsYXRmb3JtLmMtMTAwMy1cXHRTRVRfUlVOVElNRV9QTV9PUFMoc3RtbWFjX3J1bnRpbWVfc3VzcGVuZCwgc3RtbWFjX3J1bnRpbWVfcmVzdW1lLCBOVUxMKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxNzoxNjo0OS41MDMyMDE3MzNaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTIwMjE2NzUwMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBTVE1NQUMgRHJpdmVyIFN5bWJvbHMgYW5kIENvbmZpZ3VyYXRpb24qKlxuXG5Pa2F5LCBsZXQncyBzZWUuIGBzdG1tYWNfcmVzdW1lYCBpcyBleHBvcnRlZCwgc28gdGhhdCdzIGRlZmluaXRlbHkgYSBwb2ludCBvZiBpbnRlcmVzdC4gSSdtIGdvaW5nIHRvIGluaXRpYWxseSBmb2N1cyBvbiBgc3RtbWFjX3hkcF9vcGVuYCwgYHN0bW1hY194ZHBfcmVsZWFzZWAsIGFuZCwgb2YgY291cnNlLCBgc3RtbWFjX3Jlc3VtZWAgYXMga2V5IHN5bWJvbHMgdG8gaW52ZXN0aWdhdGUgZnVydGhlci4gQnV0IGhhbmcgb24sIGxvb2tpbmcgZGVlcGVyLCBgc3RtbWFjX29wZW5gIGlzIGFjdHVhbGx5IHRoZSBgbmRvX29wZW5gIGNhbGxiYWNrISBFdmVuIHRob3VnaCBpdCdzIHN0YXRpYyB3aXRoaW4gdGhlIGRyaXZlciwgaXQgc2VydmVzIGFzIHRoZSBtYWluIGVudHJ5IHBvaW50IGZvciB0aGUgY3J1Y2lhbCBgc3RtbWFjX2h3X3NldHVwYCBmdW5jdGlvbiwgc28gSSBuZWVkIHRvIGluY2x1ZGUgdGhhdCBpbiB0aGUgbGlzdC4gVGhpcyBtZWFucyBJJ2xsIGJlIGZvY3VzZWQgb24gYHN0bW1hY194ZHBfb3BlbmAsIGBzdG1tYWNfeGRwX3JlbGVhc2VgLCBgc3RtbWFjX3Jlc3VtZWAgYW5kIGBzdG1tYWNfb3BlbmAuXG5cbk5vdywgbGV0J3MgbW92ZSBvbnRvIHRoZSBjb25maWd1cmF0aW9uIGZsYWdzIHRvIHVuZGVyc3RhbmQgdGhlIGRyaXZlcidzIGJ1aWxkIG9wdGlvbnMuIFRoZSBwcmltYXJ5IG9uZXMgYXJlIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gQWgsIGBTVE1NQUNfUENJYCByZWxpZXMgb24gYFBDSWAgYW5kIGBDT01NT05fQ0xLYCwgd2hpY2ggbWFrZXMgc2Vuc2UgZm9yIFBDSS1iYXNlZCBoYXJkd2FyZS4gYFNUTU1BQ19FVEhgIGhhcyBkZXBlbmRlbmNpZXMgb24gYEhBU19JT01FTSBcdTAwMjZcdTAwMjYgSEFTX0RNQWAsIGBQVFBfMTU4OF9DTE9DS19PUFRJT05BTGAsIGFuZCBgRVRIVE9PTF9ORVRMSU5LYC4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoZXNlIGNvbnN0cmFpbnRzIGFuZCBrZWVwIHRoZW0gaW4gbWluZCBhcyBJIGV4YW1pbmUgdGhlIGNvZGUgdG8gdW5kZXJzdGFuZCB0aGVzZSBjb25maWd1cmF0aW9ucy4gU28sIEkgd2lsbCBmb2N1cyBvbiBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYC5cblxuRmluYWxseSwganVzdCB0byBiZSBzdXJlLCBJIHNob3VsZCBwcm9iYWJseSBkb3VibGUgY2hlY2sgdGhlIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5NjEsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6NTQuNzA1MzcxNzk2WiIsIlNlcSI6MjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MTA2Mjg0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdG1tYWNfeGRwX3NldF9wcm9nXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jPTY5Mzc9c3RhdGljIGludCBzdG1tYWNfYnBmKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfYnBmICpicGYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jLTY5NDItXFx0Y2FzZSBYRFBfU0VUVVBfUFJPRzpcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfbWFpbi5jOjY5NDM6XFx0XFx0cmV0dXJuIHN0bW1hY194ZHBfc2V0X3Byb2cocHJpdiwgYnBmLVxcdTAwM2Vwcm9nLCBicGYtXFx1MDAzZWV4dGFjayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX21haW4uYy02OTQ0LVxcdGNhc2UgWERQX1NFVFVQX1hTS19QT09MOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jPTk1PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuYy0xMDEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3RtaWNyby9zdG1tYWMvc3RtbWFjX3hkcC5jOjEwMjppbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmMtMTAzLVxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuaD05PWludCBzdG1tYWNfeGRwX3NldHVwX3Bvb2woc3RydWN0IHN0bW1hY19wcml2ICpwcml2LCBzdHJ1Y3QgeHNrX2J1ZmZfcG9vbCAqcG9vbCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTAtXFx0XFx0XFx0ICB1MTYgcXVldWUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3N0bWljcm8vc3RtbWFjL3N0bW1hY194ZHAuaDoxMTppbnQgc3RtbWFjX3hkcF9zZXRfcHJvZyhzdHJ1Y3Qgc3RtbWFjX3ByaXYgKnByaXYsIHN0cnVjdCBicGZfcHJvZyAqcHJvZyxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zdG1pY3JvL3N0bW1hYy9zdG1tYWNfeGRwLmgtMTItXFx0XFx0XFx0c3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTY6NTQuNzc2NDQzNzE0WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNTQzNTI3NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFNUTU1BQyBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNvbmNlcm5pbmcgdGhlIGluaXRpYWxpemF0aW9uIGFuZCBYRFAgY29uZmlndXJhdGlvbiBwYXRocy4gSXQncyBtZXNzaW5nIHdpdGggdGhlIGhhcmR3YXJlIHNldHVwIGFuZCB0ZWFyZG93biBzZXF1ZW5jZSwgdHdlYWtpbmcgdGhlIG9yZGVyIG9mIE1BQyBSeC9UeCBlbmFibGUvZGlzYWJsZSBhbmQgRE1BIHN0YXJ0L3N0b3AuIFRoYXQgbWFrZXMgaXQgYSBnb29kIHRhcmdldCBmb3IgZnV6emluZy4gR2l2ZW4gdGhlIG1vZGlmaWNhdGlvbiwgdGhlc2Ugc3ltYm9scyBzdGFuZCBvdXQgdG8gbWU6XG5cbk15IGtleSBmb2N1cyBzeW1ib2xzIGhlcmUgYXJlOlxuXG4qICAgYHN0bW1hY194ZHBfb3BlbmBcbiogICBgc3RtbWFjX3hkcF9yZWxlYXNlYFxuKiAgIGBzdG1tYWNfeGRwX3NldF9wcm9nYFxuKiAgIGBzdG1tYWNfcmVzdW1lYFxuXG5MZXQncyBtYWtlIHN1cmUgdGhlc2UgZnVuY3Rpb25zIGFyZSBleHRlcm5hbGx5IGFjY2Vzc2libGUuIGBzdG1tYWNfeGRwX3NldF9wcm9nYCBpcyBkZWZpbml0ZWx5IG5vdCBzdGF0aWMsIGl0IGxpdmVzIGluIGBzdG1tYWNfeGRwLmNgIGFuZCBpcyBleHBvcnRlZCBpbiBgc3RtbWFjX3hkcC5oYC4gTG9va3MgZ29vZC4gYHN0bW1hY194ZHBfb3BlbmAgYW5kIGBzdG1tYWNfeGRwX3JlbGVhc2VgIGFyZSBpbiBgc3RtbWFjX21haW4uY2AgYW5kIGFyZSBleHBvcnRlZCBpbiBgc3RtbWFjLmhgLCBhbHNvIG5vbi1zdGF0aWMuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgY29uZmlnIG9wdGlvbnMuIGBTVE1NQUNfRVRIYCBhbmQgYFNUTU1BQ19QQ0lgIGFyZSB0aGUgb25lcyB0byBmb2N1cyBvbiBmb3IgdGhpcyBkcml2ZXIuIGBTVE1NQUNfRVRIYCBwdWxscyBpbiBhbGwgdGhlIE1JSSwgUENTLCBQQUdFX1BPT0wsIFBIWSwgQ1JDMzIsIFJFU0VUX0NPTlRST0xMRVIsIE5FVF9ERVZMSU5LIG9wdGlvbnMuIEFuZCBgU1RNTUFDX1BDSWAgZGVwZW5kcyBvbiBgUENJYCBhbmQgYENPTU1PTl9DTEtgLlxuXG5CYXNlZCBvbiB0aGlzLCBgU1RNTUFDX0VUSGAgYW5kIGBTVE1NQUNfUENJYCBzaG91bGQgYmUgc3VmZmljaWVudC4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC4gTGV0J3MgY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTIyMCwiT3V0cHV0VG9rZW5zIjoxNjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozODMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTc6MTc6MDIuMDMwNzk5NzI4WiIsIlNlcSI6MzAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTE5NTkwNzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlNUTU1BQ19FVEhcIixcbiAgICBcIlNUTU1BQ19QQ0lcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdG1tYWNfeGRwX29wZW5cIixcbiAgICBcInN0bW1hY194ZHBfcmVsZWFzZVwiLFxuICAgIFwic3RtbWFjX3hkcF9zZXRfcHJvZ1wiLFxuICAgIFwic3RtbWFjX3Jlc3VtZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBoYXJkd2FyZSBzZXR1cCBhbmQgdGVhcmRvd24gc2VxdWVuY2VzIGluIHRoZSBTVE1pY3JvZWxlY3Ryb25pY3MgRXRoZXJuZXQgTUFDIGRyaXZlciAoc3RtbWFjKSwgc3BlY2lmaWNhbGx5IGNoYW5naW5nIHRoZSBvcmRlciBvZiBNQUMgUngvVHggZW5hYmxlL2Rpc2FibGUgYW5kIERNQSBzdGFydC9zdG9wLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGRyaXZlcidzIGluaXRpYWxpemF0aW9uIGFuZCBYRFAgY29uZmlndXJhdGlvbiBwYXRocy4gVGhlIGRyaXZlciBjYW4gYmUgZnV6emVkIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgaXRzIFBDSSBpbnRlcmZhY2Ugc3VwcG9ydC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJTVE1NQUNfRVRIXCIsXG4gICAgXCJTVE1NQUNfUENJXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RtbWFjX3hkcF9vcGVuXCIsXG4gICAgXCJzdG1tYWNfeGRwX3JlbGVhc2VcIixcbiAgICBcInN0bW1hY194ZHBfc2V0X3Byb2dcIixcbiAgICBcInN0bW1hY19yZXN1bWVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgaGFyZHdhcmUgc2V0dXAgYW5kIHRlYXJkb3duIHNlcXVlbmNlcyBpbiB0aGUgU1RNaWNyb2VsZWN0cm9uaWNzIEV0aGVybmV0IE1BQyBkcml2ZXIgKHN0bW1hYyksIHNwZWNpZmljYWxseSBjaGFuZ2luZyB0aGUgb3JkZXIgb2YgTUFDIFJ4L1R4IGVuYWJsZS9kaXNhYmxlIGFuZCBETUEgc3RhcnQvc3RvcC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBkcml2ZXIncyBpbml0aWFsaXphdGlvbiBhbmQgWERQIGNvbmZpZ3VyYXRpb24gcGF0aHMuIFRoZSBkcml2ZXIgY2FuIGJlIGZ1enplZCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIGl0cyBQQ0kgaW50ZXJmYWNlIHN1cHBvcnQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[1] Phase: Succeeded StartedAt: 2026-07-27 17:17:13 +0000 UTC FinishedAt: 2026-07-27 17:17:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 17:17:13 +0000 UTC FinishedAt: 2026-07-27 17:17:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2] Phase: Succeeded StartedAt: 2026-07-27 17:17:13 +0000 UTC FinishedAt: 2026-07-27 19:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 17:17:13 +0000 UTC FinishedAt: 2026-07-27 19:44:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 17:17:13 +0000 UTC FinishedAt: 2026-07-27 17:17:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 17:17:13 +0000 UTC FinishedAt: 2026-07-27 17:17:18 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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-workflowhtgc9/series-workflowhtgc9-convert-artifact-3659887198/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 17:17:23 +0000 UTC FinishedAt: 2026-07-27 18:14:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 17:17:23 +0000 UTC FinishedAt: 2026-07-27 18:14:40 +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:*9e9b3311-808a-4b47-86cb-84ec1d72d943,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-workflowhtgc9/series-workflowhtgc9-convert-artifact-3659887198/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": "26a69b2a-e126-4c1f-a58d-6b259dc51dbd", "success": true },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-workflowhtgc9/series-workflowhtgc9-build-action-2946601796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 17:17:23 +0000 UTC FinishedAt: 2026-07-27 18:14:30 +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:*9e9b3311-808a-4b47-86cb-84ec1d72d943,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-workflowhtgc9/series-workflowhtgc9-convert-artifact-3659887198/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": "26a69b2a-e126-4c1f-a58d-6b259dc51dbd", "success": true },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-workflowhtgc9/series-workflowhtgc9-build-action-2946601796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-27 18:14:40 +0000 UTC FinishedAt: 2026-07-27 18:14:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-27 18:14:40 +0000 UTC FinishedAt: 2026-07-27 18:14:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-27 18:14:40 +0000 UTC FinishedAt: 2026-07-27 18:15:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-27 18:14:40 +0000 UTC FinishedAt: 2026-07-27 18:14:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},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-workflowhtgc9/series-workflowhtgc9-convert-artifact-3555560209/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-27 18:15:00 +0000 UTC FinishedAt: 2026-07-27 18:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-27 18:15:00 +0000 UTC FinishedAt: 2026-07-27 18:16:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*26a69b2a-e126-4c1f-a58d-6b259dc51dbd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,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-workflowhtgc9/series-workflowhtgc9-build-action-2946601796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-27 18:17:01 +0000 UTC FinishedAt: 2026-07-27 18:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-27 18:17:01 +0000 UTC FinishedAt: 2026-07-27 18:17:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-27 18:17:01 +0000 UTC FinishedAt: 2026-07-27 19:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-27 18:17:01 +0000 UTC FinishedAt: 2026-07-27 19:39:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,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:*9e9b3311-808a-4b47-86cb-84ec1d72d943,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-workflowhtgc9/series-workflowhtgc9-convert-artifact-3555560209/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": "0bc68dcc-c33b-4480-a170-519ff0f98b35", "success": true },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-workflowhtgc9/series-workflowhtgc9-build-action-2315549405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-27 18:17:01 +0000 UTC FinishedAt: 2026-07-27 19:38:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,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:*9e9b3311-808a-4b47-86cb-84ec1d72d943,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-workflowhtgc9/series-workflowhtgc9-convert-artifact-3555560209/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": "0bc68dcc-c33b-4480-a170-519ff0f98b35", "success": true },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-workflowhtgc9/series-workflowhtgc9-build-action-2315549405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-27 19:39:46 +0000 UTC FinishedAt: 2026-07-27 19:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-27 19:39:46 +0000 UTC FinishedAt: 2026-07-27 19:39:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-27 19:39:46 +0000 UTC FinishedAt: 2026-07-27 19:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-27 19:39:46 +0000 UTC FinishedAt: 2026-07-27 19:41:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0bc68dcc-c33b-4480-a170-519ff0f98b35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,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-workflowhtgc9/series-workflowhtgc9-build-action-2315549405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:44:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*26a69b2a-e126-4c1f-a58d-6b259dc51dbd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0bc68dcc-c33b-4480-a170-519ff0f98b35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,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-workflowhtgc9/series-workflowhtgc9-build-action-2946601796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,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-workflowhtgc9/series-workflowhtgc9-build-action-2315549405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:41:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:41:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},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-workflowhtgc9/series-workflowhtgc9-convert-artifact-2445702470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-27 19:41:44 +0000 UTC FinishedAt: 2026-07-27 19:41:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-27 19:41:54 +0000 UTC FinishedAt: 2026-07-27 19:44:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhtgc9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["stmmac_xdp_open","stmmac_xdp_release","stmmac_xdp_set_prog","stmmac_resume"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8cd9520d35a6c38db6567e97dd93b1f11f185dc6","config_name":"upstream-apparmor-kasan.config","enable_configs":["STMMAC_ETH","STMMAC_PCI"],"series_id":"4b0ede31-0e1c-4619-93b1-fa0d88e37e8e","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-27 19:41:54 +0000 UTC FinishedAt: 2026-07-27 19:44:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*26a69b2a-e126-4c1f-a58d-6b259dc51dbd,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0bc68dcc-c33b-4480-a170-519ff0f98b35,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,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-workflowhtgc9/series-workflowhtgc9-build-action-2946601796/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,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-workflowhtgc9/series-workflowhtgc9-build-action-2315549405/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.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-workflowhtgc9/series-workflowhtgc9-convert-artifact-2445702470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}