Name: series-workflow7t886 Phase: Succeeded StartedAt: 2026-08-12 15:26:55 +0000 UTC FinishedAt: 2026-08-12 19:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[0] Phase: Succeeded StartedAt: 2026-08-12 15:26:55 +0000 UTC FinishedAt: 2026-08-12 15:29:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 15:26:55 +0000 UTC FinishedAt: 2026-08-12 15:29:40 +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": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "bf07b7e4-6b2d-4352-bef9-9240f57777f9" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "nsim_queue_start", "nsim_queue_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAgICYjMzQ7bnNpbV9xdWV1ZV9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBhIE5BUEkgY29udGV4dCB3aXRoIGEgbmV0d29yayBkZXZpY2UgcXVldWUgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIEFQSSB0aGF0IHNldHMgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGZ1enppbmcpIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgd2l0aCBSWCBxdWV1ZXMgZHVyaW5nIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YTcyMTQ2MGZjNWZjMjY4YTc5NDU5NTBmYmRmMzg5ZjBjNTkyNDdkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mjg6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5jMThmOWY1NDAwODRhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC04MjYsNiAmIzQzOzgyNiw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4mIzQzO1x0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtODM4LDYgJiM0Mzs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuIFxuIFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbiBcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWE3MjE0NjBmYzVmYzI2OGE3OTQ1OTUwZmJkZjM4OWYwYzU5MjQ3ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE1OjI4OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmMxOGY5ZjU0MDA4NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTgyNiw2ICYjNDM7ODI2LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZywKIAl9CiAKIAlucy0mZ3Q7cnFbaWR4XSA9IHFtZW0tJmd0O3JxOwomIzQzOwluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsCiYjNDM7CQkJICAgICAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAluYXBpX2VuYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlyZXR1cm4gMDsKQEAgLTgzOCw2ICYjNDM7ODQwLDcgQEAgc3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeCkKIAogCW5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7CiAKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTsKIAluYXBpX2Rpc2FibGVfbG9ja2VkKCZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCiAJaWYgKG5zLSZndDtycV9yZXNldF9tb2RlID09IDEpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBuZXRkZXZzaW0qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLCByaWdodD8gU2VlbXMgbGlrZSBzb21lb25lIGlzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZywgZ2l2ZW4gaXRzIGhlYXZ5IHVzZSBpbiB0ZXN0aW5nIGFuZCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCB0b3VjaGVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAsIGFkZGluZyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBJbiBgbnNpbV9xdWV1ZV9zdGFydGAsIHdlJiMzOTtyZSBzZXR0aW5nIHRoZSBOQVBJIGZvciB0aGUgUlggcXVldWUgKGBORVRERVZfUVVFVUVfVFlQRV9SWGApLCBhbmQgdGhlbiBjbGVhcmluZyBpdCBpbiBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgc2hpZnQ7IGl0IGltcGxpZXMgY2hhbmdlcyBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFJYIHByb2Nlc3NpbmcuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY29uZmlnIGRlcGVuZGVuY2llcywgc28gbGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgIG5vdy4uLiBhaCwgeWVzLCBgTkVUREVWU0lNYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLiBOb3csIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHBvdGVudGlhbCBpbXBhY3QsIGxldCBtZSBydW4gYSBxdWljayBncmVwIGZvciBib3RoIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGhpbiB0aGUgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODAxOm5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODAyLVx0XHQgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg1OS1cdC5uZG9fcXVldWVfbWVtX2ZyZWVcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjA6XHQubmRvX3F1ZXVlX3N0YXJ0XHQ9IG5zaW1fcXVldWVfc3RhcnQsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYxLVx0Lm5kb19xdWV1ZV9zdG9wXHRcdD0gbnNpbV9xdWV1ZV9zdG9wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIGEgcHJvbWlzaW5nIHRhcmdldC4gVGhlc2UgZnVuY3Rpb25zIHdpdGhpbiBgbnNpbV9xdWV1ZV9tZ210X29wc2AgaW1wbGVtZW50IGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyByZWFjaGFibGUgYW5kIHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBORVRERVZTSU1gIGlzIHRoZSByZWxldmFudCBjb25maWcgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIGNvbnNpZGVyLCB3aGljaCBtaWdodCBhZmZlY3QgdGhlIGNvZGUgcGF0aCBhbmQgdGh1cyB0aGUgZnV6emluZyBzdHJhdGVneS4gSSYjMzk7bGwgbmVlZCB0byBleHBhbmQgbXkgdmlldyB0byBpbmNsdWRlIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFzIHdlbGwuIFRoaXMgYXJlYSBpcyBkZWZpbml0ZWx5IHJpcGUgZm9yIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBIdW50aW5nKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aGF0ZXZlciBJJiMzOTttIHdvcmtpbmcgb24sIGxpa2VseSBzb21ldGhpbmcgbmV0d29yay1yZWxhdGVkIGdpdmVuIHRoZSBjb250ZXh0LiBNeSBpbml0aWFsIGluc3RpbmN0LCBiYXNlZCBvbiB0aGUgbGlrZWx5IGNvbXBvbmVudHMgaW52b2x2ZWQsIHBvaW50cyBtZSBkaXJlY3RseSB0byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gZmlsZXMuIE15IGZpcnN0IHN0b3AsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIGJhc2VkIG9uIG5hbWluZyBjb252ZW50aW9ucyBhbmQgbGlrZWx5IGZpbGUgc3RydWN0dXJlLCBpcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYCBkaXJlY3RvcnkgYW5kIGl0cyBgS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgcHJpb3IgZXhwZXJpZW5jZSB3aXRoIHRoZSBzaW11bGF0b3IsIHRoYXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB0aGUgZmlyc3QgcGxhY2UgdG8gY2hlY2suIElmIHRoYXQgZG9lc24mIzM5O3QgaG9sZCB0aGUgYW5zd2VyLCB0aGVuIEkmIzM5O2xsIGJyb2FkZW4gdGhlIHNjb3BlLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCYjMzk7cyBhbG1vc3QgY2VydGFpbiB0byBpbmNsdWRlIHRoZSByZWxldmFudCBvcHRpb25zLCBvciBhdCBsZWFzdCBwb2ludCBtZSB0b3dhcmRzIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGlmIGl0JiMzOTtzIG5lc3RlZCBtb3JlIGRlZXBseS4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lLCBJJiMzOTtsbCBnbyBzdHJhaWdodCBmb3IgdGhlIG1vc3QgbGlrZWx5IHBhdGhzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JwZi5jJiMzNDssCiAgICAmIzM0O2J1cy5jJiMzNDssCiAgICAmIzM0O2Rldi5jJiMzNDssCiAgICAmIzM0O2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtmaWIuYyYjMzQ7LAogICAgJiMzNDtoZWFsdGguYyYjMzQ7LAogICAgJiMzNDtod3N0YXRzLmMmIzM0OywKICAgICYjMzQ7aXBzZWMuYyYjMzQ7LAogICAgJiMzNDttYWNzZWMuYyYjMzQ7LAogICAgJiMzNDtuZXRkZXYuYyYjMzQ7LAogICAgJiMzNDtuZXRkZXZzaW0uaCYjMzQ7LAogICAgJiMzNDtwc2FtcGxlLmMmIzM0OywKICAgICYjMzQ7cHNwLmMmIzM0OywKICAgICYjMzQ7dGMuYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVscy5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKktjb25maWcgTG9jYXRpb24gRGlsZW1tYSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHdoZXJlIHRoZSBLY29uZmlnIGZpbGUgaXMgZm9yIHRoZSBuZXR3b3JrIGRyaXZlciBzdHVmZi4gSSBpbW1lZGlhdGVseSB0aG91Z2h0IGl0IHdhcyBpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdC4gQnV0IGhvbGQgb24sIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIuLi4gZG9lcyBpdCBoYXZlIGl0cyBvd24gc3BlY2lmaWMgS2NvbmZpZyBmaWxlPyBMZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCB0aGVyZSBpc24mIzM5O3QgYSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpbGUuIEhtbSwgdGhhdCYjMzk7cyB1bnVzdWFsLCBJIGd1ZXNzIGl0IHJlbGllcyBvbiBhIHNoYXJlZCBvbmUsIHdoaWNoIG9uZSBkZWZpbmVzIGBORVRERVZTSU1gPyBCZXR0ZXIgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB3aGVyZSB0aGF0IHN5bWJvbCBnZXRzIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipEZWNvbnN0cnVjdGluZyBORVRERVZTSU0gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVERFVlNJTWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uPyYjMzQ7IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBhdCBhIGhpZ2ggbGV2ZWwuIElzIGl0IGJ1aWx0IG9uIGEgc3BlY2lmaWMgc2ltdWxhdGlvbiBmcmFtZXdvcms/IERvZXMgaXQgbGV2ZXJhZ2UgYW55IHBhcnRpY3VsYXIgbmV0d29ya2luZyBsaWJyYXJpZXM/IEFyZSB0aGVyZSBhbnkgZGF0YSBhbmFseXNpcyBvciB2aXN1YWxpemF0aW9uIHRvb2xzIHRoYXQgYXJlIGludGVncmFsIHRvIGl0cyBmdW5jdGlvbmFsaXR5PwoKSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgcHJvamVjdCBzdHJ1Y3R1cmUgb3IgZG9jdW1lbnRhdGlvbiB0aGF0IG1pZ2h0IHByb3ZpZGUgc29tZSBjbHVlcy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBgcmVxdWlyZW1lbnRzLnR4dGAgZmlsZSwgb3IgYSBzZWN0aW9uIG9uIGRlcGVuZGVuY2llcyBpbiB0aGUgUkVBRE1FLiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGtub3dpbmcgdGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgaXMgbmVlZGVkIGZvciBteSB3b3JrLgoKT25jZSBJIGhhdmUgYSBsaXN0IG9mIHRoZXNlIGRlcGVuZGVuY2llcywgSSB3aWxsIG5lZWQgdG8gY2F0ZWdvcml6ZSB0aGVtLiBEaXN0aW5ndWlzaGluZyBiZXR3ZWVuIGNvcmUgbGlicmFyaWVzLCBvcHRpb25hbCBmZWF0dXJlcywgYW5kIGRldmVsb3BlciB0b29scyB3aWxsIGJlIGltcG9ydGFudC4gSXQgd2lsbCBiZSBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIGV4dGVybmFsIGxpYnJhcmllcywgaW4taG91c2UgbW9kdWxlcywgb3Igc3RhbmRhcmQgUHl0aG9uIHBhY2thZ2VzLiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8ga25vdyB0aGUgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGFzIHdlbGw7IEkgZG9uJiMzOTt0IHdhbnQgdG8gcnVuIGludG8gYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzIGRvd24gdGhlIGxpbmUuCgpGaW5hbGx5LCBJIHdpbGwgd2FudCB0byBhc3Nlc3MgaG93IHRoZXNlIGRlcGVuZGVuY2llcyBpbnRlcmFjdCB3aXRoIHRoZSBzaW11bGF0b3IgaXRzZWxmLiBBcmUgdGhleSB0aWdodGx5IGNvdXBsZWQsIG9yIGlzIHRoZSBhcmNoaXRlY3R1cmUgbW9yZSBtb2R1bGFyPyBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHNlbnNlIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbCBmb3IgZXh0ZW5zaW9uLiBVbHRpbWF0ZWx5LCB1bmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB3b3JraW5nIHdpdGggYE5FVERFVlNJTWAgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjA0Olx0Y29uZmlnIE5FVERFVlNJTVxuIDYwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4gNjA2Olx0XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4gNjA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiA2MDg6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbiA2MDk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbiA2MTA6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDYxMTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDYxMjpcdFx0c2VsZWN0IE5FVF9TSEFQRVJcbiA2MTM6XHRcdGhlbHBcbiA2MTQ6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIGFuZCBzb2Z0d2FyZSBtb2RlbCB0aGF0IGNhblxuIDYxNTpcdFx0ICBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyBjb250cm9sIHBhdGggbmV0d29ya2luZyBBUElzLCBlc3BlY2lhbGx5XG4gNjE2Olx0XHQgIEhXLW9mZmxvYWQgcmVsYXRlZC5cbiA2MTc6XHRcbiA2MTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDYxOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXG4gNjIwOlx0XG4gNjIxOlx0Y29uZmlnIE5FVF9GQUlMT1ZFUlxuIDYyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpbG92ZXIgZHJpdmVyXCYjMzQ7XG4gNjIzOlx0XHRzZWxlY3QgRkFJTE9WRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYE5FVERFVlNJTWAgQ29uZmlndXJhdGlvbiBhbmQgQVBJIERlc2lnbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5FVERFVlNJTWAuIEl0IGxvb2tzIGxpa2UgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIGJvdGggYERFQlVHX0ZTYCBhbmQgYElORVRgLCBzbyBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgcHJvcGVybHkgaGFuZGxlZCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBUaGUgY29yZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgaGVyZSBzZWVtIHRvIGJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvcnJlY3RseSBpbnRlZ3JhdGVkLgoKSGFuZyBvbiBhIHNlY29uZOKApiB0aGVzZSBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGZ1bmN0aW9ucyBhcmUgKnN0YXRpYyosIGFuZCBkZWZpbmVkIHdpdGhpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSwgaW5kZWVkLCBzdGF0aWMuICpZZXAqLCB0aGV5IGFyZTogYHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdGFydCguLi4pYCBhbmQgYHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKC4uLilgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGUgcHJvbXB0IGlzIGVuY291cmFnaW5nIHVzaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyB0byBhdm9pZCBpbmxpbmluZy4KCkJ1dCB3YWl0LCB0aGVzZSBmdW5jdGlvbnMsIGV2ZW4gYmVpbmcgc3RhdGljLCBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBuc2ltX3F1ZXVlX21nbXRfb3BzYDoKCmBgYGMKc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHsKCS5uZG9fcXVldWVfbWVtX3NpemUJPSBuc2ltX3F1ZXVlX21lbV9zaXplLAoJLm5kb19xdWV1ZV9tZW1fYWxsb2MJPSBuc2ltX3F1ZXVlX21lbV9hbGxvYywKCS5uZG9fcXVldWVfbWVtX2ZyZWUJPSBuc2ltX3F1ZXVlX21lbV9mcmVlLAoJLm5kb19xdWV1ZV9zdGFydAk9IG5zaW1fcXVldWVfc3RhcnQsCgkubmRvX3F1ZXVlX3N0b3AJCT0gbnNpbV9xdWV1ZV9zdG9wLAp9OwpgYGAKCkJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiwgaXQgaXMgcmVhc29uYWJsZSB0byBiZWxpZXZlIHRoYXQgdGhleSAqY2FuJiMzOTt0KiBiZSBmdWxseSBpbmxpbmVkIGFuZCB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gR2l2ZW4gdGhpcywgaXQgc2hvdWxkIGJlIGZpbmUgdG8gaW5jbHVkZSB0aGVtLiBIb3dldmVyLCBpdCYjMzk7cyBlc3NlbnRpYWwgdG8gbm90ZSB0aGF0IHRoZXkgYXJlIGNhbGxlZCB2aWEgYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAuIFNvLCB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgd2hlcmUgYG5zaW1fcXVldWVfbWdtdF9vcHNgIGlzIHVzZWQgYW5kIGhvdyB0aG9zZSBhcmUgdWx0aW1hdGVseSBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXVldWVfbWdtdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgzNj1zdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODU2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODU3LVx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PSBzaXplb2Yoc3RydWN0IG5zaW1fcXVldWVfbWVtKSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MT1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTMtXHRucy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdF9vcHMgPSBcdTAwMjZuc2ltX3N0YXRfb3BzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjEwNTQ6XHRucy1cdTAwM2VuZXRkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcdTAwMjZuc2ltX3F1ZXVlX21nbXRfb3BzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3Nlcyhucy1cdTAwM2VuZXRkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzY3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgaW4gTmV0d29yayBJbnRlcmZhY2UgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFzIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIEhvd2V2ZXIsIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBzaW5jZSB0aGV5JiMzOTtyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXkgYXJlLCBpbiBmYWN0LCBhY2Nlc3NpYmxlIHZpYSB0aGUgc3ltYm9sIHRhYmxlLiBJZiB0aGV5JiMzOTtyZSBwcmVzZW50IGluIGBrYWxsc3ltc2AsIHRoZW4gc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIHRoZW0uIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlaXIgdmlzaWJpbGl0eS4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb25zLiBBaCwgdGhlIHBhdGNoIG1lbnRpb25zIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMuIE9rYXksIHRoYXQmIzM5O3MgYSBuZXcgbGVhZC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGFuZCBkZXRlcm1pbmUgaG93IGl0IG1pZ2h0IHByb3ZpZGUgYW5vdGhlciByb3V0ZSBmb3IgZnV6emluZyBvciBleHBvc3VyZS4gSSYjMzk7bGwgbG9vayBhdCB0aGUgY2FsbCBzaXRlcyBhbmQgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX3F1ZXVlX3NldF9uYXBpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MDY9c3RhdGljIHZvaWQgZW5hX25hcGlfZGlzYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTc6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODIwLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgzNy1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM5LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4NDA6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODQxLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTY1OT1zdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcGFpcihzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBpbnQgcmluZ19ucilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNjY2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNjY3LVx0XHRcdCAgICAgXHUwMDI2cnhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNzAxPXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE3MTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTcxNC1cdFx0XHRcdCAgICAgXHUwMDI2dHhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0yNzI1PXN0YXRpYyB2b2lkIGJuZ2VfZGVsX25hcGkoc3RydWN0IGJuZ2VfbmV0ICpibilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJkLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmQtXHUwMDNldHhfbnJfcmluZ3M7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXHRcdFx0ICAgICBcdTAwMjZyeHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDY5Mz1zdGF0aWMgaW50IGJueHRfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcwOS1cdFx0aWYgKGkgXHUwMDNlPSBicC1cdTAwM2V0eF9ucl9yaW5nc194ZHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVx1MDAzZWRldiwgaSAtIGJwLVx1MDAzZXR4X25yX3JpbmdzX3hkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTE5NzM9c3RhdGljIHZvaWQgYm54dF9kZWxfbmFwaShzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VyeF9ucl9yaW5nczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxMTk4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXHUwMDNldHhfbnJfcmluZ3NfeGRwOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDAzLVx0XHRpZiAodG5hcGktXHUwMDNldHhfYnVmZmVycykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHR4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA1LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVx0XHRpZiAodG5hcGktXHUwMDNlcnhfcmNiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcnhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTc0MTc9c3RhdGljIHZvaWQgdGczX25hcGlfZW5hYmxlKHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXHRcdGlmICh0bmFwaS1cdTAwM2V0eF9idWZmZXJzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDI3Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgdHhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzMi1cdFx0aWYgKHRuYXBpLVx1MDAzZXJ4X3JjYikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQzMzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJ4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDM0LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0xOTc0PXN0YXRpYyB2b2lkIHRzbmVwX3F1ZXVlX2VuYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTgyLVx0aWYgKHF1ZXVlLVx1MDAzZXR4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4MzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXR4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZxdWV1ZS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cdGlmIChxdWV1ZS1cdTAwM2VyeCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2cXVldWUtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5OTU9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZGlzYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTk5LVx0aWYgKHF1ZXVlLVx1MDAzZXJ4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDAxLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDQtXHRcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXHUwMDNldHgsIFx1MDAyNnF1ZXVlLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2V0eC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5MjQ9c3RhdGljIHZvaWQgZ3ZlX3R1cm5kb3duKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cdFx0aWYgKGlkeCBcdTAwM2MgcHJpdi1cdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTQzOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0NC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1Ni1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5NzI9c3RhdGljIHZvaWQgZ3ZlX3R1cm51cChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXHRcdGlmIChpZHggXHUwMDNjIHByaXYtXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk5MDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5OTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTUtXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDE2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDE3LVx0XHRcdFx0ICAgICBcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0xOTg9aW50IGhpbmljM19xcHNfaXJxX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyMzQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2aXJxX2NmZy1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzctXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZpcnFfY2ZnLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cdFx0cXBfZGVsX25hcGkoaXJxX2NmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU0LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MjcwPXZvaWQgaGluaWMzX3Fwc19pcnFfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVx0XHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODAtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODItXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9NDgxPXZvaWQgZTEwMDBfZG93bihzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTUxMy1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xMzUyPWludCBlMTAwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTk6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ2MzY9aW50IGUxMDAwZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTItXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYzo0Nzc0Olx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3NS1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzkzLVx0XHRpZiAodnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XSBcdTAwMjZcdTAwMjYgdnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3RvcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5NDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5NS1cdFx0XHRcdFx0ICAgICBcdTAwMjZ2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5OC1cdFx0aWYgKHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0gXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0tXHUwMDNlcV92ZWN0b3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MDAtXHRcdFx0XHRcdCAgICAgXHUwMDI2dnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMxLVx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODMyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzQtXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQzLVx0Zm9yICh1MzIgaSA9IDA7IGkgXHUwMDNjIHFfdmVjdG9yLVx1MDAzZW51bV9yeHE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ0Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVx1MDAzZXJ4W2ldLVx1MDAzZWlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBxX3ZlY3Rvci1cdTAwM2VudW1fdHhxOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0ODpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBxX3ZlY3Rvci1cdTAwM2V0eFtpXS1cdTAwM2VpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDktXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMTAyPXZvaWQgaWdiX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTE0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MDk3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MDk4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTEwMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NTEwMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz04OT1pbnQgbWx4NF9lbl9hY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1NC1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2Mi1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTE5Nj12b2lkIG1seDRfZW5fZGVhY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoyMDY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3EtXHUwMDNlY3FfaWR4LCBxdHlwZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk1MS1cdFx0bWx4NWVfYWN0aXZhdGVfcnEoXHUwMDI2Yy1cdTAwM2VycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmMtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz05NTc9dm9pZCBtbHg1ZV9wdHBfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2MS1cdGlmICh0ZXN0X2JpdChNTFg1RV9QVFBfU1RBVEVfUlgsIGMtXHUwMDNlc3RhdGUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTYyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cdFx0bWx4NWVfZGVhY3RpdmF0ZV9ycShcdTAwMjZjLVx1MDAzZXJxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0Ni1cdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVx1MDAzZXR4cSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NDc6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cdTAwM2VuZXRkZXYsIHNxLVx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIHNxLVx1MDAzZWNxLm5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoc3EtXHUwMDNlbmV0ZGV2LCBzcS1cdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2Mi1cdGNsZWFyX2JpdChNTFg1RV9TUV9TVEFURV9FTkFCTEVELCBcdTAwMjZzcS1cdTAwM2VzdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cdTAwM2VuZXRkZXYsIGMtXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZjLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5Mzk9c3RhdGljIHZvaWQgbWx4NWVfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6Mjk0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZWl4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjExNT1zdGF0aWMgdm9pZCBmYm5pY19zZXRfbmV0aWZfbmFwaShzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTIzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlc3ViMC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZudi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEzMTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXHUwMDNlbmFwaS5kZXYsIHF0LVx1MDAzZWNtcGwucV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2bnYtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjEzNj1zdGF0aWMgdm9pZCBmYm5pY19yZXNldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNDQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VzdWIwLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlY21wbC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTMtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0zMjE9c3RhdGljIHZvaWQgcnRhc2VfdHhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozNTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTQtXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz01OTA9c3RhdGljIHZvaWQgcnRhc2VfcnhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDctXHRyaW5nLVx1MDAzZWl2ZWMgPSBcdTAwMjZ0cC1cdTAwM2VpbnRfdmVjdG9yW2lkeF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDktXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xMTY2PXN0YXRpYyB2b2lkIHJ0YXNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVx0XHRcdFx0XHQgcmluZ19lbnRyeSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVx0XHRcdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTcxNz1zdGF0aWMgdm9pZCBydGFzZV9zd19yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzctXHRcdFx0XHRcdCByaW5nX2VudHJ5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxNzM4Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzktXHRcdFx0XHRcdCAgICAgcmluZy1cdTAwM2V0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTYtXHRcdGlmIChpIFx1MDAzYyBuZGV2LVx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxNzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTgtXHRcdFx0XHRcdCAgICAgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzE5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTc3Mj1zdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVx0bmFwaV9lbmFibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4MjY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI5LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg3MTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzMtXHRuYXBpX2Rpc2FibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYz0xMjIzPXN0YXRpYyB2b2lkIG5ldHZzY19zY19vcGVuKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdfc2MpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXHRuYXBpX2VuYWJsZShcdTAwMjZudmNoYW4tXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI2MDpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cdFx0XHQgICAgIFx1MDAyNm52Y2hhbi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYzLVx0XHRcdCAgICAgXHUwMDI2bnZjaGFuLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVx0XHRuZXRkZXZfbm90aWNlKG5kZXYsIFwmIzM0O3N1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjcwOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNzEtXHRcdFx0XHQgICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTctXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAxPW5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgyOC1cdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgyOTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzAtXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQ0LVx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODE1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShycS1cdTAwM2V2cSwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4MjItfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cdTAwM2V2cSwgbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODQ1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9kaXNhYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cdGlmIChuYXBpLVx1MDAzZXdlaWdodCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTMtXHRcdG5hcGlfZGlzYWJsZShuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjItXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXHRuYXBpX2Rpc2FibGUobmFwaSk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDItXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXHRcdFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzI4NT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XG4tLVxubmV0L2NvcmUvZGV2LmMtNzI4Ny0vKipcbm5ldC9jb3JlL2Rldi5jOjcyODg6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxubmV0L2NvcmUvZGV2LmMtNzI4OS0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXG4tLVxubmV0L2NvcmUvZGV2LmMtNzI5Ny0gKi9cbm5ldC9jb3JlL2Rldi5jOjcyOTg6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5uZXQvY29yZS9kZXYuYy03Mjk5LVx0XHRcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMyMC19XG5uZXQvY29yZS9kZXYuYzo3MzIxOkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xubmV0L2NvcmUvZGV2LmMtNzMyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5ODEKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMzI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhZGRpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBjYWxscy4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRyaXZlci4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyBlZmZvcnRzLiBJIHNlZSB0aGUgbWFpbiBmdW5jdGlvbnMgYWZmZWN0ZWQgYXJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuCgpHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEFuZCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBmdXp6aW5nIHRhcmdldHMsIHNvIEkmIzM5O2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBgWyYjMzQ7bnNpbV9xdWV1ZV9zdGFydCYjMzQ7LCAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7XWAuIE9mIGNvdXJzZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkLCBzbyBJJiMzOTtsbCBhbHNvIGFkZCBgRW5hYmxlQ29uZmlncz1bJiMzNDtORVRERVZTSU0mIzM0O11gLgoKV2FpdCBhIHNlY29uZOKApiBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBBcmUgdGhvc2UgZnVuY3Rpb25zIGlubGluZWQ/IEkgcXVpY2tseSByZW1lbWJlciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBUaGV5IG1pZ2h0IGJlIGlubGluZWQuIEFoLCBuby4gVGhleSYjMzk7cmUgcGFydCBvZiBhIHN0cnVjdCBvZiBmdW5jdGlvbiBwb2ludGVycy4gVGhhdCYjMzk7cyBnb29kLiBUaGV5IGFyZSBhc3NpZ25lZCB0byBhIHN0cnVjdDoKCmBgYGMKc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHsKCS5uZG9fcXVldWVfbWVtX3NpemUJPSBuc2ltX3F1ZXVlX21lbV9zaXplLAoJLm5kb19xdWV1ZV9tZW1fYWxsb2MJPSBuc2ltX3F1ZXVlX21lbV9hbGxvYywKCS5uZG9fcXVldWVfbWVtX2ZyZWUJPSBuc2ltX3F1ZXVlX21lbV9mcmVlLAoJLm5kb19xdWV1ZV9zdGFydAk9IG5zaW1fcXVldWVfc3RhcnQsCgkubmRvX3F1ZXVlX3N0b3AJCT0gbnNpbV9xdWV1ZV9zdG9wLAp9OwpgYGAKClNvIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLiBUaGF0JiMzOTtzIHVzZWZ1bCBpbmZvcm1hdGlvbi4gU28gSSBjYW4gYmUgY29uZmlkZW50IGluIHRob3NlIGZvY3VzIHN5bWJvbHMuCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGF0IGluZm9ybWF0aW9uIHRvIGBGb2N1c1N5bWJvbHNgLiBUaGVuIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGVzZSB2YWx1ZXMgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgdGFyZ2V0cyB0aGVzZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YTcyMTQ2MGZjNWZjMjY4YTc5NDU5NTBmYmRmMzg5ZjBjNTkyNDdkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mjg6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKaW5kZXggNGU5ZDdlMTBiNTI3ZS4uYzE4ZjlmNTQwMDg0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwpAQCAtODI2LDYgJiM0Mzs4MjYsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLAogCX0KIAogCW5zLSZndDtycVtpZHhdID0gcW1lbS0mZ3Q7cnE7CiYjNDM7CW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwKJiM0MzsJCQkgICAgICZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAogCXJldHVybiAwOwpAQCAtODM4LDYgJiM0Mzs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KQogCiAJbmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTsKIAomIzQzOwluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCW5hcGlfZGlzYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlpZiAobnMtJmd0O3JxX3Jlc2V0X21vZGUgPT0gMSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBJIHNlZSBpdCYjMzk7cyBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB3aXRoaW4gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gRXNzZW50aWFsbHksIHRoaXMgbG9va3MgbGlrZSB0aGUgY29kZSBpcyBzZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gTmV0d29yayBBUEkgKE5BUEkpIGFzc29jaWF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgcXVldWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgcG90ZW50aWFsIHJpc2tzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBhbHdheXMgYSByZWQgZmxhZy4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgTkFQSSBhbmQgZGV2aWNlIGRyaXZlciBpbnRlcm5hbHMsIGFzc29jaWF0aW5nIGEgTkFQSSBjb250ZXh0IHdpdGggYSBxdWV1ZSB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHN1Z2dlc3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBJdCYjMzk7cyBtb3N0IGxpa2VseSBhIHBvaW50ZXIgYXNzaWdubWVudCBvciBzaW1pbGFyIG9wZXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIGNvcmUuIEhvd2V2ZXIsIEkgY2FuJiMzOTt0IGJlICpjb21wbGV0ZWx5KiBjZXJ0YWluIHdpdGhvdXQgYSBjbG9zZXIgbG9vay4KCkp1c3QgdG8gYmUgc2FmZSwgSSBzaG91bGQgdmVyaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFic29sdXRlbHkgY29uZmlybSB0aGF0IG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0LiBJdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgbWVtb3J5IHBvaW50ZXIsIGJ1dCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LiBMZXQmIzM5O3MgY2FsbCB1cCBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX3F1ZXVlX3NldF9uYXBpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MDY9c3RhdGljIHZvaWQgZW5hX25hcGlfZGlzYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTc6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODIwLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgzNy1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM5LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4NDA6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODQxLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTY1OT1zdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcGFpcihzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBpbnQgcmluZ19ucilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNjY2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNjY3LVx0XHRcdCAgICAgXHUwMDI2cnhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNzAxPXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE3MTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTcxNC1cdFx0XHRcdCAgICAgXHUwMDI2dHhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0yNzI1PXN0YXRpYyB2b2lkIGJuZ2VfZGVsX25hcGkoc3RydWN0IGJuZ2VfbmV0ICpibilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJkLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmQtXHUwMDNldHhfbnJfcmluZ3M7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXHRcdFx0ICAgICBcdTAwMjZyeHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDY5Mz1zdGF0aWMgaW50IGJueHRfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcwOS1cdFx0aWYgKGkgXHUwMDNlPSBicC1cdTAwM2V0eF9ucl9yaW5nc194ZHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVx1MDAzZWRldiwgaSAtIGJwLVx1MDAzZXR4X25yX3JpbmdzX3hkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTE5NzM9c3RhdGljIHZvaWQgYm54dF9kZWxfbmFwaShzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VyeF9ucl9yaW5nczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxMTk4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXHUwMDNldHhfbnJfcmluZ3NfeGRwOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDAzLVx0XHRpZiAodG5hcGktXHUwMDNldHhfYnVmZmVycykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHR4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA1LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVx0XHRpZiAodG5hcGktXHUwMDNlcnhfcmNiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcnhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTc0MTc9c3RhdGljIHZvaWQgdGczX25hcGlfZW5hYmxlKHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXHRcdGlmICh0bmFwaS1cdTAwM2V0eF9idWZmZXJzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDI3Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgdHhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzMi1cdFx0aWYgKHRuYXBpLVx1MDAzZXJ4X3JjYikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQzMzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJ4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDM0LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0xOTc0PXN0YXRpYyB2b2lkIHRzbmVwX3F1ZXVlX2VuYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTgyLVx0aWYgKHF1ZXVlLVx1MDAzZXR4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4MzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXR4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZxdWV1ZS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cdGlmIChxdWV1ZS1cdTAwM2VyeCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2cXVldWUtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5OTU9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZGlzYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTk5LVx0aWYgKHF1ZXVlLVx1MDAzZXJ4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDAxLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDQtXHRcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXHUwMDNldHgsIFx1MDAyNnF1ZXVlLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2V0eC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5MjQ9c3RhdGljIHZvaWQgZ3ZlX3R1cm5kb3duKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cdFx0aWYgKGlkeCBcdTAwM2MgcHJpdi1cdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTQzOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0NC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1Ni1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5NzI9c3RhdGljIHZvaWQgZ3ZlX3R1cm51cChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXHRcdGlmIChpZHggXHUwMDNjIHByaXYtXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk5MDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5OTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTUtXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDE2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDE3LVx0XHRcdFx0ICAgICBcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0xOTg9aW50IGhpbmljM19xcHNfaXJxX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyMzQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2aXJxX2NmZy1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzctXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZpcnFfY2ZnLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cdFx0cXBfZGVsX25hcGkoaXJxX2NmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU0LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MjcwPXZvaWQgaGluaWMzX3Fwc19pcnFfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVx0XHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODAtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODItXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9NDgxPXZvaWQgZTEwMDBfZG93bihzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTUxMy1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xMzUyPWludCBlMTAwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTk6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ2MzY9aW50IGUxMDAwZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTItXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYzo0Nzc0Olx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3NS1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzkzLVx0XHRpZiAodnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XSBcdTAwMjZcdTAwMjYgdnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3RvcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5NDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5NS1cdFx0XHRcdFx0ICAgICBcdTAwMjZ2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5OC1cdFx0aWYgKHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0gXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0tXHUwMDNlcV92ZWN0b3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MDAtXHRcdFx0XHRcdCAgICAgXHUwMDI2dnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMxLVx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODMyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzQtXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQzLVx0Zm9yICh1MzIgaSA9IDA7IGkgXHUwMDNjIHFfdmVjdG9yLVx1MDAzZW51bV9yeHE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ0Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVx1MDAzZXJ4W2ldLVx1MDAzZWlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBxX3ZlY3Rvci1cdTAwM2VudW1fdHhxOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0ODpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBxX3ZlY3Rvci1cdTAwM2V0eFtpXS1cdTAwM2VpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDktXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMTAyPXZvaWQgaWdiX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTE0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MDk3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MDk4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTEwMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NTEwMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz04OT1pbnQgbWx4NF9lbl9hY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1NC1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2Mi1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTE5Nj12b2lkIG1seDRfZW5fZGVhY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoyMDY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3EtXHUwMDNlY3FfaWR4LCBxdHlwZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk1MS1cdFx0bWx4NWVfYWN0aXZhdGVfcnEoXHUwMDI2Yy1cdTAwM2VycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmMtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz05NTc9dm9pZCBtbHg1ZV9wdHBfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2MS1cdGlmICh0ZXN0X2JpdChNTFg1RV9QVFBfU1RBVEVfUlgsIGMtXHUwMDNlc3RhdGUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTYyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cdFx0bWx4NWVfZGVhY3RpdmF0ZV9ycShcdTAwMjZjLVx1MDAzZXJxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0Ni1cdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVx1MDAzZXR4cSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NDc6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cdTAwM2VuZXRkZXYsIHNxLVx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIHNxLVx1MDAzZWNxLm5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoc3EtXHUwMDNlbmV0ZGV2LCBzcS1cdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2Mi1cdGNsZWFyX2JpdChNTFg1RV9TUV9TVEFURV9FTkFCTEVELCBcdTAwMjZzcS1cdTAwM2VzdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cdTAwM2VuZXRkZXYsIGMtXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZjLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5Mzk9c3RhdGljIHZvaWQgbWx4NWVfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6Mjk0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZWl4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjExNT1zdGF0aWMgdm9pZCBmYm5pY19zZXRfbmV0aWZfbmFwaShzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTIzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlc3ViMC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZudi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEzMTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXHUwMDNlbmFwaS5kZXYsIHF0LVx1MDAzZWNtcGwucV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2bnYtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjEzNj1zdGF0aWMgdm9pZCBmYm5pY19yZXNldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNDQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VzdWIwLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlY21wbC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTMtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0zMjE9c3RhdGljIHZvaWQgcnRhc2VfdHhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozNTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTQtXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz01OTA9c3RhdGljIHZvaWQgcnRhc2VfcnhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDctXHRyaW5nLVx1MDAzZWl2ZWMgPSBcdTAwMjZ0cC1cdTAwM2VpbnRfdmVjdG9yW2lkeF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDktXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xMTY2PXN0YXRpYyB2b2lkIHJ0YXNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVx0XHRcdFx0XHQgcmluZ19lbnRyeSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVx0XHRcdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTcxNz1zdGF0aWMgdm9pZCBydGFzZV9zd19yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzctXHRcdFx0XHRcdCByaW5nX2VudHJ5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxNzM4Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzktXHRcdFx0XHRcdCAgICAgcmluZy1cdTAwM2V0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTYtXHRcdGlmIChpIFx1MDAzYyBuZGV2LVx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxNzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTgtXHRcdFx0XHRcdCAgICAgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzE5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTc3Mj1zdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVx0bmFwaV9lbmFibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4MjY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI5LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg3MTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzMtXHRuYXBpX2Rpc2FibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYz0xMjIzPXN0YXRpYyB2b2lkIG5ldHZzY19zY19vcGVuKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdfc2MpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXHRuYXBpX2VuYWJsZShcdTAwMjZudmNoYW4tXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI2MDpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cdFx0XHQgICAgIFx1MDAyNm52Y2hhbi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYzLVx0XHRcdCAgICAgXHUwMDI2bnZjaGFuLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVx0XHRuZXRkZXZfbm90aWNlKG5kZXYsIFwmIzM0O3N1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjcwOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNzEtXHRcdFx0XHQgICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTctXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAxPW5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgyOC1cdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgyOTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzAtXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQ0LVx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODE1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShycS1cdTAwM2V2cSwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4MjItfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cdTAwM2V2cSwgbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODQ1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9kaXNhYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cdGlmIChuYXBpLVx1MDAzZXdlaWdodCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTMtXHRcdG5hcGlfZGlzYWJsZShuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjItXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXHRuYXBpX2Rpc2FibGUobmFwaSk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDItXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXHRcdFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzI4NT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XG4tLVxubmV0L2NvcmUvZGV2LmMtNzI4Ny0vKipcbm5ldC9jb3JlL2Rldi5jOjcyODg6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxubmV0L2NvcmUvZGV2LmMtNzI4OS0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXG4tLVxubmV0L2NvcmUvZGV2LmMtNzI5Ny0gKi9cbm5ldC9jb3JlL2Rldi5jOjcyOTg6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5uZXQvY29yZS9kZXYuYy03Mjk5LVx0XHRcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMyMC19XG5uZXQvY29yZS9kZXYuYzo3MzIxOkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xubmV0L2NvcmUvZGV2LmMtNzMyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NDAKCQkJCQkJCW91dHB1dDogMTgxCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3MgbWFraW5nIGNoYW5nZXMgdG8gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBieSBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gRnJvbSBhIG5ldHdvcmtpbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQmIzM5O3MgdGhlIHN0YW5kYXJkIEFQSSBmb3IgYXNzb2NpYXRpbmcgYSBOQVBJIGNvbnRleHQgd2l0aCBhIHNwZWNpZmljIHF1ZXVlLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhcm91bmQgcG90ZW50aWFsIG1lbW9yeSBpc3N1ZXMsIGJ1dCBhZnRlciBsb29raW5nIGludG8gdGhpcywgaXQmIzM5O3MgY2xlYXIgdGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQmIzM5O3MgZ29pbmcgdG8gdHJpZ2dlciB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIFdlJiMzOTtyZSBqdXN0IHNldHRpbmcgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBObyBjaGFuY2Ugb2YgaW5mbyBsZWFrcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgZWl0aGVyLiBUaGF0JiMzOTtzIGdvb2QuIFdoaWNoIG1lYW5zLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQsIEkgY2FuIGNvbmNsdWRlIHdpdGggY29uZmlkZW5jZSB0aGF0IEtNU0FOIGlzbiYjMzk7dCBuZWNlc3NhcnkgZm9yIHRoaXMgcGFydGljdWxhciBjaGFuZ2UuIEl0IGxvb2tzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzaW1wbHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIGEgTkFQSSBjb250ZXh0IHdpdGggYSBuZXR3b3JrIGRldmljZSBxdWV1ZSBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlci4gVGhpcyBpcyBhIHN0YW5kYXJkIG5ldHdvcmtpbmcgQVBJIHRoYXQgc2V0cyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgZG9lcyBub3QgaW52b2x2ZSBjb21wbGV4IG1lbW9yeSBhbGxvY2F0aW9ucywgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgbGlrZWx5IGJlIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHVzZS1hZnRlci1mcmVlcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyODozMS41NzMxODg5ODNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIwMzQwOTA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gICAgXCJuc2ltX3F1ZXVlX3N0b3BcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGZ1enppbmcpIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgd2l0aCBSWCBxdWV1ZXMgZHVyaW5nIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjMxLjU3MzE5NTMxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA4ODUwNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWE3MjE0NjBmYzVmYzI2OGE3OTQ1OTUwZmJkZjM4OWYwYzU5MjQ3ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToyODozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5jMThmOWY1NDAwODRhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbkBAIC04MjYsNiArODI2LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4gXFx0fVxcbiBcXG4gXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG4rXFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbitcXHRcXHRcXHQgICAgIFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTgzOCw2ICs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbiBcXG4gXFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4gXFxuK1xcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuIFxcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4gXFxuIFxcdGlmIChucy1cXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjMxLjk4MjgyMDc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDM1OTI0MjgxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9xdWV1ZV9zdGFydFwiLFxuICAgIFwibnNpbV9xdWV1ZV9zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZyBhbmQgZnV6emluZykgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSB3aXRoIFJYIHF1ZXVlcyBkdXJpbmcgcXVldWUgc3RhcnQgYW5kIHN0b3Agb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWE3MjE0NjBmYzVmYzI2OGE3OTQ1OTUwZmJkZjM4OWYwYzU5MjQ3ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE1OjI4OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5jMThmOWY1NDAwODRhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC04MjYsNiArODI2LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbiBcdH1cbiBcbiBcdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuK1x0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuK1x0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtODM4LDYgKzg0MCw3IEBAIHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXG4gXG4gXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuIFxuK1x0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbiBcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdGlmIChucy1cdTAwM2VycV9yZXNldF9tb2RlID09IDEpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjMxLjk4MjgyMjM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE4MzUxMjc1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byBuZXRkZXZzaW0qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYCwgcmlnaHQ/IFNlZW1zIGxpa2Ugc29tZW9uZSBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbmV0ZGV2c2ltIGRyaXZlci4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIGdpdmVuIGl0cyBoZWF2eSB1c2UgaW4gdGVzdGluZyBhbmQgZnV6emluZy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggdG91Y2hlcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgLCBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gSW4gYG5zaW1fcXVldWVfc3RhcnRgLCB3ZSdyZSBzZXR0aW5nIHRoZSBOQVBJIGZvciB0aGUgUlggcXVldWUgKGBORVRERVZfUVVFVUVfVFlQRV9SWGApLCBhbmQgdGhlbiBjbGVhcmluZyBpdCBpbiBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBzaGlmdDsgaXQgaW1wbGllcyBjaGFuZ2VzIGluIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgUlggcHJvY2Vzc2luZy4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBjb25maWcgZGVwZW5kZW5jaWVzLCBzbyBsZXQncyBjaGVjayBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYCBub3cuLi4gYWgsIHllcywgYE5FVERFVlNJTWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy4gTm93LCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBsZXQgbWUgcnVuIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBvdmVydmlldyBvZiB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoaW4gdGhlIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjM4LjE2NjMzODUzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk3MTU0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODAxOm5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgwMi1cXHRcXHQgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTktXFx0Lm5kb19xdWV1ZV9tZW1fZnJlZVxcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODYwOlxcdC5uZG9fcXVldWVfc3RhcnRcXHQ9IG5zaW1fcXVldWVfc3RhcnQsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2MS1cXHQubmRvX3F1ZXVlX3N0b3BcXHRcXHQ9IG5zaW1fcXVldWVfc3RvcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjg6MzguMjEzMzE0NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzI5OTEzNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIGEgcHJvbWlzaW5nIHRhcmdldC4gVGhlc2UgZnVuY3Rpb25zIHdpdGhpbiBgbnNpbV9xdWV1ZV9tZ210X29wc2AgaW1wbGVtZW50IGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyByZWFjaGFibGUgYW5kIHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBORVRERVZTSU1gIGlzIHRoZSByZWxldmFudCBjb25maWcgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIGNvbnNpZGVyLCB3aGljaCBtaWdodCBhZmZlY3QgdGhlIGNvZGUgcGF0aCBhbmQgdGh1cyB0aGUgZnV6emluZyBzdHJhdGVneS4gSSdsbCBuZWVkIHRvIGV4cGFuZCBteSB2aWV3IHRvIGluY2x1ZGUgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXMgd2VsbC4gVGhpcyBhcmVhIGlzIGRlZmluaXRlbHkgcmlwZSBmb3IgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjQxLjU0MzIzMjAxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjM3NDE2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVERFVlNJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjg6NDEuNTg5NjMxNzU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3NTM0ODU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aGF0ZXZlciBJJ20gd29ya2luZyBvbiwgbGlrZWx5IHNvbWV0aGluZyBuZXR3b3JrLXJlbGF0ZWQgZ2l2ZW4gdGhlIGNvbnRleHQuIE15IGluaXRpYWwgaW5zdGluY3QsIGJhc2VkIG9uIHRoZSBsaWtlbHkgY29tcG9uZW50cyBpbnZvbHZlZCwgcG9pbnRzIG1lIGRpcmVjdGx5IHRvIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIGZpbGVzLiBNeSBmaXJzdCBzdG9wLCBhbmQgdGhlIG1vc3QgbG9naWNhbCBiYXNlZCBvbiBuYW1pbmcgY29udmVudGlvbnMgYW5kIGxpa2VseSBmaWxlIHN0cnVjdHVyZSwgaXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AgZGlyZWN0b3J5IGFuZCBpdHMgYEtjb25maWdgIGZpbGUuIEdpdmVuIG15IHByaW9yIGV4cGVyaWVuY2Ugd2l0aCB0aGUgc2ltdWxhdG9yLCB0aGF0J3MgYWxtb3N0IGFsd2F5cyB0aGUgZmlyc3QgcGxhY2UgdG8gY2hlY2suIElmIHRoYXQgZG9lc24ndCBob2xkIHRoZSBhbnN3ZXIsIHRoZW4gSSdsbCBicm9hZGVuIHRoZSBzY29wZS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0J3MgdGhlIGNvcmUgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiwgYW5kIGl0J3MgYWxtb3N0IGNlcnRhaW4gdG8gaW5jbHVkZSB0aGUgcmVsZXZhbnQgb3B0aW9ucywgb3IgYXQgbGVhc3QgcG9pbnQgbWUgdG93YXJkcyB0aGUgY29ycmVjdCBsb2NhdGlvbiBpZiBpdCdzIG5lc3RlZCBtb3JlIGRlZXBseS4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lLCBJJ2xsIGdvIHN0cmFpZ2h0IGZvciB0aGUgbW9zdCBsaWtlbHkgcGF0aHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyODo0NS45NjQ5ODIxNzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImJwZi5jXCIsXG4gICAgXCJidXMuY1wiLFxuICAgIFwiZGV2LmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZmliLmNcIixcbiAgICBcImhlYWx0aC5jXCIsXG4gICAgXCJod3N0YXRzLmNcIixcbiAgICBcImlwc2VjLmNcIixcbiAgICBcIm1hY3NlYy5jXCIsXG4gICAgXCJuZXRkZXYuY1wiLFxuICAgIFwibmV0ZGV2c2ltLmhcIixcbiAgICBcInBzYW1wbGUuY1wiLFxuICAgIFwicHNwLmNcIixcbiAgICBcInRjLmNcIixcbiAgICBcInVkcF90dW5uZWxzLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjg6NDUuOTY1MDQzMzAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODE1OTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKktjb25maWcgTG9jYXRpb24gRGlsZW1tYSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB3aGVyZSB0aGUgS2NvbmZpZyBmaWxlIGlzIGZvciB0aGUgbmV0d29yayBkcml2ZXIgc3R1ZmYuIEkgaW1tZWRpYXRlbHkgdGhvdWdodCBpdCB3YXMgaW4gYGRyaXZlcnMvbmV0L0tjb25maWdgLCB0aGF0J3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdC4gQnV0IGhvbGQgb24sIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIuLi4gZG9lcyBpdCBoYXZlIGl0cyBvd24gc3BlY2lmaWMgS2NvbmZpZyBmaWxlPyBMZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCB0aGVyZSBpc24ndCBhIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AgZmlsZS4gSG1tLCB0aGF0J3MgdW51c3VhbCwgSSBndWVzcyBpdCByZWxpZXMgb24gYSBzaGFyZWQgb25lLCB3aGljaCBvbmUgZGVmaW5lcyBgTkVUREVWU0lNYD8gQmV0dGVyIHN0YXJ0IGJ5IHNlYXJjaGluZyBmb3Igd2hlcmUgdGhhdCBzeW1ib2wgZ2V0cyBkZWZpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTQ5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjQ5LjMxMzIwNjc5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MTYxMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjQ5LjQ2MTM3NDY3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI1NDAxNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEZWNvbnN0cnVjdGluZyBORVRERVZTSU0gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUREVWU0lNYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBpdCByZWxpZXMgb24/XCIgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYXQgYSBoaWdoIGxldmVsLiBJcyBpdCBidWlsdCBvbiBhIHNwZWNpZmljIHNpbXVsYXRpb24gZnJhbWV3b3JrPyBEb2VzIGl0IGxldmVyYWdlIGFueSBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgbGlicmFyaWVzPyBBcmUgdGhlcmUgYW55IGRhdGEgYW5hbHlzaXMgb3IgdmlzdWFsaXphdGlvbiB0b29scyB0aGF0IGFyZSBpbnRlZ3JhbCB0byBpdHMgZnVuY3Rpb25hbGl0eT9cblxuSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciBhIHByb2plY3Qgc3RydWN0dXJlIG9yIGRvY3VtZW50YXRpb24gdGhhdCBtaWdodCBwcm92aWRlIHNvbWUgY2x1ZXMuIE1heWJlIHRoZXJlJ3MgYSBgcmVxdWlyZW1lbnRzLnR4dGAgZmlsZSwgb3IgYSBzZWN0aW9uIG9uIGRlcGVuZGVuY2llcyBpbiB0aGUgUkVBRE1FLiBJJ20gYW50aWNpcGF0aW5nIHRoYXQga25vd2luZyB0aGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgd2hhdCBpcyBuZWVkZWQgZm9yIG15IHdvcmsuXG5cbk9uY2UgSSBoYXZlIGEgbGlzdCBvZiB0aGVzZSBkZXBlbmRlbmNpZXMsIEkgd2lsbCBuZWVkIHRvIGNhdGVnb3JpemUgdGhlbS4gRGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBjb3JlIGxpYnJhcmllcywgb3B0aW9uYWwgZmVhdHVyZXMsIGFuZCBkZXZlbG9wZXIgdG9vbHMgd2lsbCBiZSBpbXBvcnRhbnQuIEl0IHdpbGwgYmUgaGVscGZ1bCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBleHRlcm5hbCBsaWJyYXJpZXMsIGluLWhvdXNlIG1vZHVsZXMsIG9yIHN0YW5kYXJkIFB5dGhvbiBwYWNrYWdlcy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8ga25vdyB0aGUgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGFzIHdlbGw7IEkgZG9uJ3Qgd2FudCB0byBydW4gaW50byBhbnkgdW5leHBlY3RlZCBjb25mbGljdHMgZG93biB0aGUgbGluZS5cblxuRmluYWxseSwgSSB3aWxsIHdhbnQgdG8gYXNzZXNzIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgaW50ZXJhY3Qgd2l0aCB0aGUgc2ltdWxhdG9yIGl0c2VsZi4gQXJlIHRoZXkgdGlnaHRseSBjb3VwbGVkLCBvciBpcyB0aGUgYXJjaGl0ZWN0dXJlIG1vcmUgbW9kdWxhcj8gVGhpcyB3aWxsIGdpdmUgbWUgYSBzZW5zZSBvZiB0aGUgc3lzdGVtJ3MgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbCBmb3IgZXh0ZW5zaW9uLiBVbHRpbWF0ZWx5LCB1bmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB3b3JraW5nIHdpdGggYE5FVERFVlNJTWAgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyODo1My41ODY3Nzg0NDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MDQsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDQ6XFx0Y29uZmlnIE5FVERFVlNJTVxcbiA2MDU6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVxcXCJcXG4gNjA2OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG4gNjA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiA2MDg6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxcbiA2MDk6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbiA2MTA6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuIDYxMTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuIDYxMjpcXHRcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbiA2MTM6XFx0XFx0aGVscFxcbiA2MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgYW5kIHNvZnR3YXJlIG1vZGVsIHRoYXQgY2FuXFxuIDYxNTpcXHRcXHQgIGJlIHVzZWQgdG8gdGVzdCB2YXJpb3VzIGNvbnRyb2wgcGF0aCBuZXR3b3JraW5nIEFQSXMsIGVzcGVjaWFsbHlcXG4gNjE2OlxcdFxcdCAgSFctb2ZmbG9hZCByZWxhdGVkLlxcbiA2MTc6XFx0XFxuIDYxODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gNjE5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbmV0ZGV2c2ltLlxcbiA2MjA6XFx0XFxuIDYyMTpcXHRjb25maWcgTkVUX0ZBSUxPVkVSXFxuIDYyMjpcXHRcXHR0cmlzdGF0ZSBcXFwiRmFpbG92ZXIgZHJpdmVyXFxcIlxcbiA2MjM6XFx0XFx0c2VsZWN0IEZBSUxPVkVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjUzLjU4Njg2OTUxN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjA0NjE1MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgTkVUREVWU0lNYCBDb25maWd1cmF0aW9uIGFuZCBBUEkgRGVzaWduKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVERFVlNJTWAuIEl0IGxvb2tzIGxpa2UgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIGJvdGggYERFQlVHX0ZTYCBhbmQgYElORVRgLCBzbyBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBwcm9wZXJseSBoYW5kbGVkIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFRoZSBjb3JlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBoZXJlIHNlZW0gdG8gYmUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY29ycmVjdGx5IGludGVncmF0ZWQuXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgdGhlc2UgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBmdW5jdGlvbnMgYXJlICpzdGF0aWMqLCBhbmQgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUsIGluZGVlZCwgc3RhdGljLiAqWWVwKiwgdGhleSBhcmU6IGBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RhcnQoLi4uKWAgYW5kIGBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcCguLi4pYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhlIHByb21wdCBpcyBlbmNvdXJhZ2luZyB1c2luZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgdG8gYXZvaWQgaW5saW5pbmcuXG5cbkJ1dCB3YWl0LCB0aGVzZSBmdW5jdGlvbnMsIGV2ZW4gYmVpbmcgc3RhdGljLCBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBuc2ltX3F1ZXVlX21nbXRfb3BzYDpcblxuYGBgY1xuc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcblx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PSBuc2ltX3F1ZXVlX21lbV9zaXplLFxuXHQubmRvX3F1ZXVlX21lbV9hbGxvY1x0PSBuc2ltX3F1ZXVlX21lbV9hbGxvYyxcblx0Lm5kb19xdWV1ZV9tZW1fZnJlZVx0PSBuc2ltX3F1ZXVlX21lbV9mcmVlLFxuXHQubmRvX3F1ZXVlX3N0YXJ0XHQ9IG5zaW1fcXVldWVfc3RhcnQsXG5cdC5uZG9fcXVldWVfc3RvcFx0XHQ9IG5zaW1fcXVldWVfc3RvcCxcbn07XG5gYGBcblxuQmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBpdCBpcyByZWFzb25hYmxlIHRvIGJlbGlldmUgdGhhdCB0aGV5ICpjYW4ndCogYmUgZnVsbHkgaW5saW5lZCBhbmQgd2lsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEdpdmVuIHRoaXMsIGl0IHNob3VsZCBiZSBmaW5lIHRvIGluY2x1ZGUgdGhlbS4gSG93ZXZlciwgaXQncyBlc3NlbnRpYWwgdG8gbm90ZSB0aGF0IHRoZXkgYXJlIGNhbGxlZCB2aWEgYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAuIFNvLCB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgd2hlcmUgYG5zaW1fcXVldWVfbWdtdF9vcHNgIGlzIHVzZWQgYW5kIGhvdyB0aG9zZSBhcmUgdWx0aW1hdGVseSBjYWxsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOTowMS43OTE0ODcxMDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTcyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fcXVldWVfbWdtdF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTctXFx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBuc2ltX3F1ZXVlX21lbSksXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MT1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA1My1cXHRucy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0X29wcyA9IFxcdTAwMjZuc2ltX3N0YXRfb3BzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMDU0OlxcdG5zLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXFx1MDAyNm5zaW1fcXVldWVfbWdtdF9vcHM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobnMtXFx1MDAzZW5ldGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjAxLjgzNjY2NDQzNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQwNjYxMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGluIE5ldHdvcmsgSW50ZXJmYWNlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gSG93ZXZlciwgYSBxdWljayBzYW5pdHkgY2hlY2s6IHNpbmNlIHRoZXkncmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGV5IGFyZSwgaW4gZmFjdCwgYWNjZXNzaWJsZSB2aWEgdGhlIHN5bWJvbCB0YWJsZS4gSWYgdGhleSdyZSBwcmVzZW50IGluIGBrYWxsc3ltc2AsIHRoZW4gc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIHRoZW0uIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gY29uZmlybSB0aGVpciB2aXNpYmlsaXR5LlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb25zLiBBaCwgdGhlIHBhdGNoIG1lbnRpb25zIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMuIE9rYXksIHRoYXQncyBhIG5ldyBsZWFkLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBhbmQgZGV0ZXJtaW5lIGhvdyBpdCBtaWdodCBwcm92aWRlIGFub3RoZXIgcm91dGUgZm9yIGZ1enppbmcgb3IgZXhwb3N1cmUuIEknbGwgbG9vayBhdCB0aGUgY2FsbCBzaXRlcyBhbmQgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOTowNS43NzczMjc5MTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTYyNTMwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0aWZfcXVldWVfc2V0X25hcGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MDY9c3RhdGljIHZvaWQgZW5hX25hcGlfZGlzYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE2LVxcdFxcdFxcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTc6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MTgtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgxOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgyMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MjY9c3RhdGljIHZvaWQgZW5hX25hcGlfZW5hYmxlX2luX3JhbmdlKHN0cnVjdCBlbmFfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzctXFx0XFx0XFx0LyogVGhpcyBBUEkgaXMgc3VwcG9ydGVkIGZvciBub24tWERQIHF1ZXVlcyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgzODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgzOS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYzoxODQwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODQxLVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTE2NTk9c3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9yeF9yaW5nX3BhaXIoc3RydWN0IGJuZ2VfbmV0ICpibiwgaW50IHJpbmdfbnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MTY2NjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cXHUwMDNlbmV0ZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2Ny1cXHRcXHRcXHQgICAgIFxcdTAwMjZyeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNzAxPXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE3MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE3MTM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE3MTQtXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dHhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MjcyNT1zdGF0aWMgdm9pZCBibmdlX2RlbF9uYXBpKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmQtXFx1MDAzZXJ4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBiZC1cXHUwMDNldHhfbnJfcmluZ3M7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MjczMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjI4PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZV9yeF9yaW5nKHN0cnVjdCBibnh0ICpicCwgaW50IHJpbmdfbnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy00NjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ2MzU6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgcmluZ19uciwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNi1cXHRcXHRcXHQgICAgIFxcdTAwMjZyeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTQ2OTM9c3RhdGljIGludCBibnh0X2luaXRfdHhfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcwOS1cXHRcXHRpZiAoaSBcXHUwMDNlPSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ3MTA6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgaSAtIGJwLVxcdTAwM2V0eF9ucl9yaW5nc194ZHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcxMS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTE5NzM9c3RhdGljIHZvaWQgYm54dF9kZWxfbmFwaShzdHJ1Y3QgYm54dCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXJ4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTE5ODE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTgyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBicC1cXHUwMDNldHhfbnJfcmluZ3MgLSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTE5ODM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9NzM5ND1zdGF0aWMgdm9pZCB0ZzNfbmFwaV9kaXNhYmxlKHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQwMy1cXHRcXHRpZiAodG5hcGktXFx1MDAzZXR4X2J1ZmZlcnMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA0OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHR4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQwNS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDgtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2VyeF9yY2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA5OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJ4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQxMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTc0MTc9c3RhdGljIHZvaWQgdGczX25hcGlfZW5hYmxlKHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyNi1cXHRcXHRpZiAodG5hcGktXFx1MDAzZXR4X2J1ZmZlcnMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDI3OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHR4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyOC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzMi1cXHRcXHRpZiAodG5hcGktXFx1MDAzZXJ4X3JjYikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjc0MzM6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcnhxX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDM0LVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk3ND1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9lbmFibGUoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTgyLVxcdGlmIChxdWV1ZS1cXHUwMDNldHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4MzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIHF1ZXVlLVxcdTAwM2V0eC1cXHUwMDNlcXVldWVfaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODQtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNnF1ZXVlLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg4LVxcdGlmIChxdWV1ZS1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4OTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIHF1ZXVlLVxcdTAwM2VyeC1cXHUwMDNlcXVldWVfaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5OTAtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnF1ZXVlLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0xOTk1PXN0YXRpYyB2b2lkIHRzbmVwX3F1ZXVlX2Rpc2FibGUoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTk5LVxcdGlmIChxdWV1ZS1cXHUwMDNlcngpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDA6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNlcngtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDAxLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDQtXFx0XFx0dHNuZXBfdHhfZGlzYWJsZShxdWV1ZS1cXHUwMDNldHgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNldHgtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA2LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5MjQ9c3RhdGljIHZvaWQgZ3ZlX3R1cm5kb3duKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTQyLVxcdFxcdGlmIChpZHggXFx1MDAzYyBwcml2LVxcdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk0MzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0NC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTU1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1Ni1cXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5NzI9c3RhdGljIHZvaWQgZ3ZlX3R1cm51cChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk4OS1cXHRcXHRpZiAoaWR4IFxcdTAwM2MgcHJpdi1cXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5OTA6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cXHUwMDNlZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5OTEtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDE1LVxcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2YmxvY2stXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDE2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNy1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZibG9jay1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0xOTg9aW50IGhpbmljM19xcHNfaXJxX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyMzQ6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzNS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2aXJxX2NmZy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzctXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmlycV9jZmctXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjUyLVxcdFxcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1MzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1NTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU2LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MjcwPXZvaWQgaGluaWMzX3Fwc19pcnFfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNzgtXFx0XFx0cXBfZGVsX25hcGkoaXJxX2NmZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6Mjc5OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODAtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjgxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODItXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9NDgxPXZvaWQgZTEwMDBfZG93bihzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy01MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NTEyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy01MTMtXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xMzUyPWludCBlMTAwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTM5Ny1cXHRuYXBpX2VuYWJsZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxMzk5OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTQwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYz00NjM2PWludCBlMTAwMGVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTItXFx0bmFwaV9lbmFibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYzo0NzEzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxNDpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDc1Mj1pbnQgZTEwMDBlX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDc3MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDc3NDpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3NS1cXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYz0yNzgzPXZvaWQgaWNlX3ZzaV9zZXRfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5My1cXHRcXHRpZiAodnNpLVxcdTAwM2VyeF9yaW5nc1txX2lkeF0gXFx1MDAyNlxcdTAwMjYgdnNpLVxcdTAwM2VyeF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5NDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTUtXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dnNpLVxcdTAwM2VyeF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5OC1cXHRcXHRpZiAodnNpLVxcdTAwM2V0eF9yaW5nc1txX2lkeF0gXFx1MDAyNlxcdTAwMjYgdnNpLVxcdTAwM2V0eF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5OTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MDAtXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dnNpLVxcdTAwM2V0eF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9MjgxNT12b2lkIGljZV92c2lfY2xlYXJfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzMS1cXHRpY2VfZm9yX2VhY2hfdHhxKHZzaSwgcV9pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODMyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODM0LVxcdGljZV9mb3JfZWFjaF9yeHEodnNpLCBxX2lkeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jPTM4Mzg9c3RhdGljIHZvaWQgaWRwZl9xX3ZlY3Rvcl9zZXRfbmFwaShzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IsIGJvb2wgbGluaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0My1cXHRmb3IgKHUzMiBpID0gMDsgaSBcXHUwMDNjIHFfdmVjdG9yLVxcdTAwM2VudW1fcnhxOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXFx1MDAzZXJ4W2ldLVxcdTAwM2VpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ1LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ3LVxcdGZvciAodTMyIGkgPSAwOyBpIFxcdTAwM2MgcV92ZWN0b3ItXFx1MDAzZW51bV90eHE7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjM4NDg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBxX3ZlY3Rvci1cXHUwMDNldHhbaV0tXFx1MDAzZWlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDktXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMTAyPXZvaWQgaWdiX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDctXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjIxMDg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDktXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNlcngucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTEyLVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNldHgucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTEzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTE0LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXR4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTA5Mj1zdGF0aWMgdm9pZCBpZ2Nfc2V0X3F1ZXVlX25hcGkoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBpbnQgdmVjdG9yLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTA5Ny1cXHRpZiAocV92ZWN0b3ItXFx1MDAzZXJ4LnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NTA5ODpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTA5OS1cXHRcXHRcXHRcXHQgICAgIHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUxMDItXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2V0eC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUxMDM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUxMDQtXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNldHgucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM9ODk9aW50IG1seDRfZW5fYWN0aXZhdGVfY3Eoc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdiwgc3RydWN0IG1seDRfZW5fY3EgKmNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1NC1cXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNTU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXFx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTU2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2Mi1cXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNjM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXFx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTY0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTE5Nj12b2lkIG1seDRfZW5fZGVhY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoyMDY6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXFx1MDAzZWRldiwgY3EtXFx1MDAzZWNxX2lkeCwgcXR5cGUsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0yMDctXFx0XFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM9OTM5PXZvaWQgbWx4NWVfcHRwX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTEtXFx0XFx0bWx4NWVfYWN0aXZhdGVfcnEoXFx1MDAyNmMtXFx1MDAzZXJxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTUyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlcnEuaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2Yy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk1My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM9OTU3PXZvaWQgbWx4NWVfcHRwX2RlYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfcHRwICpjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2MS1cXHRpZiAodGVzdF9iaXQoTUxYNUVfUFRQX1NUQVRFX1JYLCBjLVxcdTAwM2VzdGF0ZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTYyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlcnEuaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTYzLVxcdFxcdG1seDVlX2RlYWN0aXZhdGVfcnEoXFx1MDAyNmMtXFx1MDAzZXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTkzOT12b2lkIG1seDVlX2FjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NDYtXFx0bmV0aWZfdHhfc3RhcnRfcXVldWUoc3EtXFx1MDAzZXR4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTQ3OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVxcdTAwM2VuZXRkZXYsIHNxLVxcdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBzcS1cXHUwMDNlY3EubmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTk1Nz12b2lkIG1seDVlX2RlYWN0aXZhdGVfdHhxc3Eoc3RydWN0IG1seDVlX3R4cXNxICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NjE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoc3EtXFx1MDAzZW5ldGRldiwgc3EtXFx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2Mi1cXHRjbGVhcl9iaXQoTUxYNUVfU1FfU1RBVEVfRU5BQkxFRCwgXFx1MDAyNnNxLVxcdTAwM2VzdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5MTk9c3RhdGljIHZvaWQgbWx4NWVfYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjkzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjI5MzY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cXHUwMDNlbmV0ZGV2LCBjLVxcdTAwM2VpeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZjLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTM5PXN0YXRpYyB2b2lkIG1seDVlX2RlYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjI5NDM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cXHUwMDNlbmV0ZGV2LCBjLVxcdTAwM2VpeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTIxMTU9c3RhdGljIHZvaWQgZmJuaWNfc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEyMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VzdWIwLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjQtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNm52LVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEzMTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VjbXBsLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzItXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNm52LVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTIxMzY9c3RhdGljIHZvaWQgZmJuaWNfcmVzZXRfbmV0aWZfbmFwaShzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTQ0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVxcdTAwM2VuYXBpLmRldiwgcXQtXFx1MDAzZXN1YjAucV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0NS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE1MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VjbXBsLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTMtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0zMjE9c3RhdGljIHZvaWQgcnRhc2VfdHhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozNTM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcmluZy1cXHUwMDNlaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMzU0LVxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgXFx1MDAyNnJpbmctXFx1MDAzZWl2ZWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9NTkwPXN0YXRpYyB2b2lkIHJ0YXNlX3J4X2Rlc2NfaW5pdChzdHJ1Y3QgcnRhc2VfcHJpdmF0ZSAqdHAsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDctXFx0cmluZy1cXHUwMDNlaXZlYyA9IFxcdTAwMjZ0cC1cXHUwMDNlaW50X3ZlY3RvcltpZHhdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjYwODpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDktXFx0XFx0XFx0ICAgICByaW5nLVxcdTAwM2V0eXBlLCBcXHUwMDI2cmluZy1cXHUwMDNlaXZlYy1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xMTY2PXN0YXRpYyB2b2lkIHJ0YXNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzctXFx0XFx0XFx0XFx0XFx0IHJpbmdfZW50cnkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxMTc4OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzktXFx0XFx0XFx0XFx0XFx0ICAgICByaW5nLVxcdTAwM2V0eXBlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTE3MTc9c3RhdGljIHZvaWQgcnRhc2Vfc3dfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzctXFx0XFx0XFx0XFx0XFx0IHJpbmdfZW50cnkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxNzM4OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzktXFx0XFx0XFx0XFx0XFx0ICAgICByaW5nLVxcdTAwM2V0eXBlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz02OTA9dm9pZCBuZXR2c2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzE2LVxcdFxcdGlmIChpIFxcdTAwM2MgbmRldi1cXHUwMDNlcmVhbF9udW1fcnhfcXVldWVzKSB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxNzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzE4LVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIwLVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTc3Mj1zdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjUtXFx0bmFwaV9lbmFibGUoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4MjY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjctXFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTgyODpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTgyOS1cXHRcXHRcXHQgICAgIFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzAtY2xlYW51cDpcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg3MTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzI6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODczLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYz0xMjIzPXN0YXRpYyB2b2lkIG5ldHZzY19zY19vcGVuKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdfc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI1OS1cXHRuYXBpX2VuYWJsZShcXHUwMDI2bnZjaGFuLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI2MDpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYxLVxcdFxcdFxcdCAgICAgXFx1MDAyNm52Y2hhbi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjI6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2My1cXHRcXHRcXHQgICAgIFxcdTAwMjZudmNoYW4tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjktXFx0XFx0bmV0ZGV2X25vdGljZShuZGV2LCBcXFwic3ViIGNoYW5uZWwgb3BlbiBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjcwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNzEtXFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjczLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDg4PXN0YXRpYyB2b2lkIG5zaW1fZW5hYmxlX25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDk1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0OTY6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDk3LVxcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1uc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgyOC1cXHRucy1cXHUwMDNlcnFbaWR4XSA9IHFtZW0tXFx1MDAzZXJxO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4Mjk6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzAtXFx0XFx0XFx0ICAgICBcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgzNj1zdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg0Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODQzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg0NC1cXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MjgxNT1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZW5hYmxlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVxcdHZpcnRuZXRfbmFwaV9kb19lbmFibGUocnEtXFx1MDAzZXZxLCBcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODIxOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDEtXFx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cXHUwMDNldnEsIG5hcGkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODQyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg0My19XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg0NT1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfdHhfZGlzYWJsZShzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cXHRpZiAobmFwaS1cXHUwMDNld2VpZ2h0KSB7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodmktXFx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODUzLVxcdFxcdG5hcGlfZGlzYWJsZShuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODU3PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9kaXNhYmxlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODYyLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODYzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg2NC1cXHRuYXBpX2Rpc2FibGUobmFwaSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTI4Mjc9c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2X2Zyb21fcHJpdihjb25zdCB2b2lkICpwcml2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yODQyLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Mjg0Mzp2b2lkIG5ldGlmX3F1ZXVlX3NldF9uYXBpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxdWV1ZV9pbmRleCxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXFx0XFx0XFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXFxuLS1cXG5uZXQvY29yZS9kZXYuYz03Mjg1PUVYUE9SVF9TWU1CT0wobmV0aWZfdGhyZWFkZWRfZW5hYmxlKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTcyODctLyoqXFxubmV0L2NvcmUvZGV2LmM6NzI4ODogKiBuZXRpZl9xdWV1ZV9zZXRfbmFwaSAtIEFzc29jaWF0ZSBxdWV1ZSB3aXRoIHRoZSBuYXBpXFxubmV0L2NvcmUvZGV2LmMtNzI4OS0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03Mjk3LSAqL1xcbm5ldC9jb3JlL2Rldi5jOjcyOTg6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXFxubmV0L2NvcmUvZGV2LmMtNzI5OS1cXHRcXHRcXHQgIGVudW0gbmV0ZGV2X3F1ZXVlX3R5cGUgdHlwZSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzMyMC19XFxubmV0L2NvcmUvZGV2LmM6NzMyMTpFWFBPUlRfU1lNQk9MKG5ldGlmX3F1ZXVlX3NldF9uYXBpKTtcXG5uZXQvY29yZS9kZXYuYy03MzIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOTowNy41NzM1ODY2MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkyMzQ5MTYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhZGRpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBjYWxscy4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLCB3aGljaCBpcyBhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIGVmZm9ydHMuIEkgc2VlIHRoZSBtYWluIGZ1bmN0aW9ucyBhZmZlY3RlZCBhcmUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC5cblxuR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEFuZCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBmdXp6aW5nIHRhcmdldHMsIHNvIEknbGwgc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGBbXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsIFwibnNpbV9xdWV1ZV9zdG9wXCJdYC4gT2YgY291cnNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQsIHNvIEknbGwgYWxzbyBhZGQgYEVuYWJsZUNvbmZpZ3M9W1wiTkVUREVWU0lNXCJdYC5cblxuV2FpdCBhIHNlY29uZOKApiBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBBcmUgdGhvc2UgZnVuY3Rpb25zIGlubGluZWQ/IEkgcXVpY2tseSByZW1lbWJlciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBUaGV5IG1pZ2h0IGJlIGlubGluZWQuIEFoLCBuby4gVGhleSdyZSBwYXJ0IG9mIGEgc3RydWN0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0J3MgZ29vZC4gVGhleSBhcmUgYXNzaWduZWQgdG8gYSBzdHJ1Y3Q6XG5cbmBgYGNcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG5cdC5uZG9fcXVldWVfbWVtX3NpemVcdD0gbnNpbV9xdWV1ZV9tZW1fc2l6ZSxcblx0Lm5kb19xdWV1ZV9tZW1fYWxsb2NcdD0gbnNpbV9xdWV1ZV9tZW1fYWxsb2MsXG5cdC5uZG9fcXVldWVfbWVtX2ZyZWVcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcblx0Lm5kb19xdWV1ZV9zdGFydFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxuXHQubmRvX3F1ZXVlX3N0b3BcdFx0PSBuc2ltX3F1ZXVlX3N0b3AsXG59O1xuYGBgXG5cblNvIHRoZXkncmUgbm90IGlubGluZWQuIFRoYXQncyB1c2VmdWwgaW5mb3JtYXRpb24uIFNvIEkgY2FuIGJlIGNvbmZpZGVudCBpbiB0aG9zZSBmb2N1cyBzeW1ib2xzLlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gYWRkIHRoYXQgaW5mb3JtYXRpb24gdG8gYEZvY3VzU3ltYm9sc2AuIFRoZW4gSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcyB0byBlbnN1cmUgdGhlIGZ1enplciB0YXJnZXRzIHRoZXNlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5ODEsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjE1LjQ5NzA4MDk4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTYzNTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gICAgXCJuc2ltX3F1ZXVlX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGZ1enppbmcpIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgd2l0aCBSWCBxdWV1ZXMgZHVyaW5nIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjE1LjU3NTI1MzUyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyMDEzMjg4NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOToxNS41NzYwMTIxOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMyMDA1NjQ2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVhNzIxNDYwZmM1ZmMyNjhhNzk0NTk1MGZiZGYzODlmMGM1OTI0N2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToyODozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuaW5kZXggNGU5ZDdlMTBiNTI3ZS4uYzE4ZjlmNTQwMDg0YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5AQCAtODI2LDYgKzgyNiw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbitcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbitcdFx0XHQgICAgIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTgzOCw2ICs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuIFxuIFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbiBcbitcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4gXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRpZiAobnMtXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOToxNS41NzYwMTI5OTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyNDM2NTY1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuIEkgc2VlIGl0J3MgYWRkaW5nIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEVzc2VudGlhbGx5LCB0aGlzIGxvb2tzIGxpa2UgdGhlIGNvZGUgaXMgc2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3duIE5ldHdvcmsgQVBJIChOQVBJKSBhc3NvY2lhdGlvbnMgZm9yIG5ldHdvcmsgZGV2aWNlIHF1ZXVlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIHBvdGVudGlhbCByaXNrcywgc3BlY2lmaWNhbGx5IGFyb3VuZCB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgYWx3YXlzIGEgcmVkIGZsYWcuXG5cbkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgTkFQSSBhbmQgZGV2aWNlIGRyaXZlciBpbnRlcm5hbHMsIGFzc29jaWF0aW5nIGEgTkFQSSBjb250ZXh0IHdpdGggYSBxdWV1ZSB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgc3VnZ2VzdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIEl0J3MgbW9zdCBsaWtlbHkgYSBwb2ludGVyIGFzc2lnbm1lbnQgb3Igc2ltaWxhciBvcGVyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIGNvcmUuIEhvd2V2ZXIsIEkgY2FuJ3QgYmUgKmNvbXBsZXRlbHkqIGNlcnRhaW4gd2l0aG91dCBhIGNsb3NlciBsb29rLlxuXG5KdXN0IHRvIGJlIHNhZmUsIEkgc2hvdWxkIHZlcmlmeSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhYnNvbHV0ZWx5IGNvbmZpcm0gdGhhdCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdC4gSXQncyBwcm9iYWJseSBqdXN0IGEgbWVtb3J5IHBvaW50ZXIsIGJ1dCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LiBMZXQncyBjYWxsIHVwIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjIxLjQwMDM4MTk2N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NzIyMDY4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRpZl9xdWV1ZV9zZXRfbmFwaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODA2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2Rpc2FibGVfaW5fcmFuZ2Uoc3RydWN0IGVuYV9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cXHRcXHRcXHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYzoxODE3OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MjAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM3LVxcdFxcdFxcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzktXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTg0MDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTg0MS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNjU5PXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19wYWlyKHN0cnVjdCBibmdlX25ldCAqYm4sIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE2NjY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgcmluZ19uciwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjctXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTcwMT1zdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNzEzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzE0LVxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnR4ci1cXHUwMDNlYm5hcGktXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTI3MjU9c3RhdGljIHZvaWQgYm5nZV9kZWxfbmFwaShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJkLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmQtXFx1MDAzZXR4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjkzPXN0YXRpYyBpbnQgYm54dF9pbml0X3R4X3JpbmdzKHN0cnVjdCBibnh0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MDktXFx0XFx0aWYgKGkgXFx1MDAzZT0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGkgLSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTExOTczPXN0YXRpYyB2b2lkIGJueHRfZGVsX25hcGkoc3RydWN0IGJueHQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcDsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDMtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDUtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVxcdFxcdGlmICh0bmFwaS1cXHUwMDNlcnhfcmNiKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByeHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz03NDE3PXN0YXRpYyB2b2lkIHRnM19uYXBpX2VuYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQyNzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MzItXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2VyeF9yY2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDMzOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJ4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzNC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5NzQ9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZW5hYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4Mi1cXHRpZiAocXVldWUtXFx1MDAzZXR4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNldHgtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNlcngtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk5NT1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9kaXNhYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk5OS1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDAwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXJ4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwMS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA0LVxcdFxcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXFx1MDAzZXR4LCBcXHUwMDI2cXVldWUtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDA1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXR4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwNi1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTI0PXN0YXRpYyB2b2lkIGd2ZV90dXJuZG93bihzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cXHRcXHRpZiAoaWR4IFxcdTAwM2MgcHJpdi1cXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5NDM6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cXHUwMDNlZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NDQtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTYtXFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTcyPXN0YXRpYyB2b2lkIGd2ZV90dXJudXAoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXFx0XFx0aWYgKGlkeCBcXHUwMDNjIHByaXYtXFx1MDAzZXR4X2NmZy5udW1fcXVldWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTkwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTkxLVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNS1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNmJsb2NrLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MjAxNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTctXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2YmxvY2stXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MTk4PWludCBoaW5pYzNfcXBzX2lycV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmlycV9jZmctXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM3LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZpcnFfY2ZnLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cXHRcXHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1NC1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Ni1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jPTI3MD12b2lkIGhpbmljM19xcHNfaXJxX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVxcdFxcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTQ4MT12b2lkIGUxMDAwX2Rvd24oc3RydWN0IGUxMDAwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo1MTE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEzLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9MTM1Mj1pbnQgZTEwMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXFx0bmFwaV9lbmFibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxMzk4OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5OTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDYzNj1pbnQgZTEwMDBlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzEyLVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxMzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzUtXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTMtXFx0XFx0aWYgKHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTQ6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTgtXFx0XFx0aWYgKHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODAwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzEtXFx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6MjgzMjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNC1cXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODM1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDMtXFx0Zm9yICh1MzIgaSA9IDA7IGkgXFx1MDAzYyBxX3ZlY3Rvci1cXHUwMDNlbnVtX3J4cTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVxcdTAwM2VyeFtpXS1cXHUwMDNlaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cXHRmb3IgKHUzMiBpID0gMDsgaSBcXHUwMDNjIHFfdmVjdG9yLVxcdTAwM2VudW1fdHhxOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXFx1MDAzZXR4W2ldLVxcdTAwM2VpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ5LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MjEwMj12b2lkIGlnYl9zZXRfcXVldWVfbmFwaShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB2ZWN0b3IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNlcngucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA5LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXJ4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cXHRpZiAocV92ZWN0b3ItXFx1MDAzZXR4LnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExNC1cXHRcXHRcXHRcXHQgICAgIHFfdmVjdG9yLVxcdTAwM2V0eC5yaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTctXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUwOTg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNlcngucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTAyLVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNldHgucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MTAzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXR4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTg5PWludCBtbHg0X2VuX2FjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNTQtXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNjItXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz0xOTY9dm9pZCBtbHg0X2VuX2RlYWN0aXZhdGVfY3Eoc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdiwgc3RydWN0IG1seDRfZW5fY3EgKmNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MjA2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxLVxcdTAwM2VjcV9pZHgsIHF0eXBlLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUxLVxcdFxcdG1seDVlX2FjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk1MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmMtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTk1Nz12b2lkIG1seDVlX3B0cF9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NjEtXFx0aWYgKHRlc3RfYml0KE1MWDVFX1BUUF9TVEFURV9SWCwgYy1cXHUwMDNlc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk2MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cXHRcXHRtbHg1ZV9kZWFjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ2LVxcdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVxcdTAwM2V0eHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTk0NzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cXHUwMDNlbmV0ZGV2LCBzcS1cXHUwMDNldHhxX2l4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgc3EtXFx1MDAzZWNxLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVxcdTAwM2VuZXRkZXYsIHNxLVxcdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjItXFx0Y2xlYXJfYml0KE1MWDVFX1NRX1NUQVRFX0VOQUJMRUQsIFxcdTAwMjZzcS1cXHUwMDNlc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2Yy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MjkzOT1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTQzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTE1PXN0YXRpYyB2b2lkIGZibmljX3NldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMjM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlc3ViMC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTI0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMzE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTM2PXN0YXRpYyB2b2lkIGZibmljX3Jlc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VzdWIwLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNTI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUzLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MzIxPXN0YXRpYyB2b2lkIHJ0YXNlX3R4X2Rlc2NfaW5pdChzdHJ1Y3QgcnRhc2VfcHJpdmF0ZSAqdHAsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MzUzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1NC1cXHRcXHRcXHQgICAgIHJpbmctXFx1MDAzZXR5cGUsIFxcdTAwMjZyaW5nLVxcdTAwM2VpdmVjLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTU5MD1zdGF0aWMgdm9pZCBydGFzZV9yeF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA3LVxcdHJpbmctXFx1MDAzZWl2ZWMgPSBcXHUwMDI2dHAtXFx1MDAzZWludF92ZWN0b3JbaWR4XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcmluZy1cXHUwMDNlaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA5LVxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgXFx1MDAyNnJpbmctXFx1MDAzZWl2ZWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTE2Nj1zdGF0aWMgdm9pZCBydGFzZV9kb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xNzE3PXN0YXRpYyB2b2lkIHJ0YXNlX3N3X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTczODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxNi1cXHRcXHRpZiAoaSBcXHUwMDNjIG5kZXYtXFx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTc6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTE3NzI9c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldHZzY19kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODI2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVxcdFxcdFxcdCAgICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjktXFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3My1cXHRuYXBpX2Rpc2FibGUoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM9MTIyMz1zdGF0aWMgdm9pZCBuZXR2c2Nfc2Nfb3BlbihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqbmV3X3NjKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXFx0bmFwaV9lbmFibGUoXFx1MDAyNm52Y2hhbi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjA6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cXHRcXHRcXHQgICAgIFxcdTAwMjZudmNoYW4tXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjMtXFx0XFx0XFx0ICAgICBcXHUwMDI2bnZjaGFuLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVxcdFxcdG5ldGRldl9ub3RpY2UobmRldiwgXFxcInN1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjcxLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5Ny1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDE9bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MjgtXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODI5OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODMwLVxcdFxcdFxcdCAgICAgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NDItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg0MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NDQtXFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4MTU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX2VuYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMC1cXHR2aXJ0bmV0X25hcGlfZG9fZW5hYmxlKHJxLVxcdTAwM2V2cSwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMi19XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MjgyND1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfdHhfZW5hYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVxcdHZpcnRuZXRfbmFwaV9kb19lbmFibGUoc3EtXFx1MDAzZXZxLCBuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4NDU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX3R4X2Rpc2FibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTEtXFx0aWYgKG5hcGktXFx1MDAzZXdlaWdodCkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODUyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1My1cXHRcXHRuYXBpX2Rpc2FibGUobmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg2Mi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXFx0bmFwaV9kaXNhYmxlKG5hcGkpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjg0Mi1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yODQ0LVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9NzI4NT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XFxuLS1cXG5uZXQvY29yZS9kZXYuYy03Mjg3LS8qKlxcbm5ldC9jb3JlL2Rldi5jOjcyODg6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxcbm5ldC9jb3JlL2Rldi5jLTcyODktICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzI5Ny0gKi9cXG5uZXQvY29yZS9kZXYuYzo3Mjk4OnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxcbm5ldC9jb3JlL2Rldi5jLTcyOTktXFx0XFx0XFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMjAtfVxcbm5ldC9jb3JlL2Rldi5jOjczMjE6RVhQT1JUX1NZTUJPTChuZXRpZl9xdWV1ZV9zZXRfbmFwaSk7XFxubmV0L2NvcmUvZGV2LmMtNzMyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjk6MjMuMjU3NjA4NTUzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MTg4ODY5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0J3MgbWFraW5nIGNoYW5nZXMgdG8gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBieSBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gRnJvbSBhIG5ldHdvcmtpbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQncyB0aGUgc3RhbmRhcmQgQVBJIGZvciBhc3NvY2lhdGluZyBhIE5BUEkgY29udGV4dCB3aXRoIGEgc3BlY2lmaWMgcXVldWUuIE15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIGFyb3VuZCBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlcywgYnV0IGFmdGVyIGxvb2tpbmcgaW50byB0aGlzLCBpdCdzIGNsZWFyIHRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQncyBnb2luZyB0byB0cmlnZ2VyIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gV2UncmUganVzdCBzZXR0aW5nIGEgcG9pbnRlciB3aXRoaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gTm8gY2hhbmNlIG9mIGluZm8gbGVha3Mgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nIGVpdGhlci4gVGhhdCdzIGdvb2QuIFdoaWNoIG1lYW5zLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQsIEkgY2FuIGNvbmNsdWRlIHdpdGggY29uZmlkZW5jZSB0aGF0IEtNU0FOIGlzbid0IG5lY2Vzc2FyeSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNoYW5nZS4gSXQgbG9va3Mgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTQwLCJPdXRwdXRUb2tlbnMiOjE4MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjI4Ljc3NjQ5OTMwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBhIE5BUEkgY29udGV4dCB3aXRoIGEgbmV0d29yayBkZXZpY2UgcXVldWUgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIEFQSSB0aGF0IHNldHMgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBhIE5BUEkgY29udGV4dCB3aXRoIGEgbmV0d29yayBkZXZpY2UgcXVldWUgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIEFQSSB0aGF0IHNldHMgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 15:26:55 +0000 UTC FinishedAt: 2026-08-12 15:29:30 +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": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "a59f57e2aa127c5354168d2ec4bac920df1be4f4", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NETDEVSIM" ], "series_id": "bf07b7e4-6b2d-4352-bef9-9240f57777f9" }, "track": "KASAN", "fuzz": { "focus": [ "bpf", "net" ], "focus_symbols": [ "nsim_queue_start", "nsim_queue_stop" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db", "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+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVERFVlNJTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAgICYjMzQ7bnNpbV9xdWV1ZV9zdG9wJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBhIE5BUEkgY29udGV4dCB3aXRoIGEgbmV0d29yayBkZXZpY2UgcXVldWUgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIEFQSSB0aGF0IHNldHMgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGZ1enppbmcpIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgd2l0aCBSWCBxdWV1ZXMgZHVyaW5nIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YTcyMTQ2MGZjNWZjMjY4YTc5NDU5NTBmYmRmMzg5ZjBjNTkyNDdkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mjg6MzAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5jMThmOWY1NDAwODRhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC04MjYsNiAmIzQzOzgyNiw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG4mIzQzO1x0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtODM4LDYgJiM0Mzs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuIFxuIFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbiBcbiYjNDM7XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuIFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0aWYgKG5zLVx1MDAzZXJxX3Jlc2V0X21vZGUgPT0gMSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWE3MjE0NjBmYzVmYzI2OGE3OTQ1OTUwZmJkZjM4OWYwYzU5MjQ3ZApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE1OjI4OjMwIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCmluZGV4IDRlOWQ3ZTEwYjUyN2UuLmMxOGY5ZjU0MDA4NGEgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKQEAgLTgyNiw2ICYjNDM7ODI2LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZywKIAl9CiAKIAlucy0mZ3Q7cnFbaWR4XSA9IHFtZW0tJmd0O3JxOwomIzQzOwluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsCiYjNDM7CQkJICAgICAmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAluYXBpX2VuYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlyZXR1cm4gMDsKQEAgLTgzOCw2ICYjNDM7ODQwLDcgQEAgc3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeCkKIAogCW5ldGRldl9hc3NlcnRfbG9ja2VkKGRldik7CiAKJiM0MzsJbmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTsKIAluYXBpX2Rpc2FibGVfbG9ja2VkKCZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCiAJaWYgKG5zLSZndDtycV9yZXNldF9tb2RlID09IDEpIHsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzNAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDIyMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBQYXRjaCB0byBuZXRkZXZzaW0qKgoKT2theSwgc28gSSYjMzk7dmUgZ290IHRoaXMgcGF0Y2ggdGFyZ2V0aW5nIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLCByaWdodD8gU2VlbXMgbGlrZSBzb21lb25lIGlzIG1ha2luZyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBNeSBndXQgdGVsbHMgbWUgdGhpcyBjb3VsZCBiZSBpbnRlcmVzdGluZywgZ2l2ZW4gaXRzIGhlYXZ5IHVzZSBpbiB0ZXN0aW5nIGFuZCBmdXp6aW5nLiBTcGVjaWZpY2FsbHksIHRoZSBwYXRjaCB0b3VjaGVzIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAsIGFkZGluZyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgLiBJbiBgbnNpbV9xdWV1ZV9zdGFydGAsIHdlJiMzOTtyZSBzZXR0aW5nIHRoZSBOQVBJIGZvciB0aGUgUlggcXVldWUgKGBORVRERVZfUVVFVUVfVFlQRV9SWGApLCBhbmQgdGhlbiBjbGVhcmluZyBpdCBpbiBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhhdCYjMzk7cyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgc2hpZnQ7IGl0IGltcGxpZXMgY2hhbmdlcyBpbiBob3cgdGhlIGRyaXZlciBoYW5kbGVzIFJYIHByb2Nlc3NpbmcuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIGlmIHRoZXJlIGFyZSBhbnkgY29uZmlnIGRlcGVuZGVuY2llcywgc28gbGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgIG5vdy4uLiBhaCwgeWVzLCBgTkVUREVWU0lNYCBpcyB0aGUgcmVsZXZhbnQgY29uZmlnLiBOb3csIHRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhlIHBvdGVudGlhbCBpbXBhY3QsIGxldCBtZSBydW4gYSBxdWljayBncmVwIGZvciBib3RoIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIFRoaXMgd2lsbCBnaXZlIG1lIGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHdoZXJlIHRoZXNlIGZ1bmN0aW9ucyBhcmUgY2FsbGVkIHdpdGhpbiB0aGUgbW9kdWxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXVldWVfc3RhcnQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMD1zdGF0aWMgaW50XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODAxOm5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODAyLVx0XHQgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODU2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg1OS1cdC5uZG9fcXVldWVfbWVtX2ZyZWVcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4NjA6XHQubmRvX3F1ZXVlX3N0YXJ0XHQ9IG5zaW1fcXVldWVfc3RhcnQsXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODYxLVx0Lm5kb19xdWV1ZV9zdG9wXHRcdD0gbnNpbV9xdWV1ZV9zdG9wLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5MTkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBwaW5wb2ludGVkIGEgcHJvbWlzaW5nIHRhcmdldC4gVGhlc2UgZnVuY3Rpb25zIHdpdGhpbiBgbnNpbV9xdWV1ZV9tZ210X29wc2AgaW1wbGVtZW50IGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyByZWFjaGFibGUgYW5kIHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBORVRERVZTSU1gIGlzIHRoZSByZWxldmFudCBjb25maWcgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIGNvbnNpZGVyLCB3aGljaCBtaWdodCBhZmZlY3QgdGhlIGNvZGUgcGF0aCBhbmQgdGh1cyB0aGUgZnV6emluZyBzdHJhdGVneS4gSSYjMzk7bGwgbmVlZCB0byBleHBhbmQgbXkgdmlldyB0byBpbmNsdWRlIG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFzIHdlbGwuIFRoaXMgYXJlYSBpcyBkZWZpbml0ZWx5IHJpcGUgZm9yIGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUREVWU0lNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxNjIKCQkJCQkJCW91dHB1dDogMjUKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipLZXJuZWwgQ29uZmlndXJhdGlvbiBIdW50aW5nKioKCkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aGF0ZXZlciBJJiMzOTttIHdvcmtpbmcgb24sIGxpa2VseSBzb21ldGhpbmcgbmV0d29yay1yZWxhdGVkIGdpdmVuIHRoZSBjb250ZXh0LiBNeSBpbml0aWFsIGluc3RpbmN0LCBiYXNlZCBvbiB0aGUgbGlrZWx5IGNvbXBvbmVudHMgaW52b2x2ZWQsIHBvaW50cyBtZSBkaXJlY3RseSB0byB0aGUga2VybmVsJiMzOTtzIGNvbmZpZ3VyYXRpb24gZmlsZXMuIE15IGZpcnN0IHN0b3AsIGFuZCB0aGUgbW9zdCBsb2dpY2FsIGJhc2VkIG9uIG5hbWluZyBjb252ZW50aW9ucyBhbmQgbGlrZWx5IGZpbGUgc3RydWN0dXJlLCBpcyB3aXRoaW4gdGhlIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vYCBkaXJlY3RvcnkgYW5kIGl0cyBgS2NvbmZpZ2AgZmlsZS4gR2l2ZW4gbXkgcHJpb3IgZXhwZXJpZW5jZSB3aXRoIHRoZSBzaW11bGF0b3IsIHRoYXQmIzM5O3MgYWxtb3N0IGFsd2F5cyB0aGUgZmlyc3QgcGxhY2UgdG8gY2hlY2suIElmIHRoYXQgZG9lc24mIzM5O3QgaG9sZCB0aGUgYW5zd2VyLCB0aGVuIEkmIzM5O2xsIGJyb2FkZW4gdGhlIHNjb3BlLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG5ldHdvcmsgZHJpdmVyIGNvbmZpZ3VyYXRpb24sIGFuZCBpdCYjMzk7cyBhbG1vc3QgY2VydGFpbiB0byBpbmNsdWRlIHRoZSByZWxldmFudCBvcHRpb25zLCBvciBhdCBsZWFzdCBwb2ludCBtZSB0b3dhcmRzIHRoZSBjb3JyZWN0IGxvY2F0aW9uIGlmIGl0JiMzOTtzIG5lc3RlZCBtb3JlIGRlZXBseS4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lLCBJJiMzOTtsbCBnbyBzdHJhaWdodCBmb3IgdGhlIG1vc3QgbGlrZWx5IHBhdGhzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Y29kZXNlYXJjaC1kaXItaW5kZXg8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0RpciYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L25ldGRldnNpbSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlcyYjMzQ7OiBbCiAgICAmIzM0O2JwZi5jJiMzNDssCiAgICAmIzM0O2J1cy5jJiMzNDssCiAgICAmIzM0O2Rldi5jJiMzNDssCiAgICAmIzM0O2V0aHRvb2wuYyYjMzQ7LAogICAgJiMzNDtmaWIuYyYjMzQ7LAogICAgJiMzNDtoZWFsdGguYyYjMzQ7LAogICAgJiMzNDtod3N0YXRzLmMmIzM0OywKICAgICYjMzQ7aXBzZWMuYyYjMzQ7LAogICAgJiMzNDttYWNzZWMuYyYjMzQ7LAogICAgJiMzNDtuZXRkZXYuYyYjMzQ7LAogICAgJiMzNDtuZXRkZXZzaW0uaCYjMzQ7LAogICAgJiMzNDtwc2FtcGxlLmMmIzM0OywKICAgICYjMzQ7cHNwLmMmIzM0OywKICAgICYjMzQ7dGMuYyYjMzQ7LAogICAgJiMzNDt1ZHBfdHVubmVscy5jJiMzNDsKICBdLAogICYjMzQ7U3ViZGlycyYjMzQ7OiBudWxsCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTQ5CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgcHJlc2VudGVkIGFzIGEgc3RyZWFtIG9mIHRob3VnaHQ6CgoqKktjb25maWcgTG9jYXRpb24gRGlsZW1tYSoqCgpSaWdodCwgc28gSSYjMzk7bSBsb29raW5nIGF0IHdoZXJlIHRoZSBLY29uZmlnIGZpbGUgaXMgZm9yIHRoZSBuZXR3b3JrIGRyaXZlciBzdHVmZi4gSSBpbW1lZGlhdGVseSB0aG91Z2h0IGl0IHdhcyBpbiBgZHJpdmVycy9uZXQvS2NvbmZpZ2AsIHRoYXQmIzM5O3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdC4gQnV0IGhvbGQgb24sIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIuLi4gZG9lcyBpdCBoYXZlIGl0cyBvd24gc3BlY2lmaWMgS2NvbmZpZyBmaWxlPyBMZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCB0aGVyZSBpc24mIzM5O3QgYSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL0tjb25maWdgIGZpbGUuIEhtbSwgdGhhdCYjMzk7cyB1bnVzdWFsLCBJIGd1ZXNzIGl0IHJlbGllcyBvbiBhIHNoYXJlZCBvbmUsIHdoaWNoIG9uZSBkZWZpbmVzIGBORVRERVZTSU1gPyBCZXR0ZXIgc3RhcnQgYnkgc2VhcmNoaW5nIGZvciB3aGVyZSB0aGF0IHN5bWJvbCBnZXRzIGRlZmluZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBORVRERVZTSU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZz02MDI9c291cmNlIFwmIzM0O2RyaXZlcnMvbmV0L2h5cGVydi9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL25ldC9LY29uZmlnLTYwMy1cbmRyaXZlcnMvbmV0L0tjb25maWc6NjA0OmNvbmZpZyBORVRERVZTSU1cbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM4ODYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipEZWNvbnN0cnVjdGluZyBORVRERVZTSU0gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5FVERFVlNJTWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1doYXQgYXJlIHRoZSBjb3JlIGNvbXBvbmVudHMgaXQgcmVsaWVzIG9uPyYjMzQ7IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBhdCBhIGhpZ2ggbGV2ZWwuIElzIGl0IGJ1aWx0IG9uIGEgc3BlY2lmaWMgc2ltdWxhdGlvbiBmcmFtZXdvcms/IERvZXMgaXQgbGV2ZXJhZ2UgYW55IHBhcnRpY3VsYXIgbmV0d29ya2luZyBsaWJyYXJpZXM/IEFyZSB0aGVyZSBhbnkgZGF0YSBhbmFseXNpcyBvciB2aXN1YWxpemF0aW9uIHRvb2xzIHRoYXQgYXJlIGludGVncmFsIHRvIGl0cyBmdW5jdGlvbmFsaXR5PwoKSSYjMzk7bGwgbmVlZCB0byBkaWcgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IGxvb2tpbmcgZm9yIGEgcHJvamVjdCBzdHJ1Y3R1cmUgb3IgZG9jdW1lbnRhdGlvbiB0aGF0IG1pZ2h0IHByb3ZpZGUgc29tZSBjbHVlcy4gTWF5YmUgdGhlcmUmIzM5O3MgYSBgcmVxdWlyZW1lbnRzLnR4dGAgZmlsZSwgb3IgYSBzZWN0aW9uIG9uIGRlcGVuZGVuY2llcyBpbiB0aGUgUkVBRE1FLiBJJiMzOTttIGFudGljaXBhdGluZyB0aGF0IGtub3dpbmcgdGhpcyB3aWxsIGhlbHAgZGV0ZXJtaW5lIHdoYXQgaXMgbmVlZGVkIGZvciBteSB3b3JrLgoKT25jZSBJIGhhdmUgYSBsaXN0IG9mIHRoZXNlIGRlcGVuZGVuY2llcywgSSB3aWxsIG5lZWQgdG8gY2F0ZWdvcml6ZSB0aGVtLiBEaXN0aW5ndWlzaGluZyBiZXR3ZWVuIGNvcmUgbGlicmFyaWVzLCBvcHRpb25hbCBmZWF0dXJlcywgYW5kIGRldmVsb3BlciB0b29scyB3aWxsIGJlIGltcG9ydGFudC4gSXQgd2lsbCBiZSBoZWxwZnVsIHRvIHVuZGVyc3RhbmQgd2hldGhlciB0aGVzZSBkZXBlbmRlbmNpZXMgYXJlIGV4dGVybmFsIGxpYnJhcmllcywgaW4taG91c2UgbW9kdWxlcywgb3Igc3RhbmRhcmQgUHl0aG9uIHBhY2thZ2VzLiBJJiMzOTttIGdvaW5nIHRvIHdhbnQgdG8ga25vdyB0aGUgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGFzIHdlbGw7IEkgZG9uJiMzOTt0IHdhbnQgdG8gcnVuIGludG8gYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzIGRvd24gdGhlIGxpbmUuCgpGaW5hbGx5LCBJIHdpbGwgd2FudCB0byBhc3Nlc3MgaG93IHRoZXNlIGRlcGVuZGVuY2llcyBpbnRlcmFjdCB3aXRoIHRoZSBzaW11bGF0b3IgaXRzZWxmLiBBcmUgdGhleSB0aWdodGx5IGNvdXBsZWQsIG9yIGlzIHRoZSBhcmNoaXRlY3R1cmUgbW9yZSBtb2R1bGFyPyBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHNlbnNlIG9mIHRoZSBzeXN0ZW0mIzM5O3MgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbCBmb3IgZXh0ZW5zaW9uLiBVbHRpbWF0ZWx5LCB1bmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB3b3JraW5nIHdpdGggYE5FVERFVlNJTWAgZWZmZWN0aXZlbHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDYwNCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNjA0Olx0Y29uZmlnIE5FVERFVlNJTVxuIDYwNTpcdFx0dHJpc3RhdGUgXCYjMzQ7U2ltdWxhdGVkIG5ldHdvcmtpbmcgZGV2aWNlXCYjMzQ7XG4gNjA2Olx0XHRkZXBlbmRzIG9uIERFQlVHX0ZTXG4gNjA3Olx0XHRkZXBlbmRzIG9uIElORVRcbiA2MDg6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCBQU0FNUExFPW5cbiA2MDk6XHRcdGRlcGVuZHMgb24gUFRQXzE1ODhfQ0xPQ0tfTU9DSyB8fCBQVFBfMTU4OF9DTE9DS19NT0NLPW5cbiA2MTA6XHRcdHNlbGVjdCBORVRfREVWTElOS1xuIDYxMTpcdFx0c2VsZWN0IFBBR0VfUE9PTFxuIDYxMjpcdFx0c2VsZWN0IE5FVF9TSEFQRVJcbiA2MTM6XHRcdGhlbHBcbiA2MTQ6XHRcdCAgVGhpcyBkcml2ZXIgaXMgYSBkZXZlbG9wZXIgdGVzdGluZyB0b29sIGFuZCBzb2Z0d2FyZSBtb2RlbCB0aGF0IGNhblxuIDYxNTpcdFx0ICBiZSB1c2VkIHRvIHRlc3QgdmFyaW91cyBjb250cm9sIHBhdGggbmV0d29ya2luZyBBUElzLCBlc3BlY2lhbGx5XG4gNjE2Olx0XHQgIEhXLW9mZmxvYWQgcmVsYXRlZC5cbiA2MTc6XHRcbiA2MTg6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxuIDYxOTpcdFx0ICB3aWxsIGJlIGNhbGxlZCBuZXRkZXZzaW0uXG4gNjIwOlx0XG4gNjIxOlx0Y29uZmlnIE5FVF9GQUlMT1ZFUlxuIDYyMjpcdFx0dHJpc3RhdGUgXCYjMzQ7RmFpbG92ZXIgZHJpdmVyXCYjMzQ7XG4gNjIzOlx0XHRzZWxlY3QgRkFJTE9WRVJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDU0NQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDQwMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYE5FVERFVlNJTWAgQ29uZmlndXJhdGlvbiBhbmQgQVBJIERlc2lnbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYE5FVERFVlNJTWAuIEl0IGxvb2tzIGxpa2UgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIGJvdGggYERFQlVHX0ZTYCBhbmQgYElORVRgLCBzbyBJJiMzOTtsbCBuZWVkIHRvIG1ha2Ugc3VyZSB0aG9zZSBhcmUgcHJvcGVybHkgaGFuZGxlZCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgLiBUaGUgY29yZSBmdW5jdGlvbnMgb2YgaW50ZXJlc3QgaGVyZSBzZWVtIHRvIGJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBmdW5jdGlvbnMgYXJlIGNvcnJlY3RseSBpbnRlZ3JhdGVkLgoKSGFuZyBvbiBhIHNlY29uZOKApiB0aGVzZSBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGZ1bmN0aW9ucyBhcmUgKnN0YXRpYyosIGFuZCBkZWZpbmVkIHdpdGhpbiBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYC4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSwgaW5kZWVkLCBzdGF0aWMuICpZZXAqLCB0aGV5IGFyZTogYHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdGFydCguLi4pYCBhbmQgYHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKC4uLilgLiBUaGlzIGlzIHdoZXJlIGl0IGdldHMgaW50ZXJlc3RpbmcgYmVjYXVzZSB0aGUgcHJvbXB0IGlzIGVuY291cmFnaW5nIHVzaW5nIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cyB0byBhdm9pZCBpbmxpbmluZy4KCkJ1dCB3YWl0LCB0aGVzZSBmdW5jdGlvbnMsIGV2ZW4gYmVpbmcgc3RhdGljLCBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBuc2ltX3F1ZXVlX21nbXRfb3BzYDoKCmBgYGMKc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHsKCS5uZG9fcXVldWVfbWVtX3NpemUJPSBuc2ltX3F1ZXVlX21lbV9zaXplLAoJLm5kb19xdWV1ZV9tZW1fYWxsb2MJPSBuc2ltX3F1ZXVlX21lbV9hbGxvYywKCS5uZG9fcXVldWVfbWVtX2ZyZWUJPSBuc2ltX3F1ZXVlX21lbV9mcmVlLAoJLm5kb19xdWV1ZV9zdGFydAk9IG5zaW1fcXVldWVfc3RhcnQsCgkubmRvX3F1ZXVlX3N0b3AJCT0gbnNpbV9xdWV1ZV9zdG9wLAp9OwpgYGAKCkJlY2F1c2UgdGhlaXIgYWRkcmVzc2VzIGFyZSB0YWtlbiwgaXQgaXMgcmVhc29uYWJsZSB0byBiZWxpZXZlIHRoYXQgdGhleSAqY2FuJiMzOTt0KiBiZSBmdWxseSBpbmxpbmVkIGFuZCB3aWxsIGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gR2l2ZW4gdGhpcywgaXQgc2hvdWxkIGJlIGZpbmUgdG8gaW5jbHVkZSB0aGVtLiBIb3dldmVyLCBpdCYjMzk7cyBlc3NlbnRpYWwgdG8gbm90ZSB0aGF0IHRoZXkgYXJlIGNhbGxlZCB2aWEgYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAuIFNvLCB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgd2hlcmUgYG5zaW1fcXVldWVfbWdtdF9vcHNgIGlzIHVzZWQgYW5kIGhvdyB0aG9zZSBhcmUgdWx0aW1hdGVseSBjYWxsZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25zaW1fcXVldWVfbWdtdF9vcHMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgzNj1zdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODU2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODU3LVx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PSBzaXplb2Yoc3RydWN0IG5zaW1fcXVldWVfbWVtKSxcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MT1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTMtXHRucy1cdTAwM2VuZXRkZXYtXHUwMDNlc3RhdF9vcHMgPSBcdTAwMjZuc2ltX3N0YXRfb3BzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjEwNTQ6XHRucy1cdTAwM2VuZXRkZXYtXHUwMDNlcXVldWVfbWdtdF9vcHMgPSBcdTAwMjZuc2ltX3F1ZXVlX21nbXRfb3BzO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXHRuZXRkZXZfbG9ja2RlcF9zZXRfY2xhc3Nlcyhucy1cdTAwM2VuZXRkZXYpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NzY3CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMgaW4gTmV0d29yayBJbnRlcmZhY2UgQ29kZSoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFzIHBvdGVudGlhbCBlbnRyeSBwb2ludHMgZm9yIGZ1enppbmcuIEhvd2V2ZXIsIGEgcXVpY2sgc2FuaXR5IGNoZWNrOiBzaW5jZSB0aGV5JiMzOTtyZSBkZWNsYXJlZCBhcyBgc3RhdGljYCwgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IHRoZXkgYXJlLCBpbiBmYWN0LCBhY2Nlc3NpYmxlIHZpYSB0aGUgc3ltYm9sIHRhYmxlLiBJZiB0aGV5JiMzOTtyZSBwcmVzZW50IGluIGBrYWxsc3ltc2AsIHRoZW4gc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIHRoZW0uIFRoYXQmIzM5O3MgdGhlIGtleS4gSSBuZWVkIHRvIGNvbmZpcm0gdGhlaXIgdmlzaWJpbGl0eS4KCk5vdywgbGV0JiMzOTtzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb25zLiBBaCwgdGhlIHBhdGNoIG1lbnRpb25zIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMuIE9rYXksIHRoYXQmIzM5O3MgYSBuZXcgbGVhZC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGFuZCBkZXRlcm1pbmUgaG93IGl0IG1pZ2h0IHByb3ZpZGUgYW5vdGhlciByb3V0ZSBmb3IgZnV6emluZyBvciBleHBvc3VyZS4gSSYjMzk7bGwgbG9vayBhdCB0aGUgY2FsbCBzaXRlcyBhbmQgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX3F1ZXVlX3NldF9uYXBpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MDY9c3RhdGljIHZvaWQgZW5hX25hcGlfZGlzYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTc6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODIwLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgzNy1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM5LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4NDA6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODQxLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTY1OT1zdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcGFpcihzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBpbnQgcmluZ19ucilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNjY2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNjY3LVx0XHRcdCAgICAgXHUwMDI2cnhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNzAxPXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE3MTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTcxNC1cdFx0XHRcdCAgICAgXHUwMDI2dHhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0yNzI1PXN0YXRpYyB2b2lkIGJuZ2VfZGVsX25hcGkoc3RydWN0IGJuZ2VfbmV0ICpibilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJkLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmQtXHUwMDNldHhfbnJfcmluZ3M7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXHRcdFx0ICAgICBcdTAwMjZyeHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDY5Mz1zdGF0aWMgaW50IGJueHRfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcwOS1cdFx0aWYgKGkgXHUwMDNlPSBicC1cdTAwM2V0eF9ucl9yaW5nc194ZHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVx1MDAzZWRldiwgaSAtIGJwLVx1MDAzZXR4X25yX3JpbmdzX3hkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTE5NzM9c3RhdGljIHZvaWQgYm54dF9kZWxfbmFwaShzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VyeF9ucl9yaW5nczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxMTk4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXHUwMDNldHhfbnJfcmluZ3NfeGRwOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDAzLVx0XHRpZiAodG5hcGktXHUwMDNldHhfYnVmZmVycykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHR4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA1LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVx0XHRpZiAodG5hcGktXHUwMDNlcnhfcmNiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcnhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTc0MTc9c3RhdGljIHZvaWQgdGczX25hcGlfZW5hYmxlKHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXHRcdGlmICh0bmFwaS1cdTAwM2V0eF9idWZmZXJzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDI3Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgdHhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzMi1cdFx0aWYgKHRuYXBpLVx1MDAzZXJ4X3JjYikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQzMzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJ4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDM0LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0xOTc0PXN0YXRpYyB2b2lkIHRzbmVwX3F1ZXVlX2VuYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTgyLVx0aWYgKHF1ZXVlLVx1MDAzZXR4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4MzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXR4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZxdWV1ZS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cdGlmIChxdWV1ZS1cdTAwM2VyeCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2cXVldWUtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5OTU9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZGlzYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTk5LVx0aWYgKHF1ZXVlLVx1MDAzZXJ4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDAxLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDQtXHRcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXHUwMDNldHgsIFx1MDAyNnF1ZXVlLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2V0eC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5MjQ9c3RhdGljIHZvaWQgZ3ZlX3R1cm5kb3duKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cdFx0aWYgKGlkeCBcdTAwM2MgcHJpdi1cdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTQzOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0NC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1Ni1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5NzI9c3RhdGljIHZvaWQgZ3ZlX3R1cm51cChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXHRcdGlmIChpZHggXHUwMDNjIHByaXYtXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk5MDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5OTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTUtXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDE2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDE3LVx0XHRcdFx0ICAgICBcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0xOTg9aW50IGhpbmljM19xcHNfaXJxX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyMzQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2aXJxX2NmZy1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzctXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZpcnFfY2ZnLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cdFx0cXBfZGVsX25hcGkoaXJxX2NmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU0LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MjcwPXZvaWQgaGluaWMzX3Fwc19pcnFfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVx0XHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODAtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODItXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9NDgxPXZvaWQgZTEwMDBfZG93bihzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTUxMy1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xMzUyPWludCBlMTAwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTk6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ2MzY9aW50IGUxMDAwZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTItXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYzo0Nzc0Olx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3NS1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzkzLVx0XHRpZiAodnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XSBcdTAwMjZcdTAwMjYgdnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3RvcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5NDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5NS1cdFx0XHRcdFx0ICAgICBcdTAwMjZ2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5OC1cdFx0aWYgKHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0gXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0tXHUwMDNlcV92ZWN0b3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MDAtXHRcdFx0XHRcdCAgICAgXHUwMDI2dnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMxLVx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODMyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzQtXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQzLVx0Zm9yICh1MzIgaSA9IDA7IGkgXHUwMDNjIHFfdmVjdG9yLVx1MDAzZW51bV9yeHE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ0Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVx1MDAzZXJ4W2ldLVx1MDAzZWlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBxX3ZlY3Rvci1cdTAwM2VudW1fdHhxOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0ODpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBxX3ZlY3Rvci1cdTAwM2V0eFtpXS1cdTAwM2VpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDktXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMTAyPXZvaWQgaWdiX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTE0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MDk3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MDk4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTEwMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NTEwMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz04OT1pbnQgbWx4NF9lbl9hY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1NC1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2Mi1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTE5Nj12b2lkIG1seDRfZW5fZGVhY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoyMDY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3EtXHUwMDNlY3FfaWR4LCBxdHlwZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk1MS1cdFx0bWx4NWVfYWN0aXZhdGVfcnEoXHUwMDI2Yy1cdTAwM2VycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmMtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz05NTc9dm9pZCBtbHg1ZV9wdHBfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2MS1cdGlmICh0ZXN0X2JpdChNTFg1RV9QVFBfU1RBVEVfUlgsIGMtXHUwMDNlc3RhdGUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTYyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cdFx0bWx4NWVfZGVhY3RpdmF0ZV9ycShcdTAwMjZjLVx1MDAzZXJxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0Ni1cdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVx1MDAzZXR4cSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NDc6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cdTAwM2VuZXRkZXYsIHNxLVx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIHNxLVx1MDAzZWNxLm5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoc3EtXHUwMDNlbmV0ZGV2LCBzcS1cdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2Mi1cdGNsZWFyX2JpdChNTFg1RV9TUV9TVEFURV9FTkFCTEVELCBcdTAwMjZzcS1cdTAwM2VzdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cdTAwM2VuZXRkZXYsIGMtXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZjLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5Mzk9c3RhdGljIHZvaWQgbWx4NWVfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6Mjk0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZWl4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjExNT1zdGF0aWMgdm9pZCBmYm5pY19zZXRfbmV0aWZfbmFwaShzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTIzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlc3ViMC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZudi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEzMTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXHUwMDNlbmFwaS5kZXYsIHF0LVx1MDAzZWNtcGwucV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2bnYtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjEzNj1zdGF0aWMgdm9pZCBmYm5pY19yZXNldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNDQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VzdWIwLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlY21wbC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTMtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0zMjE9c3RhdGljIHZvaWQgcnRhc2VfdHhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozNTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTQtXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz01OTA9c3RhdGljIHZvaWQgcnRhc2VfcnhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDctXHRyaW5nLVx1MDAzZWl2ZWMgPSBcdTAwMjZ0cC1cdTAwM2VpbnRfdmVjdG9yW2lkeF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDktXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xMTY2PXN0YXRpYyB2b2lkIHJ0YXNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVx0XHRcdFx0XHQgcmluZ19lbnRyeSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVx0XHRcdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTcxNz1zdGF0aWMgdm9pZCBydGFzZV9zd19yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzctXHRcdFx0XHRcdCByaW5nX2VudHJ5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxNzM4Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzktXHRcdFx0XHRcdCAgICAgcmluZy1cdTAwM2V0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTYtXHRcdGlmIChpIFx1MDAzYyBuZGV2LVx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxNzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTgtXHRcdFx0XHRcdCAgICAgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzE5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTc3Mj1zdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVx0bmFwaV9lbmFibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4MjY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI5LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg3MTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzMtXHRuYXBpX2Rpc2FibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYz0xMjIzPXN0YXRpYyB2b2lkIG5ldHZzY19zY19vcGVuKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdfc2MpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXHRuYXBpX2VuYWJsZShcdTAwMjZudmNoYW4tXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI2MDpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cdFx0XHQgICAgIFx1MDAyNm52Y2hhbi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYzLVx0XHRcdCAgICAgXHUwMDI2bnZjaGFuLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVx0XHRuZXRkZXZfbm90aWNlKG5kZXYsIFwmIzM0O3N1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjcwOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNzEtXHRcdFx0XHQgICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTctXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAxPW5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgyOC1cdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgyOTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzAtXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQ0LVx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODE1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShycS1cdTAwM2V2cSwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4MjItfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cdTAwM2V2cSwgbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODQ1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9kaXNhYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cdGlmIChuYXBpLVx1MDAzZXdlaWdodCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTMtXHRcdG5hcGlfZGlzYWJsZShuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjItXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXHRuYXBpX2Rpc2FibGUobmFwaSk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDItXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXHRcdFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzI4NT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XG4tLVxubmV0L2NvcmUvZGV2LmMtNzI4Ny0vKipcbm5ldC9jb3JlL2Rldi5jOjcyODg6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxubmV0L2NvcmUvZGV2LmMtNzI4OS0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXG4tLVxubmV0L2NvcmUvZGV2LmMtNzI5Ny0gKi9cbm5ldC9jb3JlL2Rldi5jOjcyOTg6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5uZXQvY29yZS9kZXYuYy03Mjk5LVx0XHRcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMyMC19XG5uZXQvY29yZS9kZXYuYzo3MzIxOkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xubmV0L2NvcmUvZGV2LmMtNzMyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTc5ODEKCQkJCQkJCW91dHB1dDogMTEyCgkJCQkJCQl0aG91Z2h0czogMzI4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBhdGNoIGZvciBGdXp6aW5nIE9wcG9ydHVuaXRpZXMqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhZGRpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBjYWxscy4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0JiMzOTtzIGhhcHBlbmluZyB3aXRoaW4gdGhlIGBuZXRkZXZzaW1gIGRyaXZlciwgd2hpY2ggaXMgYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRyaXZlci4gVGhhdCBpbW1lZGlhdGVseSBmbGFncyB0aGlzIGFzIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZyBlZmZvcnRzLiBJIHNlZSB0aGUgbWFpbiBmdW5jdGlvbnMgYWZmZWN0ZWQgYXJlIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuCgpHaXZlbiB0aGF0LCBJJiMzOTttIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEFuZCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBmdXp6aW5nIHRhcmdldHMsIHNvIEkmIzM5O2xsIHNldCBgRm9jdXNTeW1ib2xzYCB0byBgWyYjMzQ7bnNpbV9xdWV1ZV9zdGFydCYjMzQ7LCAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7XWAuIE9mIGNvdXJzZSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkLCBzbyBJJiMzOTtsbCBhbHNvIGFkZCBgRW5hYmxlQ29uZmlncz1bJiMzNDtORVRERVZTSU0mIzM0O11gLgoKV2FpdCBhIHNlY29uZOKApiBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBBcmUgdGhvc2UgZnVuY3Rpb25zIGlubGluZWQ/IEkgcXVpY2tseSByZW1lbWJlciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBUaGV5IG1pZ2h0IGJlIGlubGluZWQuIEFoLCBuby4gVGhleSYjMzk7cmUgcGFydCBvZiBhIHN0cnVjdCBvZiBmdW5jdGlvbiBwb2ludGVycy4gVGhhdCYjMzk7cyBnb29kLiBUaGV5IGFyZSBhc3NpZ25lZCB0byBhIHN0cnVjdDoKCmBgYGMKc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHsKCS5uZG9fcXVldWVfbWVtX3NpemUJPSBuc2ltX3F1ZXVlX21lbV9zaXplLAoJLm5kb19xdWV1ZV9tZW1fYWxsb2MJPSBuc2ltX3F1ZXVlX21lbV9hbGxvYywKCS5uZG9fcXVldWVfbWVtX2ZyZWUJPSBuc2ltX3F1ZXVlX21lbV9mcmVlLAoJLm5kb19xdWV1ZV9zdGFydAk9IG5zaW1fcXVldWVfc3RhcnQsCgkubmRvX3F1ZXVlX3N0b3AJCT0gbnNpbV9xdWV1ZV9zdG9wLAp9OwpgYGAKClNvIHRoZXkmIzM5O3JlIG5vdCBpbmxpbmVkLiBUaGF0JiMzOTtzIHVzZWZ1bCBpbmZvcm1hdGlvbi4gU28gSSBjYW4gYmUgY29uZmlkZW50IGluIHRob3NlIGZvY3VzIHN5bWJvbHMuCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIGFkZCB0aGF0IGluZm9ybWF0aW9uIHRvIGBGb2N1c1N5bWJvbHNgLiBUaGVuIEkgd2lsbCBjYWxsIGBzZXQtcmVzdWx0c2Agd2l0aCB0aGVzZSB2YWx1ZXMgdG8gZW5zdXJlIHRoZSBmdXp6ZXIgdGFyZ2V0cyB0aGVzZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRERVZTSU0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtuc2ltX3F1ZXVlX3N0YXJ0JiMzNDssCiAgICAmIzM0O25zaW1fcXVldWVfc3RvcCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyOTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA1YTcyMTQ2MGZjNWZjMjY4YTc5NDU5NTBmYmRmMzg5ZjBjNTkyNDdkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMTIgMTU6Mjg6MzAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMKaW5kZXggNGU5ZDdlMTBiNTI3ZS4uYzE4ZjlmNTQwMDg0YSAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYwpAQCAtODI2LDYgJiM0Mzs4MjYsOCBAQCBuc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLAogCX0KIAogCW5zLSZndDtycVtpZHhdID0gcW1lbS0mZ3Q7cnE7CiYjNDM7CW5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwKJiM0MzsJCQkgICAgICZhbXA7bnMtJmd0O3JxW2lkeF0tJmd0O25hcGkpOwogCW5hcGlfZW5hYmxlX2xvY2tlZCgmYW1wO25zLSZndDtycVtpZHhdLSZndDtuYXBpKTsKIAogCXJldHVybiAwOwpAQCAtODM4LDYgJiM0Mzs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KQogCiAJbmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTsKIAomIzQzOwluZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpOwogCW5hcGlfZGlzYWJsZV9sb2NrZWQoJmFtcDtucy0mZ3Q7cnFbaWR4XS0mZ3Q7bmFwaSk7CiAKIAlpZiAobnMtJmd0O3JxX3Jlc2V0X21vZGUgPT0gMSkgewo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjEzMQoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNgLiBJIHNlZSBpdCYjMzk7cyBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB3aXRoaW4gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gRXNzZW50aWFsbHksIHRoaXMgbG9va3MgbGlrZSB0aGUgY29kZSBpcyBzZXR0aW5nIHVwIGFuZCB0ZWFyaW5nIGRvd24gTmV0d29yayBBUEkgKE5BUEkpIGFzc29jaWF0aW9ucyBmb3IgbmV0d29yayBkZXZpY2UgcXVldWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc3Nlc3MgcG90ZW50aWFsIHJpc2tzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCB3aGljaCBpcyBhbHdheXMgYSByZWQgZmxhZy4KCkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgTkFQSSBhbmQgZGV2aWNlIGRyaXZlciBpbnRlcm5hbHMsIGFzc29jaWF0aW5nIGEgTkFQSSBjb250ZXh0IHdpdGggYSBxdWV1ZSB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGRvZXNuJiMzOTt0IGltbWVkaWF0ZWx5IHN1Z2dlc3QgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLiBJdCYjMzk7cyBtb3N0IGxpa2VseSBhIHBvaW50ZXIgYXNzaWdubWVudCBvciBzaW1pbGFyIG9wZXJhdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JraW5nIGNvcmUuIEhvd2V2ZXIsIEkgY2FuJiMzOTt0IGJlICpjb21wbGV0ZWx5KiBjZXJ0YWluIHdpdGhvdXQgYSBjbG9zZXIgbG9vay4KCkp1c3QgdG8gYmUgc2FmZSwgSSBzaG91bGQgdmVyaWZ5IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFic29sdXRlbHkgY29uZmlybSB0aGF0IG15IGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0LiBJdCYjMzk7cyBwcm9iYWJseSBqdXN0IGEgbWVtb3J5IHBvaW50ZXIsIGJ1dCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LiBMZXQmIzM5O3MgY2FsbCB1cCBgZGVmYXVsdF9hcGk6Z3JlcHBlcmAgdG8gZXhhbWluZSB0aGUgZnVuY3Rpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25ldGlmX3F1ZXVlX3NldF9uYXBpJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MDY9c3RhdGljIHZvaWQgZW5hX25hcGlfZGlzYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTc6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODIwLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgzNy1cdFx0XHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM5LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4NDA6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIGksXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODQxLVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTY1OT1zdGF0aWMgdm9pZCBibmdlX2luaXRfb25lX3J4X3JpbmdfcGFpcihzdHJ1Y3QgYm5nZV9uZXQgKmJuLCBpbnQgcmluZ19ucilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2NS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNjY2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXHUwMDNlbmV0ZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNjY3LVx0XHRcdCAgICAgXHUwMDI2cnhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNzAxPXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE3MTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTcxNC1cdFx0XHRcdCAgICAgXHUwMDI2dHhyLVx1MDAzZWJuYXBpLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0yNzI1PXN0YXRpYyB2b2lkIGJuZ2VfZGVsX25hcGkoc3RydWN0IGJuZ2VfbmV0ICpibilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJkLVx1MDAzZXJ4X25yX3JpbmdzOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMyLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYmQtXHUwMDNldHhfbnJfcmluZ3M7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXHRcdFx0ICAgICBcdTAwMjZyeHItXHUwMDNlYm5hcGktXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDY5Mz1zdGF0aWMgaW50IGJueHRfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcwOS1cdFx0aWYgKGkgXHUwMDNlPSBicC1cdTAwM2V0eF9ucl9yaW5nc194ZHApXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVx1MDAzZWRldiwgaSAtIGJwLVx1MDAzZXR4X25yX3JpbmdzX3hkcCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTE5NzM9c3RhdGljIHZvaWQgYm54dF9kZWxfbmFwaShzdHJ1Y3QgYm54dCAqYnApXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODAtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBicC1cdTAwM2VyeF9ucl9yaW5nczsgaSYjNDM7JiM0MzspXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzoxMTk4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXHUwMDNlZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Mi1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGJwLVx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXHUwMDNldHhfbnJfcmluZ3NfeGRwOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShicC1cdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg0LVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDAzLVx0XHRpZiAodG5hcGktXHUwMDNldHhfYnVmZmVycykge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHR4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA1LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVx0XHRpZiAodG5hcGktXHUwMDNlcnhfcmNiKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcnhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTc0MTc9c3RhdGljIHZvaWQgdGczX25hcGlfZW5hYmxlKHN0cnVjdCB0ZzMgKnRwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXHRcdGlmICh0bmFwaS1cdTAwM2V0eF9idWZmZXJzKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDI3Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgdHhxX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzMi1cdFx0aWYgKHRuYXBpLVx1MDAzZXJ4X3JjYikge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQzMzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJ4cV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDM0LVx0XHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0xOTc0PXN0YXRpYyB2b2lkIHRzbmVwX3F1ZXVlX2VuYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTgyLVx0aWYgKHF1ZXVlLVx1MDAzZXR4KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4MzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsIHF1ZXVlLVx1MDAzZXR4LVx1MDAzZXF1ZXVlX2luZGV4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZxdWV1ZS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cdGlmIChxdWV1ZS1cdTAwM2VyeCkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2cXVldWUtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5OTU9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZGlzYWJsZShzdHJ1Y3QgdHNuZXBfcXVldWUgKnF1ZXVlKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTk5LVx0aWYgKHF1ZXVlLVx1MDAzZXJ4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDA6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2VyeC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDAxLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDQtXHRcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXHUwMDNldHgsIFx1MDAyNnF1ZXVlLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cdTAwM2V0eC1cdTAwM2VxdWV1ZV9pbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5MjQ9c3RhdGljIHZvaWQgZ3ZlX3R1cm5kb3duKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cdFx0aWYgKGlkeCBcdTAwM2MgcHJpdi1cdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTQzOlx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXHUwMDNlZGV2LCBpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0NC1cdFx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTQtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1Ni1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5NzI9c3RhdGljIHZvaWQgZ3ZlX3R1cm51cChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXHRcdGlmIChpZHggXHUwMDNjIHByaXYtXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk5MDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5OTEtXHRcdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTUtXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDE2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDE3LVx0XHRcdFx0ICAgICBcdTAwMjZibG9jay1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0xOTg9aW50IGhpbmljM19xcHNfaXJxX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyMzQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM1LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2aXJxX2NmZy1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzctXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZpcnFfY2ZnLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cdFx0cXBfZGVsX25hcGkoaXJxX2NmZyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU0LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXHUwMDNlbmV0ZGV2LCBxX2lkLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU2LVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MjcwPXZvaWQgaGluaWMzX3Fwc19pcnFfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVx0XHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODAtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cdTAwM2VuZXRkZXYsIHFfaWQsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODItXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9NDgxPXZvaWQgZTEwMDBfZG93bihzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTUxMy1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xMzUyPWludCBlMTAwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTk6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ2MzY9aW50IGUxMDAwZV9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTItXHRuYXBpX2VuYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTUtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYzo0Nzc0Olx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3NS1cdG5hcGlfZGlzYWJsZShcdTAwMjZhZGFwdGVyLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzkzLVx0XHRpZiAodnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XSBcdTAwMjZcdTAwMjYgdnNpLVx1MDAzZXJ4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3RvcilcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5NDpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5NS1cdFx0XHRcdFx0ICAgICBcdTAwMjZ2c2ktXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVx1MDAzZXFfdmVjdG9yLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5OC1cdFx0aWYgKHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0gXHUwMDI2XHUwMDI2IHZzaS1cdTAwM2V0eF9yaW5nc1txX2lkeF0tXHUwMDNlcV92ZWN0b3IpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XHRcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MDAtXHRcdFx0XHRcdCAgICAgXHUwMDI2dnNpLVx1MDAzZXR4X3JpbmdzW3FfaWR4XS1cdTAwM2VxX3ZlY3Rvci1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMxLVx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODMyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzMtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzQtXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzU6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNi19XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQzLVx0Zm9yICh1MzIgaSA9IDA7IGkgXHUwMDNjIHFfdmVjdG9yLVx1MDAzZW51bV9yeHE7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ0Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVx1MDAzZXJ4W2ldLVx1MDAzZWlkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cdGZvciAodTMyIGkgPSAwOyBpIFx1MDAzYyBxX3ZlY3Rvci1cdTAwM2VudW1fdHhxOyBpJiM0MzsmIzQzOylcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0ODpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBxX3ZlY3Rvci1cdTAwM2V0eFtpXS1cdTAwM2VpZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDktXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMTAyPXZvaWQgaWdiX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTE0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3Rvcixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MDk3LVx0aWYgKHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmcpXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MDk4Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVx1MDAzZW5ldGRldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXHRcdFx0XHQgICAgIHFfdmVjdG9yLVx1MDAzZXJ4LnJpbmctXHUwMDNlcXVldWVfaW5kZXgsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTEwMi1cdGlmIChxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NTEwMzpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cdTAwM2VuZXRkZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVx0XHRcdFx0ICAgICBxX3ZlY3Rvci1cdTAwM2V0eC5yaW5nLVx1MDAzZXF1ZXVlX2luZGV4LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz04OT1pbnQgbWx4NF9lbl9hY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1NC1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2Mi1cdFx0bmFwaV9lbmFibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjcS1cdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmNxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTE5Nj12b2lkIG1seDRfZW5fZGVhY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoyMDY6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVx1MDAzZWRldiwgY3EtXHUwMDNlY3FfaWR4LCBxdHlwZSwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVx0XHRuYXBpX2Rpc2FibGUoXHUwMDI2Y3EtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk1MS1cdFx0bWx4NWVfYWN0aXZhdGVfcnEoXHUwMDI2Yy1cdTAwM2VycSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNmMtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUzLVx0fVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYz05NTc9dm9pZCBtbHg1ZV9wdHBfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2MS1cdGlmICh0ZXN0X2JpdChNTFg1RV9QVFBfU1RBVEVfUlgsIGMtXHUwMDNlc3RhdGUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTYyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVx1MDAzZW5ldGRldiwgYy1cdTAwM2VycS5peCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cdFx0bWx4NWVfZGVhY3RpdmF0ZV9ycShcdTAwMjZjLVx1MDAzZXJxKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0Ni1cdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVx1MDAzZXR4cSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NDc6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cdTAwM2VuZXRkZXYsIHNxLVx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIHNxLVx1MDAzZWNxLm5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ4LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTYwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlx0bmV0aWZfcXVldWVfc2V0X25hcGkoc3EtXHUwMDNlbmV0ZGV2LCBzcS1cdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2Mi1cdGNsZWFyX2JpdChNTFg1RV9TUV9TVEFURV9FTkFCTEVELCBcdTAwMjZzcS1cdTAwM2VzdGF0ZSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM1LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2Olx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cdTAwM2VuZXRkZXYsIGMtXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZjLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5Mzk9c3RhdGljIHZvaWQgbWx4NWVfZGVhY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9jaGFubmVsICpjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0Mi1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6Mjk0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXHUwMDNlbmV0ZGV2LCBjLVx1MDAzZWl4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjExNT1zdGF0aWMgdm9pZCBmYm5pY19zZXRfbmV0aWZfbmFwaShzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTIzOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlc3ViMC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjQtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcdTAwMjZudi1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEzMTpcdFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXHUwMDNlbmFwaS5kZXYsIHF0LVx1MDAzZWNtcGwucV9pZHgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVx0XHRcdFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXHUwMDI2bnYtXHUwMDNlbmFwaSk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM9MjEzNj1zdGF0aWMgdm9pZCBmYm5pY19yZXNldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0My1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNDQ6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVx1MDAzZW5hcGkuZGV2LCBxdC1cdTAwM2VzdWIwLnFfaWR4LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0NS1cdFx0XHRcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTEtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTUyOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cdTAwM2VuYXBpLmRldiwgcXQtXHUwMDNlY21wbC5xX2lkeCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTMtXHRcdFx0XHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0zMjE9c3RhdGljIHZvaWQgcnRhc2VfdHhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozNTM6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTQtXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz01OTA9c3RhdGljIHZvaWQgcnRhc2VfcnhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDctXHRyaW5nLVx1MDAzZWl2ZWMgPSBcdTAwMjZ0cC1cdTAwM2VpbnRfdmVjdG9yW2lkeF07XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDktXHRcdFx0ICAgICByaW5nLVx1MDAzZXR5cGUsIFx1MDAyNnJpbmctXHUwMDNlaXZlYy1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xMTY2PXN0YXRpYyB2b2lkIHJ0YXNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVx0XHRcdFx0XHQgcmluZ19lbnRyeSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cdTAwM2VkZXYsIHJpbmctXHUwMDNlaW5kZXgsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVx0XHRcdFx0XHQgICAgIHJpbmctXHUwMDNldHlwZSwgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTcxNz1zdGF0aWMgdm9pZCBydGFzZV9zd19yZXNldChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzctXHRcdFx0XHRcdCByaW5nX2VudHJ5KSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxNzM4Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVx1MDAzZWRldiwgcmluZy1cdTAwM2VpbmRleCxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzktXHRcdFx0XHRcdCAgICAgcmluZy1cdTAwM2V0eXBlLCBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTYtXHRcdGlmIChpIFx1MDAzYyBuZGV2LVx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxNzpcdFx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy03MTgtXHRcdFx0XHRcdCAgICAgTlVMTCk7XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6NzE5Olx0XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cdFx0XHRcdFx0ICAgICBOVUxMKTtcbi0tXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTc3Mj1zdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVx0bmFwaV9lbmFibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4MjY6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI5LVx0XHRcdCAgICAgXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg3MTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzMtXHRuYXBpX2Rpc2FibGUoXHUwMDI2bmV0X2RldmljZS1cdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYz0xMjIzPXN0YXRpYyB2b2lkIG5ldHZzY19zY19vcGVuKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdfc2MpXG4tLVxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXHRuYXBpX2VuYWJsZShcdTAwMjZudmNoYW4tXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI2MDpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cdFx0XHQgICAgIFx1MDAyNm52Y2hhbi1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYzLVx0XHRcdCAgICAgXHUwMDI2bnZjaGFuLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVx0XHRuZXRkZXZfbm90aWNlKG5kZXYsIFwmIzM0O3N1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjcwOlx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNzEtXHRcdFx0XHQgICAgIE5VTEwpO1xuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cdFx0XHRcdCAgICAgTlVMTCk7XG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTUtXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2Olx0XHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcdTAwMjZycS1cdTAwM2VuYXBpKTtcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy00OTctXHRcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZycS1cdTAwM2VuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAxPW5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4tLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgyOC1cdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjgyOTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzAtXHRcdFx0ICAgICBcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcbi0tXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQyLVxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg0MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODQ0LVx0bmFwaV9kaXNhYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODE1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9lbmFibGUoc3RydWN0IHJlY2VpdmVfcXVldWUgKnJxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShycS1cdTAwM2V2cSwgXHUwMDI2cnEtXHUwMDNlbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFx1MDAyNnJxLVx1MDAzZW5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4MjItfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cdTAwM2V2cSwgbmFwaSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODQ1PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9kaXNhYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cdGlmIChuYXBpLVx1MDAzZXdlaWdodCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XHRcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTMtXHRcdG5hcGlfZGlzYWJsZShuYXBpKTtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjItXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXHRuYXBpX2Rpc2FibGUobmFwaSk7XG4tLVxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcbi0tXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDItXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXHRcdFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXG4tLVxubmV0L2NvcmUvZGV2LmM9NzI4NT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XG4tLVxubmV0L2NvcmUvZGV2LmMtNzI4Ny0vKipcbm5ldC9jb3JlL2Rldi5jOjcyODg6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxubmV0L2NvcmUvZGV2LmMtNzI4OS0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXG4tLVxubmV0L2NvcmUvZGV2LmMtNzI5Ny0gKi9cbm5ldC9jb3JlL2Rldi5jOjcyOTg6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXG5uZXQvY29yZS9kZXYuYy03Mjk5LVx0XHRcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLCBzdHJ1Y3QgbmFwaV9zdHJ1Y3QgKm5hcGkpXG4tLVxubmV0L2NvcmUvZGV2LmMtNzMyMC19XG5uZXQvY29yZS9kZXYuYzo3MzIxOkVYUE9SVF9TWU1CT0wobmV0aWZfcXVldWVfc2V0X25hcGkpO1xubmV0L2NvcmUvZGV2LmMtNzMyMi1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NDAKCQkJCQkJCW91dHB1dDogMTgxCgkJCQkJCQl0aG91Z2h0czogOTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7dmUgbG9va2VkIG92ZXIgdGhpcyBwYXRjaC4gSXQmIzM5O3MgbWFraW5nIGNoYW5nZXMgdG8gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBieSBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gRnJvbSBhIG5ldHdvcmtpbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQmIzM5O3MgdGhlIHN0YW5kYXJkIEFQSSBmb3IgYXNzb2NpYXRpbmcgYSBOQVBJIGNvbnRleHQgd2l0aCBhIHNwZWNpZmljIHF1ZXVlLiBNeSBpbW1lZGlhdGUgY29uY2VybiwgYXMgYWx3YXlzLCBpcyBhcm91bmQgcG90ZW50aWFsIG1lbW9yeSBpc3N1ZXMsIGJ1dCBhZnRlciBsb29raW5nIGludG8gdGhpcywgaXQmIzM5O3MgY2xlYXIgdGhlcmUmIzM5O3Mgbm90aGluZyBoZXJlIHRoYXQmIzM5O3MgZ29pbmcgdG8gdHJpZ2dlciB1bmluaXRpYWxpemVkIG1lbW9yeSBhY2Nlc3MuIFdlJiMzOTtyZSBqdXN0IHNldHRpbmcgYSBwb2ludGVyIHdpdGhpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBObyBjaGFuY2Ugb2YgaW5mbyBsZWFrcyBvciB1bmluaXRpYWxpemVkIHBhZGRpbmcgZWl0aGVyLiBUaGF0JiMzOTtzIGdvb2QuIFdoaWNoIG1lYW5zLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQsIEkgY2FuIGNvbmNsdWRlIHdpdGggY29uZmlkZW5jZSB0aGF0IEtNU0FOIGlzbiYjMzk7dCBuZWNlc3NhcnkgZm9yIHRoaXMgcGFydGljdWxhciBjaGFuZ2UuIEl0IGxvb2tzIHNvdW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzaW1wbHkgYWRkcyBjYWxscyB0byBgbmV0aWZfcXVldWVfc2V0X25hcGlgIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIGEgTkFQSSBjb250ZXh0IHdpdGggYSBuZXR3b3JrIGRldmljZSBxdWV1ZSBpbiB0aGUgbmV0ZGV2c2ltIGRyaXZlci4gVGhpcyBpcyBhIHN0YW5kYXJkIG5ldHdvcmtpbmcgQVBJIHRoYXQgc2V0cyBhIHBvaW50ZXIgaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gSXQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSwgZG9lcyBub3QgaW52b2x2ZSBjb21wbGV4IG1lbW9yeSBhbGxvY2F0aW9ucywgYW5kIGRvZXMgbm90IGFsdGVyIGNvbnRyb2wgZmxvdyBiYXNlZCBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2Ugd291bGQgbGlrZWx5IGJlIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMsIHVzZS1hZnRlci1mcmVlcywgb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3Nlcywgd2hpY2ggYXJlIGFscmVhZHkgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiBUaGVyZSBpcyBubyByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MgdGhhdCB3b3VsZCByZXF1aXJlIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbi4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyODozMS41NzMxODg5ODNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzIwMzQwOTA4NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gICAgXCJuc2ltX3F1ZXVlX3N0b3BcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGZ1enppbmcpIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgd2l0aCBSWCBxdWV1ZXMgZHVyaW5nIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjMxLjU3MzE5NTMxMloiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDA4ODUwNTc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgNWE3MjE0NjBmYzVmYzI2OGE3OTQ1OTUwZmJkZjM4OWYwYzU5MjQ3ZFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToyODozMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5jMThmOWY1NDAwODRhIDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbisrKyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xcbkBAIC04MjYsNiArODI2LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4gXFx0fVxcbiBcXG4gXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG4rXFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbitcXHRcXHRcXHQgICAgIFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuIFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTgzOCw2ICs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbiBcXG4gXFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcXG4gXFxuK1xcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuIFxcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4gXFxuIFxcdGlmIChucy1cXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjMxLjk4MjgyMDc2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDM1OTI0MjgxNTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUREVWU0lNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnNpbV9xdWV1ZV9zdGFydFwiLFxuICAgIFwibnNpbV9xdWV1ZV9zdG9wXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIG5ldGRldnNpbSBkcml2ZXIgKGEgc29mdHdhcmUtZW11bGF0ZWQgbmV0d29yayBkZXZpY2UgdXNlZCBmb3IgdGVzdGluZyBhbmQgZnV6emluZykgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgTkFQSSB3aXRoIFJYIHF1ZXVlcyBkdXJpbmcgcXVldWUgc3RhcnQgYW5kIHN0b3Agb3BlcmF0aW9ucy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyB0aGF0IGlzIGhpZ2hseSByZWxldmFudCBmb3IgZnV6emluZy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWE3MjE0NjBmYzVmYzI2OGE3OTQ1OTUwZmJkZjM4OWYwYzU5MjQ3ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDEyIDE1OjI4OjMwIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5pbmRleCA0ZTlkN2UxMGI1MjdlLi5jMThmOWY1NDAwODRhIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG4rKysgYi9kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmNcbkBAIC04MjYsNiArODI2LDggQEAgbnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcbiBcdH1cbiBcbiBcdG5zLVx1MDAzZXJxW2lkeF0gPSBxbWVtLVx1MDAzZXJxO1xuK1x0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxuK1x0XHRcdCAgICAgXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcdG5hcGlfZW5hYmxlX2xvY2tlZChcdTAwMjZucy1cdTAwM2VycVtpZHhdLVx1MDAzZW5hcGkpO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtODM4LDYgKzg0MCw3IEBAIHN0YXRpYyBpbnQgbnNpbV9xdWV1ZV9zdG9wKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHZvaWQgKnBlcl9xdWV1ZV9tZW0sIGludCBpZHgpXG4gXG4gXHRuZXRkZXZfYXNzZXJ0X2xvY2tlZChkZXYpO1xuIFxuK1x0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcbiBcdG5hcGlfZGlzYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdGlmIChucy1cdTAwM2VycV9yZXNldF9tb2RlID09IDEpIHtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjMxLjk4MjgyMjM2WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE4MzUxMjc1NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCB0byBuZXRkZXZzaW0qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHRhcmdldGluZyBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYCwgcmlnaHQ/IFNlZW1zIGxpa2Ugc29tZW9uZSBpcyBtYWtpbmcgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byB0aGUgbmV0ZGV2c2ltIGRyaXZlci4gTXkgZ3V0IHRlbGxzIG1lIHRoaXMgY291bGQgYmUgaW50ZXJlc3RpbmcsIGdpdmVuIGl0cyBoZWF2eSB1c2UgaW4gdGVzdGluZyBhbmQgZnV6emluZy4gU3BlY2lmaWNhbGx5LCB0aGUgcGF0Y2ggdG91Y2hlcyBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgLCBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gSW4gYG5zaW1fcXVldWVfc3RhcnRgLCB3ZSdyZSBzZXR0aW5nIHRoZSBOQVBJIGZvciB0aGUgUlggcXVldWUgKGBORVRERVZfUVVFVUVfVFlQRV9SWGApLCBhbmQgdGhlbiBjbGVhcmluZyBpdCBpbiBgbnNpbV9xdWV1ZV9zdG9wYC4gVGhhdCdzIGEgZGVmaW5pdGUgZnVuY3Rpb25hbCBzaGlmdDsgaXQgaW1wbGllcyBjaGFuZ2VzIGluIGhvdyB0aGUgZHJpdmVyIGhhbmRsZXMgUlggcHJvY2Vzc2luZy4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBjb25maWcgZGVwZW5kZW5jaWVzLCBzbyBsZXQncyBjaGVjayBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jYCBub3cuLi4gYWgsIHllcywgYE5FVERFVlNJTWAgaXMgdGhlIHJlbGV2YW50IGNvbmZpZy4gTm93LCB0byBnZXQgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBwb3RlbnRpYWwgaW1wYWN0LCBsZXQgbWUgcnVuIGEgcXVpY2sgZ3JlcCBmb3IgYm90aCBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBvdmVydmlldyBvZiB3aGVyZSB0aGVzZSBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRoaW4gdGhlIG1vZHVsZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzNCwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjM4LjE2NjMzODUzNVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk3MTU0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9ODAwPXN0YXRpYyBpbnRcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODAxOm5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgwMi1cXHRcXHQgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04NTY9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTktXFx0Lm5kb19xdWV1ZV9tZW1fZnJlZVxcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODYwOlxcdC5uZG9fcXVldWVfc3RhcnRcXHQ9IG5zaW1fcXVldWVfc3RhcnQsXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg2MS1cXHQubmRvX3F1ZXVlX3N0b3BcXHRcXHQ9IG5zaW1fcXVldWVfc3RvcCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjg6MzguMjEzMzE0NjFaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzI5OTEzNDEzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgVGFyZ2V0IElkZW50aWZpY2F0aW9uKipcblxuT2theSwgc28gSSd2ZSBwaW5wb2ludGVkIGEgcHJvbWlzaW5nIHRhcmdldC4gVGhlc2UgZnVuY3Rpb25zIHdpdGhpbiBgbnNpbV9xdWV1ZV9tZ210X29wc2AgaW1wbGVtZW50IGBuZXRkZXZfcXVldWVfbWdtdF9vcHNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIHNvbWV0aGluZyByZWFjaGFibGUgYW5kIHdvcnRoIHB1dHRpbmcgdGhyb3VnaCBpdHMgcGFjZXMgd2l0aCBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IGBORVRERVZTSU1gIGlzIHRoZSByZWxldmFudCBjb25maWcgY29uZmlybXMgbXkgaW5pdGlhbCBodW5jaC4gTm93LCBJIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUgYXJlIGFueSAqb3RoZXIqIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIHRvIGNvbnNpZGVyLCB3aGljaCBtaWdodCBhZmZlY3QgdGhlIGNvZGUgcGF0aCBhbmQgdGh1cyB0aGUgZnV6emluZyBzdHJhdGVneS4gSSdsbCBuZWVkIHRvIGV4cGFuZCBteSB2aWV3IHRvIGluY2x1ZGUgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXMgd2VsbC4gVGhpcyBhcmVhIGlzIGRlZmluaXRlbHkgcmlwZSBmb3IgaW52ZXN0aWdhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjkxOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjQxLjU0MzIzMjAxM1oiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjM3NDE2NSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVERFVlNJTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjg6NDEuNTg5NjMxNzU4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM3NTM0ODU3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqS2VybmVsIENvbmZpZ3VyYXRpb24gSHVudGluZyoqXG5cbkFscmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgcmVsYXRlZCB0byB3aGF0ZXZlciBJJ20gd29ya2luZyBvbiwgbGlrZWx5IHNvbWV0aGluZyBuZXR3b3JrLXJlbGF0ZWQgZ2l2ZW4gdGhlIGNvbnRleHQuIE15IGluaXRpYWwgaW5zdGluY3QsIGJhc2VkIG9uIHRoZSBsaWtlbHkgY29tcG9uZW50cyBpbnZvbHZlZCwgcG9pbnRzIG1lIGRpcmVjdGx5IHRvIHRoZSBrZXJuZWwncyBjb25maWd1cmF0aW9uIGZpbGVzLiBNeSBmaXJzdCBzdG9wLCBhbmQgdGhlIG1vc3QgbG9naWNhbCBiYXNlZCBvbiBuYW1pbmcgY29udmVudGlvbnMgYW5kIGxpa2VseSBmaWxlIHN0cnVjdHVyZSwgaXMgd2l0aGluIHRoZSBgZHJpdmVycy9uZXQvbmV0ZGV2c2ltL2AgZGlyZWN0b3J5IGFuZCBpdHMgYEtjb25maWdgIGZpbGUuIEdpdmVuIG15IHByaW9yIGV4cGVyaWVuY2Ugd2l0aCB0aGUgc2ltdWxhdG9yLCB0aGF0J3MgYWxtb3N0IGFsd2F5cyB0aGUgZmlyc3QgcGxhY2UgdG8gY2hlY2suIElmIHRoYXQgZG9lc24ndCBob2xkIHRoZSBhbnN3ZXIsIHRoZW4gSSdsbCBicm9hZGVuIHRoZSBzY29wZS4gSSdsbCBuZWVkIHRvIGxvb2sgYXQgYGRyaXZlcnMvbmV0L0tjb25maWdgLiBUaGF0J3MgdGhlIGNvcmUgbmV0d29yayBkcml2ZXIgY29uZmlndXJhdGlvbiwgYW5kIGl0J3MgYWxtb3N0IGNlcnRhaW4gdG8gaW5jbHVkZSB0aGUgcmVsZXZhbnQgb3B0aW9ucywgb3IgYXQgbGVhc3QgcG9pbnQgbWUgdG93YXJkcyB0aGUgY29ycmVjdCBsb2NhdGlvbiBpZiBpdCdzIG5lc3RlZCBtb3JlIGRlZXBseS4gTm8gcG9pbnQgaW4gd2FzdGluZyB0aW1lLCBJJ2xsIGdvIHN0cmFpZ2h0IGZvciB0aGUgbW9zdCBsaWtlbHkgcGF0aHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjIsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyODo0NS45NjQ5ODIxNzJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImJwZi5jXCIsXG4gICAgXCJidXMuY1wiLFxuICAgIFwiZGV2LmNcIixcbiAgICBcImV0aHRvb2wuY1wiLFxuICAgIFwiZmliLmNcIixcbiAgICBcImhlYWx0aC5jXCIsXG4gICAgXCJod3N0YXRzLmNcIixcbiAgICBcImlwc2VjLmNcIixcbiAgICBcIm1hY3NlYy5jXCIsXG4gICAgXCJuZXRkZXYuY1wiLFxuICAgIFwibmV0ZGV2c2ltLmhcIixcbiAgICBcInBzYW1wbGUuY1wiLFxuICAgIFwicHNwLmNcIixcbiAgICBcInRjLmNcIixcbiAgICBcInVkcF90dW5uZWxzLmNcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjg6NDUuOTY1MDQzMzAyWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODE1OTcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIHByZXNlbnRlZCBhcyBhIHN0cmVhbSBvZiB0aG91Z2h0OlxuXG4qKktjb25maWcgTG9jYXRpb24gRGlsZW1tYSoqXG5cblJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCB3aGVyZSB0aGUgS2NvbmZpZyBmaWxlIGlzIGZvciB0aGUgbmV0d29yayBkcml2ZXIgc3R1ZmYuIEkgaW1tZWRpYXRlbHkgdGhvdWdodCBpdCB3YXMgaW4gYGRyaXZlcnMvbmV0L0tjb25maWdgLCB0aGF0J3MgdXN1YWxseSB0aGUgZ28tdG8gc3BvdC4gQnV0IGhvbGQgb24sIHRoZSBgbmV0ZGV2c2ltYCBkcml2ZXIuLi4gZG9lcyBpdCBoYXZlIGl0cyBvd24gc3BlY2lmaWMgS2NvbmZpZyBmaWxlPyBMZXQgbWUgZG91YmxlLWNoZWNrLiBPa2F5LCB0aGVyZSBpc24ndCBhIGBkcml2ZXJzL25ldC9uZXRkZXZzaW0vS2NvbmZpZ2AgZmlsZS4gSG1tLCB0aGF0J3MgdW51c3VhbCwgSSBndWVzcyBpdCByZWxpZXMgb24gYSBzaGFyZWQgb25lLCB3aGljaCBvbmUgZGVmaW5lcyBgTkVUREVWU0lNYD8gQmV0dGVyIHN0YXJ0IGJ5IHNlYXJjaGluZyBmb3Igd2hlcmUgdGhhdCBzeW1ib2wgZ2V0cyBkZWZpbmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNTQ5LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJjb2Rlc2VhcmNoLWRpci1pbmRleCJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjQ5LjMxMzIwNjc5M1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ4MTYxMzc1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRERVZTSU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NjAyPXNvdXJjZSBcXFwiZHJpdmVycy9uZXQvaHlwZXJ2L0tjb25maWdcXFwiXFxuZHJpdmVycy9uZXQvS2NvbmZpZy02MDMtXFxuZHJpdmVycy9uZXQvS2NvbmZpZzo2MDQ6Y29uZmlnIE5FVERFVlNJTVxcbmRyaXZlcnMvbmV0L0tjb25maWctNjA1LVxcdHRyaXN0YXRlIFxcXCJTaW11bGF0ZWQgbmV0d29ya2luZyBkZXZpY2VcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjQ5LjQ2MTM3NDY3N1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI1NDAxNzcwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipEZWNvbnN0cnVjdGluZyBORVRERVZTSU0gRGVwZW5kZW5jaWVzKipcblxuT2theSwgc28gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVUREVWU0lNYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiV2hhdCBhcmUgdGhlIGNvcmUgY29tcG9uZW50cyBpdCByZWxpZXMgb24/XCIgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgYXQgYSBoaWdoIGxldmVsLiBJcyBpdCBidWlsdCBvbiBhIHNwZWNpZmljIHNpbXVsYXRpb24gZnJhbWV3b3JrPyBEb2VzIGl0IGxldmVyYWdlIGFueSBwYXJ0aWN1bGFyIG5ldHdvcmtpbmcgbGlicmFyaWVzPyBBcmUgdGhlcmUgYW55IGRhdGEgYW5hbHlzaXMgb3IgdmlzdWFsaXphdGlvbiB0b29scyB0aGF0IGFyZSBpbnRlZ3JhbCB0byBpdHMgZnVuY3Rpb25hbGl0eT9cblxuSSdsbCBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSBnb2luZyB0byBzdGFydCBieSBsb29raW5nIGZvciBhIHByb2plY3Qgc3RydWN0dXJlIG9yIGRvY3VtZW50YXRpb24gdGhhdCBtaWdodCBwcm92aWRlIHNvbWUgY2x1ZXMuIE1heWJlIHRoZXJlJ3MgYSBgcmVxdWlyZW1lbnRzLnR4dGAgZmlsZSwgb3IgYSBzZWN0aW9uIG9uIGRlcGVuZGVuY2llcyBpbiB0aGUgUkVBRE1FLiBJJ20gYW50aWNpcGF0aW5nIHRoYXQga25vd2luZyB0aGlzIHdpbGwgaGVscCBkZXRlcm1pbmUgd2hhdCBpcyBuZWVkZWQgZm9yIG15IHdvcmsuXG5cbk9uY2UgSSBoYXZlIGEgbGlzdCBvZiB0aGVzZSBkZXBlbmRlbmNpZXMsIEkgd2lsbCBuZWVkIHRvIGNhdGVnb3JpemUgdGhlbS4gRGlzdGluZ3Vpc2hpbmcgYmV0d2VlbiBjb3JlIGxpYnJhcmllcywgb3B0aW9uYWwgZmVhdHVyZXMsIGFuZCBkZXZlbG9wZXIgdG9vbHMgd2lsbCBiZSBpbXBvcnRhbnQuIEl0IHdpbGwgYmUgaGVscGZ1bCB0byB1bmRlcnN0YW5kIHdoZXRoZXIgdGhlc2UgZGVwZW5kZW5jaWVzIGFyZSBleHRlcm5hbCBsaWJyYXJpZXMsIGluLWhvdXNlIG1vZHVsZXMsIG9yIHN0YW5kYXJkIFB5dGhvbiBwYWNrYWdlcy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8ga25vdyB0aGUgdmVyc2lvbiBjb21wYXRpYmlsaXR5IGFzIHdlbGw7IEkgZG9uJ3Qgd2FudCB0byBydW4gaW50byBhbnkgdW5leHBlY3RlZCBjb25mbGljdHMgZG93biB0aGUgbGluZS5cblxuRmluYWxseSwgSSB3aWxsIHdhbnQgdG8gYXNzZXNzIGhvdyB0aGVzZSBkZXBlbmRlbmNpZXMgaW50ZXJhY3Qgd2l0aCB0aGUgc2ltdWxhdG9yIGl0c2VsZi4gQXJlIHRoZXkgdGlnaHRseSBjb3VwbGVkLCBvciBpcyB0aGUgYXJjaGl0ZWN0dXJlIG1vcmUgbW9kdWxhcj8gVGhpcyB3aWxsIGdpdmUgbWUgYSBzZW5zZSBvZiB0aGUgc3lzdGVtJ3MgZmxleGliaWxpdHkgYW5kIHBvdGVudGlhbCBmb3IgZXh0ZW5zaW9uLiBVbHRpbWF0ZWx5LCB1bmRlcnN0YW5kaW5nIHRoZXNlIGRlcGVuZGVuY2llcyB3aWxsIGJlIGtleSB0byB3b3JraW5nIHdpdGggYE5FVERFVlNJTWAgZWZmZWN0aXZlbHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM4ODYsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyODo1My41ODY3Nzg0NDdaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODk1OTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA2MDQsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA2MDQ6XFx0Y29uZmlnIE5FVERFVlNJTVxcbiA2MDU6XFx0XFx0dHJpc3RhdGUgXFxcIlNpbXVsYXRlZCBuZXR3b3JraW5nIGRldmljZVxcXCJcXG4gNjA2OlxcdFxcdGRlcGVuZHMgb24gREVCVUdfRlNcXG4gNjA3OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiA2MDg6XFx0XFx0ZGVwZW5kcyBvbiBQU0FNUExFIHx8IFBTQU1QTEU9blxcbiA2MDk6XFx0XFx0ZGVwZW5kcyBvbiBQVFBfMTU4OF9DTE9DS19NT0NLIHx8IFBUUF8xNTg4X0NMT0NLX01PQ0s9blxcbiA2MTA6XFx0XFx0c2VsZWN0IE5FVF9ERVZMSU5LXFxuIDYxMTpcXHRcXHRzZWxlY3QgUEFHRV9QT09MXFxuIDYxMjpcXHRcXHRzZWxlY3QgTkVUX1NIQVBFUlxcbiA2MTM6XFx0XFx0aGVscFxcbiA2MTQ6XFx0XFx0ICBUaGlzIGRyaXZlciBpcyBhIGRldmVsb3BlciB0ZXN0aW5nIHRvb2wgYW5kIHNvZnR3YXJlIG1vZGVsIHRoYXQgY2FuXFxuIDYxNTpcXHRcXHQgIGJlIHVzZWQgdG8gdGVzdCB2YXJpb3VzIGNvbnRyb2wgcGF0aCBuZXR3b3JraW5nIEFQSXMsIGVzcGVjaWFsbHlcXG4gNjE2OlxcdFxcdCAgSFctb2ZmbG9hZCByZWxhdGVkLlxcbiA2MTc6XFx0XFxuIDYxODpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gNjE5OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgbmV0ZGV2c2ltLlxcbiA2MjA6XFx0XFxuIDYyMTpcXHRjb25maWcgTkVUX0ZBSUxPVkVSXFxuIDYyMjpcXHRcXHR0cmlzdGF0ZSBcXFwiRmFpbG92ZXIgZHJpdmVyXFxcIlxcbiA2MjM6XFx0XFx0c2VsZWN0IEZBSUxPVkVSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI4OjUzLjU4Njg2OTUxN1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MjA0NjE1MDc0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBgTkVUREVWU0lNYCBDb25maWd1cmF0aW9uIGFuZCBBUEkgRGVzaWduKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYE5FVERFVlNJTWAuIEl0IGxvb2tzIGxpa2UgdGhpcyBtb2R1bGUgcmVsaWVzIG9uIGJvdGggYERFQlVHX0ZTYCBhbmQgYElORVRgLCBzbyBJJ2xsIG5lZWQgdG8gbWFrZSBzdXJlIHRob3NlIGFyZSBwcm9wZXJseSBoYW5kbGVkIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AuIFRoZSBjb3JlIGZ1bmN0aW9ucyBvZiBpbnRlcmVzdCBoZXJlIHNlZW0gdG8gYmUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC4gSSBuZWVkIHRvIGVuc3VyZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucyBhcmUgY29ycmVjdGx5IGludGVncmF0ZWQuXG5cbkhhbmcgb24gYSBzZWNvbmTigKYgdGhlc2UgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBmdW5jdGlvbnMgYXJlICpzdGF0aWMqLCBhbmQgZGVmaW5lZCB3aXRoaW4gYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUsIGluZGVlZCwgc3RhdGljLiAqWWVwKiwgdGhleSBhcmU6IGBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RhcnQoLi4uKWAgYW5kIGBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcCguLi4pYC4gVGhpcyBpcyB3aGVyZSBpdCBnZXRzIGludGVyZXN0aW5nIGJlY2F1c2UgdGhlIHByb21wdCBpcyBlbmNvdXJhZ2luZyB1c2luZyBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludHMgdG8gYXZvaWQgaW5saW5pbmcuXG5cbkJ1dCB3YWl0LCB0aGVzZSBmdW5jdGlvbnMsIGV2ZW4gYmVpbmcgc3RhdGljLCBhcmUgYXNzaWduZWQgdG8gZnVuY3Rpb24gcG9pbnRlcnMgd2l0aGluIGBuc2ltX3F1ZXVlX21nbXRfb3BzYDpcblxuYGBgY1xuc3RhdGljIGNvbnN0IHN0cnVjdCBuZXRkZXZfcXVldWVfbWdtdF9vcHMgbnNpbV9xdWV1ZV9tZ210X29wcyA9IHtcblx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVx0PSBuc2ltX3F1ZXVlX21lbV9zaXplLFxuXHQubmRvX3F1ZXVlX21lbV9hbGxvY1x0PSBuc2ltX3F1ZXVlX21lbV9hbGxvYyxcblx0Lm5kb19xdWV1ZV9tZW1fZnJlZVx0PSBuc2ltX3F1ZXVlX21lbV9mcmVlLFxuXHQubmRvX3F1ZXVlX3N0YXJ0XHQ9IG5zaW1fcXVldWVfc3RhcnQsXG5cdC5uZG9fcXVldWVfc3RvcFx0XHQ9IG5zaW1fcXVldWVfc3RvcCxcbn07XG5gYGBcblxuQmVjYXVzZSB0aGVpciBhZGRyZXNzZXMgYXJlIHRha2VuLCBpdCBpcyByZWFzb25hYmxlIHRvIGJlbGlldmUgdGhhdCB0aGV5ICpjYW4ndCogYmUgZnVsbHkgaW5saW5lZCBhbmQgd2lsbCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIEdpdmVuIHRoaXMsIGl0IHNob3VsZCBiZSBmaW5lIHRvIGluY2x1ZGUgdGhlbS4gSG93ZXZlciwgaXQncyBlc3NlbnRpYWwgdG8gbm90ZSB0aGF0IHRoZXkgYXJlIGNhbGxlZCB2aWEgYG5kb19xdWV1ZV9zdGFydGAgYW5kIGBuZG9fcXVldWVfc3RvcGAuIFNvLCB0aGUgbmV4dCB0aGluZyBJIG5lZWQgdG8gZG8gaXMgdG8gY2hlY2sgd2hlcmUgYG5zaW1fcXVldWVfbWdtdF9vcHNgIGlzIHVzZWQgYW5kIGhvdyB0aG9zZSBhcmUgdWx0aW1hdGVseSBjYWxsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ1NDUsIk91dHB1dFRva2VucyI6NDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MDMsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOTowMS43OTE0ODcxMDFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MTcyNjg2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5zaW1fcXVldWVfbWdtdF9vcHNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTUtXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg1NjpzdGF0aWMgY29uc3Qgc3RydWN0IG5ldGRldl9xdWV1ZV9tZ210X29wcyBuc2ltX3F1ZXVlX21nbXRfb3BzID0ge1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NTctXFx0Lm5kb19xdWV1ZV9tZW1fc2l6ZVxcdD0gc2l6ZW9mKHN0cnVjdCBuc2ltX3F1ZXVlX21lbSksXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9MTA0MT1zdGF0aWMgaW50IG5zaW1faW5pdF9uZXRkZXZzaW0oc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtMTA1My1cXHRucy1cXHUwMDNlbmV0ZGV2LVxcdTAwM2VzdGF0X29wcyA9IFxcdTAwMjZuc2ltX3N0YXRfb3BzO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzoxMDU0OlxcdG5zLVxcdTAwM2VuZXRkZXYtXFx1MDAzZXF1ZXVlX21nbXRfb3BzID0gXFx1MDAyNm5zaW1fcXVldWVfbWdtdF9vcHM7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTEwNTUtXFx0bmV0ZGV2X2xvY2tkZXBfc2V0X2NsYXNzZXMobnMtXFx1MDAzZW5ldGRldik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjAxLjgzNjY2NDQzNloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTQwNjYxMzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGluIE5ldHdvcmsgSW50ZXJmYWNlIENvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gaG9uaW5nIGluIG9uIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAgYXMgcG90ZW50aWFsIGVudHJ5IHBvaW50cyBmb3IgZnV6emluZy4gSG93ZXZlciwgYSBxdWljayBzYW5pdHkgY2hlY2s6IHNpbmNlIHRoZXkncmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AsIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGV5IGFyZSwgaW4gZmFjdCwgYWNjZXNzaWJsZSB2aWEgdGhlIHN5bWJvbCB0YWJsZS4gSWYgdGhleSdyZSBwcmVzZW50IGluIGBrYWxsc3ltc2AsIHRoZW4gc3l6a2FsbGVyIHNob3VsZCBiZSBhYmxlIHRvIHJlYWNoIHRoZW0uIFRoYXQncyB0aGUga2V5LiBJIG5lZWQgdG8gY29uZmlybSB0aGVpciB2aXNpYmlsaXR5LlxuXG5Ob3csIGxldCdzIHN0ZXAgYmFjayBmb3IgYSBtb21lbnQgYW5kIGNvbnNpZGVyIGlmIHRoZXJlIG1pZ2h0IGJlIG90aGVyIG5ld2x5IGludHJvZHVjZWQgZnVuY3Rpb25zLiBBaCwgdGhlIHBhdGNoIG1lbnRpb25zIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgY2FsbHMuIE9rYXksIHRoYXQncyBhIG5ldyBsZWFkLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBhbmQgZGV0ZXJtaW5lIGhvdyBpdCBtaWdodCBwcm92aWRlIGFub3RoZXIgcm91dGUgZm9yIGZ1enppbmcgb3IgZXhwb3N1cmUuIEknbGwgbG9vayBhdCB0aGUgY2FsbCBzaXRlcyBhbmQgYXNzb2NpYXRlZCBkYXRhIHN0cnVjdHVyZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU3NjcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOTowNS43NzczMjc5MTZaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3OTYyNTMwNDMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmV0aWZfcXVldWVfc2V0X25hcGlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MDY9c3RhdGljIHZvaWQgZW5hX25hcGlfZGlzYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE2LVxcdFxcdFxcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTc6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MTgtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgxOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgyMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jPTE4MjY9c3RhdGljIHZvaWQgZW5hX25hcGlfZW5hYmxlX2luX3JhbmdlKHN0cnVjdCBlbmFfYWRhcHRlciAqYWRhcHRlcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzctXFx0XFx0XFx0LyogVGhpcyBBUEkgaXMgc3VwcG9ydGVkIGZvciBub24tWERQIHF1ZXVlcyBvbmx5ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTgzODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgzOS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYzoxODQwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODQxLVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTE2NTk9c3RhdGljIHZvaWQgYm5nZV9pbml0X29uZV9yeF9yaW5nX3BhaXIoc3RydWN0IGJuZ2VfbmV0ICpibiwgaW50IHJpbmdfbnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2NS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MTY2NjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cXHUwMDNlbmV0ZGV2LCByaW5nX25yLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMTY2Ny1cXHRcXHRcXHQgICAgIFxcdTAwMjZyeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNzAxPXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF90eF9yaW5ncyhzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE3MTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE3MTM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE3MTQtXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dHhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MjcyNT1zdGF0aWMgdm9pZCBibmdlX2RlbF9uYXBpKHN0cnVjdCBibmdlX25ldCAqYm4pXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmQtXFx1MDAzZXJ4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzMyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBiZC1cXHUwMDNldHhfbnJfcmluZ3M7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM6MjczMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShibi1cXHUwMDNlbmV0ZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjI4PXN0YXRpYyBpbnQgYm54dF9pbml0X29uZV9yeF9yaW5nKHN0cnVjdCBibnh0ICpicCwgaW50IHJpbmdfbnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy00NjM0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ2MzU6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgcmluZ19uciwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNi1cXHRcXHRcXHQgICAgIFxcdTAwMjZyeHItXFx1MDAzZWJuYXBpLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTQ2OTM9c3RhdGljIGludCBibnh0X2luaXRfdHhfcmluZ3Moc3RydWN0IGJueHQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcwOS1cXHRcXHRpZiAoaSBcXHUwMDNlPSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjQ3MTA6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgaSAtIGJwLVxcdTAwM2V0eF9ucl9yaW5nc194ZHAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDcxMS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9MTE5NzM9c3RhdGljIHZvaWQgYm54dF9kZWxfbmFwaShzdHJ1Y3QgYm54dCAqYnApXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4MC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXJ4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTE5ODE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTgyLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBicC1cXHUwMDNldHhfbnJfcmluZ3MgLSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM6MTE5ODM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYnAtXFx1MDAzZWRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTExOTg0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM9NzM5ND1zdGF0aWMgdm9pZCB0ZzNfbmFwaV9kaXNhYmxlKHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQwMy1cXHRcXHRpZiAodG5hcGktXFx1MDAzZXR4X2J1ZmZlcnMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA0OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHR4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQwNS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDgtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2VyeF9yY2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDA5OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJ4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQxMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTc0MTc9c3RhdGljIHZvaWQgdGczX25hcGlfZW5hYmxlKHN0cnVjdCB0ZzMgKnRwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyNi1cXHRcXHRpZiAodG5hcGktXFx1MDAzZXR4X2J1ZmZlcnMpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDI3OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHR4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQyOC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzMi1cXHRcXHRpZiAodG5hcGktXFx1MDAzZXJ4X3JjYikge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jOjc0MzM6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcnhxX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDM0LVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk3ND1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9lbmFibGUoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTgyLVxcdGlmIChxdWV1ZS1cXHUwMDNldHgpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4MzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIHF1ZXVlLVxcdTAwM2V0eC1cXHUwMDNlcXVldWVfaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5ODQtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNnF1ZXVlLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg4LVxcdGlmIChxdWV1ZS1cXHUwMDNlcngpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM6MTk4OTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIHF1ZXVlLVxcdTAwM2VyeC1cXHUwMDNlcXVldWVfaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTE5OTAtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnF1ZXVlLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYz0xOTk1PXN0YXRpYyB2b2lkIHRzbmVwX3F1ZXVlX2Rpc2FibGUoc3RydWN0IHRzbmVwX3F1ZXVlICpxdWV1ZSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTk5LVxcdGlmIChxdWV1ZS1cXHUwMDNlcngpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDA6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNlcngtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDAxLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jLTIwMDQtXFx0XFx0dHNuZXBfdHhfZGlzYWJsZShxdWV1ZS1cXHUwMDNldHgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjIwMDU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNldHgtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA2LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5MjQ9c3RhdGljIHZvaWQgZ3ZlX3R1cm5kb3duKHN0cnVjdCBndmVfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTQyLVxcdFxcdGlmIChpZHggXFx1MDAzYyBwcml2LVxcdTAwM2V0eF9jZmcubnVtX3F1ZXVlcylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk0MzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0NC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTU0LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTU1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1Ni1cXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jPTE5NzI9c3RhdGljIHZvaWQgZ3ZlX3R1cm51cChzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk4OS1cXHRcXHRpZiAoaWR4IFxcdTAwM2MgcHJpdi1cXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5OTA6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cXHUwMDNlZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5OTEtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0yMDE1LVxcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2YmxvY2stXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoyMDE2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNy1cXHRcXHRcXHRcXHQgICAgIFxcdTAwMjZibG9jay1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYz0xOTg9aW50IGhpbmljM19xcHNfaXJxX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzMy1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyMzQ6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTIzNS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2aXJxX2NmZy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzctXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmlycV9jZmctXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjUyLVxcdFxcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1MzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI1NTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjU2LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MjcwPXZvaWQgaGluaWMzX3Fwc19pcnFfdW5pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yNzgtXFx0XFx0cXBfZGVsX25hcGkoaXJxX2NmZyk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6Mjc5OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODAtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjgxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yODItXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9NDgxPXZvaWQgZTEwMDBfZG93bihzdHJ1Y3QgZTEwMDBfYWRhcHRlciAqYWRhcHRlcilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy01MTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6NTEyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYy01MTMtXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYz0xMzUyPWludCBlMTAwMF9vcGVuKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTM5Ny1cXHRuYXBpX2VuYWJsZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjEzOTg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxMzk5OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtMTQwMC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYz00NjM2PWludCBlMTAwMGVfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTItXFx0bmFwaV9lbmFibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYzo0NzEzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxNDpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3MTUtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDc1Mj1pbnQgZTEwMDBlX2Nsb3NlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDc3MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDc3NDpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmMtNDc3NS1cXHRuYXBpX2Rpc2FibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYz0yNzgzPXZvaWQgaWNlX3ZzaV9zZXRfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5My1cXHRcXHRpZiAodnNpLVxcdTAwM2VyeF9yaW5nc1txX2lkeF0gXFx1MDAyNlxcdTAwMjYgdnNpLVxcdTAwM2VyeF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5NDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTUtXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dnNpLVxcdTAwM2VyeF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjc5OC1cXHRcXHRpZiAodnNpLVxcdTAwM2V0eF9yaW5nc1txX2lkeF0gXFx1MDAyNlxcdTAwMjYgdnNpLVxcdTAwM2V0eF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6Mjc5OTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MDAtXFx0XFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2dnNpLVxcdTAwM2V0eF9yaW5nc1txX2lkeF0tXFx1MDAzZXFfdmVjdG9yLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9MjgxNT12b2lkIGljZV92c2lfY2xlYXJfbmFwaV9xdWV1ZXMoc3RydWN0IGljZV92c2kgKnZzaSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzMS1cXHRpY2VfZm9yX2VhY2hfdHhxKHZzaSwgcV9pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODMyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODM0LVxcdGljZV9mb3JfZWFjaF9yeHEodnNpLCBxX2lkeClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI4MzU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNi19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jPTM4Mzg9c3RhdGljIHZvaWQgaWRwZl9xX3ZlY3Rvcl9zZXRfbmFwaShzdHJ1Y3QgaWRwZl9xX3ZlY3RvciAqcV92ZWN0b3IsIGJvb2wgbGluaylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0My1cXHRmb3IgKHUzMiBpID0gMDsgaSBcXHUwMDNjIHFfdmVjdG9yLVxcdTAwM2VudW1fcnhxOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXFx1MDAzZXJ4W2ldLVxcdTAwM2VpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ1LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ3LVxcdGZvciAodTMyIGkgPSAwOyBpIFxcdTAwM2MgcV92ZWN0b3ItXFx1MDAzZW51bV90eHE7IGkrKylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jOjM4NDg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBxX3ZlY3Rvci1cXHUwMDNldHhbaV0tXFx1MDAzZWlkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDktXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYz0yMTAyPXZvaWQgaWdiX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2JfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDctXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jOjIxMDg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYi9pZ2JfbWFpbi5jLTIxMDktXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNlcngucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTEyLVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNldHgucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTEzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTE0LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXR4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM9NTA5Mj1zdGF0aWMgdm9pZCBpZ2Nfc2V0X3F1ZXVlX25hcGkoc3RydWN0IGlnY19hZGFwdGVyICphZGFwdGVyLCBpbnQgdmVjdG9yLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTA5Ny1cXHRpZiAocV92ZWN0b3ItXFx1MDAzZXJ4LnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmM6NTA5ODpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdjL2lnY19tYWluLmMtNTA5OS1cXHRcXHRcXHRcXHQgICAgIHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUxMDItXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2V0eC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUxMDM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUxMDQtXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNldHgucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM9ODk9aW50IG1seDRfZW5fYWN0aXZhdGVfY3Eoc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdiwgc3RydWN0IG1seDRfZW5fY3EgKmNxLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1NC1cXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNTU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXFx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTU2LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2Mi1cXHRcXHRuYXBpX2VuYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoxNjM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXFx1MDAzZWRldiwgY3FfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMTY0LVxcdFxcdGJyZWFrO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTE5Nj12b2lkIG1seDRfZW5fZGVhY3RpdmF0ZV9jcShzdHJ1Y3QgbWx4NF9lbl9wcml2ICpwcml2LCBzdHJ1Y3QgbWx4NF9lbl9jcSAqY3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA1LVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYzoyMDY6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoY3EtXFx1MDAzZWRldiwgY3EtXFx1MDAzZWNxX2lkeCwgcXR5cGUsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0yMDctXFx0XFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM9OTM5PXZvaWQgbWx4NWVfcHRwX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTEtXFx0XFx0bWx4NWVfYWN0aXZhdGVfcnEoXFx1MDAyNmMtXFx1MDAzZXJxKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTUyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlcnEuaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2Yy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk1My1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM9OTU3PXZvaWQgbWx4NWVfcHRwX2RlYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfcHRwICpjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2MS1cXHRpZiAodGVzdF9iaXQoTUxYNUVfUFRQX1NUQVRFX1JYLCBjLVxcdTAwM2VzdGF0ZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmM6OTYyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlcnEuaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTYzLVxcdFxcdG1seDVlX2RlYWN0aXZhdGVfcnEoXFx1MDAyNmMtXFx1MDAzZXJxKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTkzOT12b2lkIG1seDVlX2FjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NDYtXFx0bmV0aWZfdHhfc3RhcnRfcXVldWUoc3EtXFx1MDAzZXR4cSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTQ3OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVxcdTAwM2VuZXRkZXYsIHNxLVxcdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBzcS1cXHUwMDNlY3EubmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ4LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MTk1Nz12b2lkIG1seDVlX2RlYWN0aXZhdGVfdHhxc3Eoc3RydWN0IG1seDVlX3R4cXNxICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2MC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjE5NjE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoc3EtXFx1MDAzZW5ldGRldiwgc3EtXFx1MDAzZXR4cV9peCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk2Mi1cXHRjbGVhcl9iaXQoTUxYNUVfU1FfU1RBVEVfRU5BQkxFRCwgXFx1MDAyNnNxLVxcdTAwM2VzdGF0ZSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTI5MTk9c3RhdGljIHZvaWQgbWx4NWVfYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjkzNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjI5MzY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cXHUwMDNlbmV0ZGV2LCBjLVxcdTAwM2VpeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZjLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzctfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTM5PXN0YXRpYyB2b2lkIG1seDVlX2RlYWN0aXZhdGVfY2hhbm5lbChzdHJ1Y3QgbWx4NWVfY2hhbm5lbCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jOjI5NDM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYy1cXHUwMDNlbmV0ZGV2LCBjLVxcdTAwM2VpeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMjk0NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTIxMTU9c3RhdGljIHZvaWQgZmJuaWNfc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEyMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VzdWIwLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMjQtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNm52LVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjEzMTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VjbXBsLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxMzItXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNm52LVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jPTIxMzY9c3RhdGljIHZvaWQgZmJuaWNfcmVzZXRfbmV0aWZfbmFwaShzdHJ1Y3QgZmJuaWNfbmFwaV92ZWN0b3IgKm52KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0My1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYzoyMTQ0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG52LVxcdTAwM2VuYXBpLmRldiwgcXQtXFx1MDAzZXN1YjAucV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmMtMjE0NS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTEtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE1MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VjbXBsLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNTMtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0zMjE9c3RhdGljIHZvaWQgcnRhc2VfdHhfZGVzY19pbml0KHN0cnVjdCBydGFzZV9wcml2YXRlICp0cCwgdTE2IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzozNTM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcmluZy1cXHUwMDNlaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtMzU0LVxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgXFx1MDAyNnJpbmctXFx1MDAzZWl2ZWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9NTkwPXN0YXRpYyB2b2lkIHJ0YXNlX3J4X2Rlc2NfaW5pdChzdHJ1Y3QgcnRhc2VfcHJpdmF0ZSAqdHAsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDctXFx0cmluZy1cXHUwMDNlaXZlYyA9IFxcdTAwMjZ0cC1cXHUwMDNlaW50X3ZlY3RvcltpZHhdO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jOjYwODpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy02MDktXFx0XFx0XFx0ICAgICByaW5nLVxcdTAwM2V0eXBlLCBcXHUwMDI2cmluZy1cXHUwMDNlaXZlYy1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xMTY2PXN0YXRpYyB2b2lkIHJ0YXNlX2Rvd24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzctXFx0XFx0XFx0XFx0XFx0IHJpbmdfZW50cnkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxMTc4OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTExNzktXFx0XFx0XFx0XFx0XFx0ICAgICByaW5nLVxcdTAwM2V0eXBlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTE3MTc9c3RhdGljIHZvaWQgcnRhc2Vfc3dfcmVzZXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzctXFx0XFx0XFx0XFx0XFx0IHJpbmdfZW50cnkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzoxNzM4OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTE3MzktXFx0XFx0XFx0XFx0XFx0ICAgICByaW5nLVxcdTAwM2V0eXBlLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYz02OTA9dm9pZCBuZXR2c2NfZGV2aWNlX3JlbW92ZShzdHJ1Y3QgaHZfZGV2aWNlICpkZXZpY2UpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzE2LVxcdFxcdGlmIChpIFxcdTAwM2MgbmRldi1cXHUwMDNlcmVhbF9udW1fcnhfcXVldWVzKSB7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxNzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzE4LVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjcxOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtNzIwLVxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9MTc3Mj1zdHJ1Y3QgbmV0dnNjX2RldmljZSAqbmV0dnNjX2RldmljZV9hZGQoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlLFxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjUtXFx0bmFwaV9lbmFibGUoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4MjY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjctXFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTgyODpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTgyOS1cXHRcXHRcXHQgICAgIFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4NzAtY2xlYW51cDpcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM6MTg3MTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzI6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODczLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYz0xMjIzPXN0YXRpYyB2b2lkIG5ldHZzY19zY19vcGVuKHN0cnVjdCB2bWJ1c19jaGFubmVsICpuZXdfc2MpXFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI1OS1cXHRuYXBpX2VuYWJsZShcXHUwMDI2bnZjaGFuLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI2MDpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjYxLVxcdFxcdFxcdCAgICAgXFx1MDAyNm52Y2hhbi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjI6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2My1cXHRcXHRcXHQgICAgIFxcdTAwMjZudmNoYW4tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjktXFx0XFx0bmV0ZGV2X25vdGljZShuZGV2LCBcXFwic3ViIGNoYW5uZWwgb3BlbiBmYWlsZWQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjcwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNzEtXFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjczLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM9NDg4PXN0YXRpYyB2b2lkIG5zaW1fZW5hYmxlX25hcGkoc3RydWN0IG5ldGRldnNpbSAqbnMpXFxuLS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDk1LVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo0OTY6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtNDk3LVxcdFxcdG5hcGlfZW5hYmxlX2xvY2tlZChcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgwMT1uc2ltX3F1ZXVlX3N0YXJ0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHN0cnVjdCBuZXRkZXZfcXVldWVfY29uZmlnICpxY2ZnLFxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTgyOC1cXHRucy1cXHUwMDNlcnFbaWR4XSA9IHFtZW0tXFx1MDAzZXJxO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYzo4Mjk6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoZGV2LCBpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MzAtXFx0XFx0XFx0ICAgICBcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTgzNj1zdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg0Mi1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODQzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTg0NC1cXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFxcdTAwMjZucy1cXHUwMDNlcnFbaWR4XS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MjgxNT1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZW5hYmxlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIwLVxcdHZpcnRuZXRfbmFwaV9kb19lbmFibGUocnEtXFx1MDAzZXZxLCBcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODIxOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2cnEtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODIyLX1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODI0PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV90eF9lbmFibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDEtXFx0dmlydG5ldF9uYXBpX2RvX2VuYWJsZShzcS1cXHUwMDNldnEsIG5hcGkpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODQyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg0My19XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg0NT1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfdHhfZGlzYWJsZShzdHJ1Y3Qgc2VuZF9xdWV1ZSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1MS1cXHRpZiAobmFwaS1cXHUwMDNld2VpZ2h0KSB7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjI4NTI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodmktXFx1MDAzZWRldiwgcWlkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODUzLVxcdFxcdG5hcGlfZGlzYWJsZShuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0yODU3PXN0YXRpYyB2b2lkIHZpcnRuZXRfbmFwaV9kaXNhYmxlKHN0cnVjdCByZWNlaXZlX3F1ZXVlICpycSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODYyLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODYzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg2NC1cXHRuYXBpX2Rpc2FibGUobmFwaSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oPTI4Mjc9c3RhdGljIGlubGluZSBzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2X2Zyb21fcHJpdihjb25zdCB2b2lkICpwcml2KVxcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yODQyLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmg6Mjg0Mzp2b2lkIG5ldGlmX3F1ZXVlX3NldF9uYXBpKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsIHVuc2lnbmVkIGludCBxdWV1ZV9pbmRleCxcXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oLTI4NDQtXFx0XFx0XFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsXFxuLS1cXG5uZXQvY29yZS9kZXYuYz03Mjg1PUVYUE9SVF9TWU1CT0wobmV0aWZfdGhyZWFkZWRfZW5hYmxlKTtcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTcyODctLyoqXFxubmV0L2NvcmUvZGV2LmM6NzI4ODogKiBuZXRpZl9xdWV1ZV9zZXRfbmFwaSAtIEFzc29jaWF0ZSBxdWV1ZSB3aXRoIHRoZSBuYXBpXFxubmV0L2NvcmUvZGV2LmMtNzI4OS0gKiBAZGV2OiBkZXZpY2UgdG8gd2hpY2ggTkFQSSBhbmQgcXVldWUgYmVsb25nXFxuLS1cXG5uZXQvY29yZS9kZXYuYy03Mjk3LSAqL1xcbm5ldC9jb3JlL2Rldi5jOjcyOTg6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXFxubmV0L2NvcmUvZGV2LmMtNzI5OS1cXHRcXHRcXHQgIGVudW0gbmV0ZGV2X3F1ZXVlX3R5cGUgdHlwZSwgc3RydWN0IG5hcGlfc3RydWN0ICpuYXBpKVxcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzMyMC19XFxubmV0L2NvcmUvZGV2LmM6NzMyMTpFWFBPUlRfU1lNQk9MKG5ldGlmX3F1ZXVlX3NldF9uYXBpKTtcXG5uZXQvY29yZS9kZXYuYy03MzIyLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOTowNy41NzM1ODY2MDhaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzkyMzQ5MTYzNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBmb3IgRnV6emluZyBPcHBvcnR1bml0aWVzKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBtYWtpbmcgc29tZSBmdW5jdGlvbmFsIGNoYW5nZXMsIHNwZWNpZmljYWxseSBhZGRpbmcgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCBjYWxscy4gVGhpcyBpcyBpbnRlcmVzdGluZyBiZWNhdXNlIGl0J3MgaGFwcGVuaW5nIHdpdGhpbiB0aGUgYG5ldGRldnNpbWAgZHJpdmVyLCB3aGljaCBpcyBhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZHJpdmVyLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIHRoaXMgYXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nIGVmZm9ydHMuIEkgc2VlIHRoZSBtYWluIGZ1bmN0aW9ucyBhZmZlY3RlZCBhcmUgYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYC5cblxuR2l2ZW4gdGhhdCwgSSdtIGdvaW5nIHRvIHNldCBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIEFuZCBJIG5lZWQgdG8gZGVmaW5lIHRoZSBmdXp6aW5nIHRhcmdldHMsIHNvIEknbGwgc2V0IGBGb2N1c1N5bWJvbHNgIHRvIGBbXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsIFwibnNpbV9xdWV1ZV9zdG9wXCJdYC4gT2YgY291cnNlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQsIHNvIEknbGwgYWxzbyBhZGQgYEVuYWJsZUNvbmZpZ3M9W1wiTkVUREVWU0lNXCJdYC5cblxuV2FpdCBhIHNlY29uZOKApiBJIG5lZWQgdG8gY2hlY2sgc29tZXRoaW5nLiBBcmUgdGhvc2UgZnVuY3Rpb25zIGlubGluZWQ/IEkgcXVpY2tseSByZW1lbWJlciBgbnNpbV9xdWV1ZV9zdGFydGAgYW5kIGBuc2ltX3F1ZXVlX3N0b3BgIGFyZSBzdGF0aWMgZnVuY3Rpb25zLiBUaGV5IG1pZ2h0IGJlIGlubGluZWQuIEFoLCBuby4gVGhleSdyZSBwYXJ0IG9mIGEgc3RydWN0IG9mIGZ1bmN0aW9uIHBvaW50ZXJzLiBUaGF0J3MgZ29vZC4gVGhleSBhcmUgYXNzaWduZWQgdG8gYSBzdHJ1Y3Q6XG5cbmBgYGNcbnN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX21nbXRfb3BzIG5zaW1fcXVldWVfbWdtdF9vcHMgPSB7XG5cdC5uZG9fcXVldWVfbWVtX3NpemVcdD0gbnNpbV9xdWV1ZV9tZW1fc2l6ZSxcblx0Lm5kb19xdWV1ZV9tZW1fYWxsb2NcdD0gbnNpbV9xdWV1ZV9tZW1fYWxsb2MsXG5cdC5uZG9fcXVldWVfbWVtX2ZyZWVcdD0gbnNpbV9xdWV1ZV9tZW1fZnJlZSxcblx0Lm5kb19xdWV1ZV9zdGFydFx0PSBuc2ltX3F1ZXVlX3N0YXJ0LFxuXHQubmRvX3F1ZXVlX3N0b3BcdFx0PSBuc2ltX3F1ZXVlX3N0b3AsXG59O1xuYGBgXG5cblNvIHRoZXkncmUgbm90IGlubGluZWQuIFRoYXQncyB1c2VmdWwgaW5mb3JtYXRpb24uIFNvIEkgY2FuIGJlIGNvbmZpZGVudCBpbiB0aG9zZSBmb2N1cyBzeW1ib2xzLlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8gYWRkIHRoYXQgaW5mb3JtYXRpb24gdG8gYEZvY3VzU3ltYm9sc2AuIFRoZW4gSSB3aWxsIGNhbGwgYHNldC1yZXN1bHRzYCB3aXRoIHRoZXNlIHZhbHVlcyB0byBlbnN1cmUgdGhlIGZ1enplciB0YXJnZXRzIHRoZXNlIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTc5ODEsIk91dHB1dFRva2VucyI6MTEyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjE1LjQ5NzA4MDk4MloiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4MTYzNTUyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRERVZTSU1cIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuc2ltX3F1ZXVlX3N0YXJ0XCIsXG4gICAgXCJuc2ltX3F1ZXVlX3N0b3BcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZGV2c2ltIGRyaXZlciAoYSBzb2Z0d2FyZS1lbXVsYXRlZCBuZXR3b3JrIGRldmljZSB1c2VkIGZvciB0ZXN0aW5nIGFuZCBmdXp6aW5nKSB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBOQVBJIHdpdGggUlggcXVldWVzIGR1cmluZyBxdWV1ZSBzdGFydCBhbmQgc3RvcCBvcGVyYXRpb25zLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIHRoYXQgaXMgaGlnaGx5IHJlbGV2YW50IGZvciBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVERFVlNJTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5zaW1fcXVldWVfc3RhcnRcIixcbiAgICBcIm5zaW1fcXVldWVfc3RvcFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRkZXZzaW0gZHJpdmVyIChhIHNvZnR3YXJlLWVtdWxhdGVkIG5ldHdvcmsgZGV2aWNlIHVzZWQgZm9yIHRlc3RpbmcgYW5kIGZ1enppbmcpIHRvIGFzc29jaWF0ZSBhbmQgZGlzYXNzb2NpYXRlIE5BUEkgd2l0aCBSWCBxdWV1ZXMgZHVyaW5nIHF1ZXVlIHN0YXJ0IGFuZCBzdG9wIG9wZXJhdGlvbnMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgdGhhdCBpcyBoaWdobHkgcmVsZXZhbnQgZm9yIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjE1LjU3NTI1MzUyNFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMyMDEzMjg4NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOToxNS41NzYwMTIxOTRaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MTMyMDA1NjQ2NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNpbXBseSBhZGRzIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgdG8gYXNzb2NpYXRlIGFuZCBkaXNhc3NvY2lhdGUgYSBOQVBJIGNvbnRleHQgd2l0aCBhIG5ldHdvcmsgZGV2aWNlIHF1ZXVlIGluIHRoZSBuZXRkZXZzaW0gZHJpdmVyLiBUaGlzIGlzIGEgc3RhbmRhcmQgbmV0d29ya2luZyBBUEkgdGhhdCBzZXRzIGEgcG9pbnRlciBpbiB0aGUgcXVldWUgc3RydWN0dXJlLiBJdCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlLCBkb2VzIG5vdCBpbnZvbHZlIGNvbXBsZXggbWVtb3J5IGFsbG9jYXRpb25zLCBhbmQgZG9lcyBub3QgYWx0ZXIgY29udHJvbCBmbG93IGJhc2VkIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbnkgcG90ZW50aWFsIGJ1Z3MgcmVsYXRlZCB0byB0aGlzIGNoYW5nZSB3b3VsZCBsaWtlbHkgYmUgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWVzLCBvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB3aGljaCBhcmUgYWxyZWFkeSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgc3RhbmRhcmQgS0FTQU4gYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMuIFRoZXJlIGlzIG5vIHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcyB0aGF0IHdvdWxkIHJlcXVpcmUgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDVhNzIxNDYwZmM1ZmMyNjhhNzk0NTk1MGZiZGYzODlmMGM1OTI0N2RcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToyODozMCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYyBiL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuaW5kZXggNGU5ZDdlMTBiNTI3ZS4uYzE4ZjlmNTQwMDg0YSAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY1xuKysrIGIvZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jXG5AQCAtODI2LDYgKzgyNiw4IEBAIG5zaW1fcXVldWVfc3RhcnQoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgc3RydWN0IG5ldGRldl9xdWV1ZV9jb25maWcgKnFjZmcsXG4gXHR9XG4gXG4gXHRucy1cdTAwM2VycVtpZHhdID0gcW1lbS1cdTAwM2VycTtcbitcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcbitcdFx0XHQgICAgIFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXHRuYXBpX2VuYWJsZV9sb2NrZWQoXHUwMDI2bnMtXHUwMDNlcnFbaWR4XS1cdTAwM2VuYXBpKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTgzOCw2ICs4NDAsNyBAQCBzdGF0aWMgaW50IG5zaW1fcXVldWVfc3RvcChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB2b2lkICpwZXJfcXVldWVfbWVtLCBpbnQgaWR4KVxuIFxuIFx0bmV0ZGV2X2Fzc2VydF9sb2NrZWQoZGV2KTtcbiBcbitcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XG4gXHRuYXBpX2Rpc2FibGVfbG9ja2VkKFx1MDAyNm5zLVx1MDAzZXJxW2lkeF0tXHUwMDNlbmFwaSk7XG4gXG4gXHRpZiAobnMtXHUwMDNlcnFfcmVzZXRfbW9kZSA9PSAxKSB7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyOToxNS41NzYwMTI5OTRaIiwiU2VxIjoyMSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTgyNDM2NTY1MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldGRldnNpbSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYGRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuY2AuIEkgc2VlIGl0J3MgYWRkaW5nIGNhbGxzIHRvIGBuZXRpZl9xdWV1ZV9zZXRfbmFwaWAgd2l0aGluIGBuc2ltX3F1ZXVlX3N0YXJ0YCBhbmQgYG5zaW1fcXVldWVfc3RvcGAuIEVzc2VudGlhbGx5LCB0aGlzIGxvb2tzIGxpa2UgdGhlIGNvZGUgaXMgc2V0dGluZyB1cCBhbmQgdGVhcmluZyBkb3duIE5ldHdvcmsgQVBJIChOQVBJKSBhc3NvY2lhdGlvbnMgZm9yIG5ldHdvcmsgZGV2aWNlIHF1ZXVlcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNzZXNzIHBvdGVudGlhbCByaXNrcywgc3BlY2lmaWNhbGx5IGFyb3VuZCB1bmluaXRpYWxpemVkIG1lbW9yeSwgd2hpY2ggaXMgYWx3YXlzIGEgcmVkIGZsYWcuXG5cbkdpdmVuIG15IHVuZGVyc3RhbmRpbmcgb2YgTkFQSSBhbmQgZGV2aWNlIGRyaXZlciBpbnRlcm5hbHMsIGFzc29jaWF0aW5nIGEgTkFQSSBjb250ZXh0IHdpdGggYSBxdWV1ZSB1c2luZyBgbmV0aWZfcXVldWVfc2V0X25hcGlgIGRvZXNuJ3QgaW1tZWRpYXRlbHkgc3VnZ2VzdCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMuIEl0J3MgbW9zdCBsaWtlbHkgYSBwb2ludGVyIGFzc2lnbm1lbnQgb3Igc2ltaWxhciBvcGVyYXRpb24gd2l0aGluIHRoZSBrZXJuZWwncyBuZXR3b3JraW5nIGNvcmUuIEhvd2V2ZXIsIEkgY2FuJ3QgYmUgKmNvbXBsZXRlbHkqIGNlcnRhaW4gd2l0aG91dCBhIGNsb3NlciBsb29rLlxuXG5KdXN0IHRvIGJlIHNhZmUsIEkgc2hvdWxkIHZlcmlmeSB0aGUgaW1wbGVtZW50YXRpb24gb2YgYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhYnNvbHV0ZWx5IGNvbmZpcm0gdGhhdCBteSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdC4gSXQncyBwcm9iYWJseSBqdXN0IGEgbWVtb3J5IHBvaW50ZXIsIGJ1dCBpdCBpcyBiZXR0ZXIgdG8gYmUgc2FmZSB0aGFuIHNvcnJ5LiBMZXQncyBjYWxsIHVwIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBleGFtaW5lIHRoZSBmdW5jdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjEzMSwiT3V0cHV0VG9rZW5zIjoyMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0NiwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjIxLjQwMDM4MTk2N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1NzIyMDY4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZXRpZl9xdWV1ZV9zZXRfbmFwaVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODA2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2Rpc2FibGVfaW5fcmFuZ2Uoc3RydWN0IGVuYV9hZGFwdGVyICphZGFwdGVyLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTgxNi1cXHRcXHRcXHQvKiBUaGlzIEFQSSBpcyBzdXBwb3J0ZWQgZm9yIG5vbi1YRFAgcXVldWVzIG9ubHkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYzoxODE3OlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgaSxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODE4LVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MjAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYz0xODI2PXN0YXRpYyB2b2lkIGVuYV9uYXBpX2VuYWJsZV9pbl9yYW5nZShzdHJ1Y3QgZW5hX2FkYXB0ZXIgKmFkYXB0ZXIsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hbWF6b24vZW5hL2VuYV9uZXRkZXYuYy0xODM3LVxcdFxcdFxcdC8qIFRoaXMgQVBJIGlzIHN1cHBvcnRlZCBmb3Igbm9uLVhEUCBxdWV1ZXMgb25seSAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jOjE4Mzg6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBpLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FtYXpvbi9lbmEvZW5hX25ldGRldi5jLTE4MzktXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmM6MTg0MDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsIGksXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYW1hem9uL2VuYS9lbmFfbmV0ZGV2LmMtMTg0MS1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYz0xNjU5PXN0YXRpYyB2b2lkIGJuZ2VfaW5pdF9vbmVfcnhfcmluZ19wYWlyKHN0cnVjdCBibmdlX25ldCAqYm4sIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjE2NjY6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgcmluZ19uciwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTE2NjctXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmM9MTcwMT1zdGF0aWMgdm9pZCBibmdlX2luaXRfdHhfcmluZ3Moc3RydWN0IGJuZ2VfbmV0ICpibilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzEyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoxNzEzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0xNzE0LVxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnR4ci1cXHUwMDNlYm5hcGktXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jPTI3MjU9c3RhdGljIHZvaWQgYm5nZV9kZWxfbmFwaShzdHJ1Y3QgYm5nZV9uZXQgKmJuKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jLTI3MzAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJkLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYzoyNzMxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJuLVxcdTAwM2VuZXRkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibmdlL2JuZ2VfbmV0ZGV2LmMtMjczMi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYmQtXFx1MDAzZXR4X25yX3JpbmdzOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm5nZS9ibmdlX25ldGRldi5jOjI3MzM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYm4tXFx1MDAzZW5ldGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JuZ2UvYm5nZV9uZXRkZXYuYy0yNzM0LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmM9NDYyOD1zdGF0aWMgaW50IGJueHRfaW5pdF9vbmVfcnhfcmluZyhzdHJ1Y3QgYm54dCAqYnAsIGludCByaW5nX25yKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtNDYzNC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NjM1OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIHJpbmdfbnIsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ2MzYtXFx0XFx0XFx0ICAgICBcXHUwMDI2cnhyLVxcdTAwM2VibmFwaS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYz00NjkzPXN0YXRpYyBpbnQgYm54dF9pbml0X3R4X3JpbmdzKHN0cnVjdCBibnh0ICpicClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MDktXFx0XFx0aWYgKGkgXFx1MDAzZT0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYzo0NzEwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGkgLSBicC1cXHUwMDNldHhfbnJfcmluZ3NfeGRwLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jLTQ3MTEtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jPTExOTczPXN0YXRpYyB2b2lkIGJueHRfZGVsX25hcGkoc3RydWN0IGJueHQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYm54dC9ibnh0LmMtMTE5ODAtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGJwLVxcdTAwM2VyeF9ucl9yaW5nczsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgxOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4Mi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYnAtXFx1MDAzZXR4X25yX3JpbmdzIC0gYnAtXFx1MDAzZXR4X25yX3JpbmdzX3hkcDsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JueHQvYm54dC5jOjExOTgzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGJwLVxcdTAwM2VkZXYsIGksIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9ibnh0L2JueHQuYy0xMTk4NC1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jPTczOTQ9c3RhdGljIHZvaWQgdGczX25hcGlfZGlzYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDMtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwNDpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MDUtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYy03NDA4LVxcdFxcdGlmICh0bmFwaS1cXHUwMDNlcnhfcmNiKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQwOTpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByeHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MTAtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYz03NDE3PXN0YXRpYyB2b2lkIHRnM19uYXBpX2VuYWJsZShzdHJ1Y3QgdGczICp0cClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjYtXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2V0eF9idWZmZXJzKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmM6NzQyNzpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCB0eHFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MjgtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL3RnMy5jLTc0MzItXFx0XFx0aWYgKHRuYXBpLVxcdTAwM2VyeF9yY2IpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS90ZzMuYzo3NDMzOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJ4cV9pZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vdGczLmMtNzQzNC1cXHRcXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jPTE5NzQ9c3RhdGljIHZvaWQgdHNuZXBfcXVldWVfZW5hYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4Mi1cXHRpZiAocXVldWUtXFx1MDAzZXR4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNldHgtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTg0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk4OC1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZW5nbGVkZXIvdHNuZXBfbWFpbi5jOjE5ODk6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LCBxdWV1ZS1cXHUwMDNlcngtXFx1MDAzZXF1ZXVlX2luZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0xOTkwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZxdWV1ZS1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmM9MTk5NT1zdGF0aWMgdm9pZCB0c25lcF9xdWV1ZV9kaXNhYmxlKHN0cnVjdCB0c25lcF9xdWV1ZSAqcXVldWUpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMTk5OS1cXHRpZiAocXVldWUtXFx1MDAzZXJ4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDAwOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXJ4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwMS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYy0yMDA0LVxcdFxcdHRzbmVwX3R4X2Rpc2FibGUocXVldWUtXFx1MDAzZXR4LCBcXHUwMDI2cXVldWUtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2VuZ2xlZGVyL3RzbmVwX21haW4uYzoyMDA1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldiwgcXVldWUtXFx1MDAzZXR4LVxcdTAwM2VxdWV1ZV9pbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9lbmdsZWRlci90c25lcF9tYWluLmMtMjAwNi1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTI0PXN0YXRpYyB2b2lkIGd2ZV90dXJuZG93bihzdHJ1Y3QgZ3ZlX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk0Mi1cXHRcXHRpZiAoaWR4IFxcdTAwM2MgcHJpdi1cXHUwMDNldHhfY2ZnLm51bV9xdWV1ZXMpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jOjE5NDM6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkocHJpdi1cXHUwMDNlZGV2LCBpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NDQtXFx0XFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMTk1NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MTk1NTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5NTYtXFx0XFx0XFx0XFx0ICAgICBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYz0xOTcyPXN0YXRpYyB2b2lkIGd2ZV90dXJudXAoc3RydWN0IGd2ZV9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTE5ODktXFx0XFx0aWYgKGlkeCBcXHUwMDNjIHByaXYtXFx1MDAzZXR4X2NmZy5udW1fcXVldWVzKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYzoxOTkwOlxcdFxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHByaXYtXFx1MDAzZWRldiwgaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2dvb2dsZS9ndmUvZ3ZlX21haW4uYy0xOTkxLVxcdFxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmMtMjAxNS1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNmJsb2NrLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9nb29nbGUvZ3ZlL2d2ZV9tYWluLmM6MjAxNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShwcml2LVxcdTAwM2VkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZ29vZ2xlL2d2ZS9ndmVfbWFpbi5jLTIwMTctXFx0XFx0XFx0XFx0ICAgICBcXHUwMDI2YmxvY2stXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM9MTk4PWludCBoaW5pYzNfcXBzX2lycV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmM6MjM0OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGlycV9jZmctXFx1MDAzZW5ldGRldiwgcV9pZCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYy0yMzUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmlycV9jZmctXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjIzNjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjM3LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZpcnFfY2ZnLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Mi1cXHRcXHRxcF9kZWxfbmFwaShpcnFfY2ZnKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1NC1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9odWF3ZWkvaGluaWMzL2hpbmljM19pcnEuYzoyNTU6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoaXJxX2NmZy1cXHUwMDNlbmV0ZGV2LCBxX2lkLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jLTI1Ni1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jPTI3MD12b2lkIGhpbmljM19xcHNfaXJxX3VuaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjc4LVxcdFxcdHFwX2RlbF9uYXBpKGlycV9jZmcpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI3OTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgwLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2h1YXdlaS9oaW5pYzMvaGluaWMzX2lycS5jOjI4MTpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShpcnFfY2ZnLVxcdTAwM2VuZXRkZXYsIHFfaWQsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaHVhd2VpL2hpbmljMy9oaW5pYzNfaXJxLmMtMjgyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jPTQ4MT12b2lkIGUxMDAwX2Rvd24oc3RydWN0IGUxMDAwX2FkYXB0ZXIgKmFkYXB0ZXIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzo1MTE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jOjUxMjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmMtNTEzLVxcdG5hcGlfZGlzYWJsZShcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM9MTM1Mj1pbnQgZTEwMDBfb3BlbihzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTEzOTctXFx0bmFwaV9lbmFibGUoXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwL2UxMDAwX21haW4uYzoxMzk4OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMC9lMTAwMF9tYWluLmM6MTM5OTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDAvZTEwMDBfbWFpbi5jLTE0MDAtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM9NDYzNj1pbnQgZTEwMDBlX29wZW4oc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzEyLVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9lMTAwMGUvbmV0ZGV2LmM6NDcxMzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2YWRhcHRlci1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3MTQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgXFx1MDAyNmFkYXB0ZXItXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2UxMDAwZS9uZXRkZXYuYy00NzE1LVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jPTQ3NTI9aW50IGUxMDAwZV9jbG9zZShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzM6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jOjQ3NzQ6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCAwLCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvZTEwMDBlL25ldGRldi5jLTQ3NzUtXFx0bmFwaV9kaXNhYmxlKFxcdTAwMjZhZGFwdGVyLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM9Mjc4Mz12b2lkIGljZV92c2lfc2V0X25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTMtXFx0XFx0aWYgKHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTQ6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yNzk1LVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNlcnhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI3OTgtXFx0XFx0aWYgKHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdIFxcdTAwMjZcXHUwMDI2IHZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3RvcilcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jOjI3OTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmV0ZGV2LCBxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODAwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNnZzaS1cXHUwMDNldHhfcmluZ3NbcV9pZHhdLVxcdTAwM2VxX3ZlY3Rvci1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jPTI4MTU9dm9pZCBpY2VfdnNpX2NsZWFyX25hcGlfcXVldWVzKHN0cnVjdCBpY2VfdnNpICp2c2kpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzEtXFx0aWNlX2Zvcl9lYWNoX3R4cSh2c2ksIHFfaWR4KVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmM6MjgzMjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZXRkZXYsIHFfaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYy0yODMzLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2ljZS9pY2VfbGliLmMtMjgzNC1cXHRpY2VfZm9yX2VhY2hfcnhxKHZzaSwgcV9pZHgpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWNlL2ljZV9saWIuYzoyODM1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5ldGRldiwgcV9pZHgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pY2UvaWNlX2xpYi5jLTI4MzYtfVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYz0zODM4PXN0YXRpYyB2b2lkIGlkcGZfcV92ZWN0b3Jfc2V0X25hcGkoc3RydWN0IGlkcGZfcV92ZWN0b3IgKnFfdmVjdG9yLCBib29sIGxpbmspXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZHBmL2lkcGZfdHhyeC5jLTM4NDMtXFx0Zm9yICh1MzIgaSA9IDA7IGkgXFx1MDAzYyBxX3ZlY3Rvci1cXHUwMDNlbnVtX3J4cTsgaSsrKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmM6Mzg0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIHFfdmVjdG9yLVxcdTAwM2VyeFtpXS1cXHUwMDNlaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0NS1cXHRcXHRcXHRcXHQgICAgIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lkcGYvaWRwZl90eHJ4LmMtMzg0Ny1cXHRmb3IgKHUzMiBpID0gMDsgaSBcXHUwMDNjIHFfdmVjdG9yLVxcdTAwM2VudW1fdHhxOyBpKyspXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYzozODQ4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgcV92ZWN0b3ItXFx1MDAzZXR4W2ldLVxcdTAwM2VpZHgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWRwZi9pZHBmX3R4cnguYy0zODQ5LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIG5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM9MjEwMj12b2lkIGlnYl9zZXRfcXVldWVfbmFwaShzdHJ1Y3QgaWdiX2FkYXB0ZXIgKmFkYXB0ZXIsIGludCB2ZWN0b3IsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA3LVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNlcngucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYzoyMTA4OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2IvaWdiX21haW4uYy0yMTA5LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXJ4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExMi1cXHRpZiAocV92ZWN0b3ItXFx1MDAzZXR4LnJpbmcpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmM6MjExMzpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShhZGFwdGVyLVxcdTAwM2VuZXRkZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaW50ZWwvaWdiL2lnYl9tYWluLmMtMjExNC1cXHRcXHRcXHRcXHQgICAgIHFfdmVjdG9yLVxcdTAwM2V0eC5yaW5nLVxcdTAwM2VxdWV1ZV9pbmRleCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jPTUwOTI9c3RhdGljIHZvaWQgaWdjX3NldF9xdWV1ZV9uYXBpKHN0cnVjdCBpZ2NfYWRhcHRlciAqYWRhcHRlciwgaW50IHZlY3RvcixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTctXFx0aWYgKHFfdmVjdG9yLVxcdTAwM2VyeC5yaW5nKVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jOjUwOTg6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkoYWRhcHRlci1cXHUwMDNlbmV0ZGV2LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ludGVsL2lnYy9pZ2NfbWFpbi5jLTUwOTktXFx0XFx0XFx0XFx0ICAgICBxX3ZlY3Rvci1cXHUwMDNlcngucmluZy1cXHUwMDNlcXVldWVfaW5kZXgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTAyLVxcdGlmIChxX3ZlY3Rvci1cXHUwMDNldHgucmluZylcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYzo1MTAzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGFkYXB0ZXItXFx1MDAzZW5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pbnRlbC9pZ2MvaWdjX21haW4uYy01MTA0LVxcdFxcdFxcdFxcdCAgICAgcV92ZWN0b3ItXFx1MDAzZXR4LnJpbmctXFx1MDAzZXF1ZXVlX2luZGV4LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jPTg5PWludCBtbHg0X2VuX2FjdGl2YXRlX2NxKHN0cnVjdCBtbHg0X2VuX3ByaXYgKnByaXYsIHN0cnVjdCBtbHg0X2VuX2NxICpjcSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNTQtXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTU1OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE1Ni1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYy0xNjItXFx0XFx0bmFwaV9lbmFibGUoXFx1MDAyNmNxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MTYzOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxX2lkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZjcS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTE2NC1cXHRcXHRicmVhaztcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDQvZW5fY3EuYz0xOTY9dm9pZCBtbHg0X2VuX2RlYWN0aXZhdGVfY3Eoc3RydWN0IG1seDRfZW5fcHJpdiAqcHJpdiwgc3RydWN0IG1seDRfZW5fY3EgKmNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NC9lbl9jcS5jLTIwNS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmM6MjA2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGNxLVxcdTAwM2VkZXYsIGNxLVxcdTAwM2VjcV9pZHgsIHF0eXBlLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg0L2VuX2NxLmMtMjA3LVxcdFxcdG5hcGlfZGlzYWJsZShcXHUwMDI2Y3EtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTkzOT12b2lkIG1seDVlX3B0cF9hY3RpdmF0ZV9jaGFubmVsKHN0cnVjdCBtbHg1ZV9wdHAgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW4vcHRwLmMtOTUxLVxcdFxcdG1seDVlX2FjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk1MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNmMtXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NTMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jPTk1Nz12b2lkIG1seDVlX3B0cF9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX3B0cCAqYylcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbi9wdHAuYy05NjEtXFx0aWYgKHRlc3RfYml0KE1MWDVFX1BUUF9TVEFURV9SWCwgYy1cXHUwMDNlc3RhdGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jOjk2MjpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShjLVxcdTAwM2VuZXRkZXYsIGMtXFx1MDAzZXJxLml4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuL3B0cC5jLTk2My1cXHRcXHRtbHg1ZV9kZWFjdGl2YXRlX3JxKFxcdTAwMjZjLVxcdTAwM2VycSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5Mzk9dm9pZCBtbHg1ZV9hY3RpdmF0ZV90eHFzcShzdHJ1Y3QgbWx4NWVfdHhxc3EgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0xOTQ2LVxcdG5ldGlmX3R4X3N0YXJ0X3F1ZXVlKHNxLVxcdTAwM2V0eHEpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM6MTk0NzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShzcS1cXHUwMDNlbmV0ZGV2LCBzcS1cXHUwMDNldHhxX2l4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgc3EtXFx1MDAzZWNxLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmMtMTk0OC19XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jPTE5NTc9dm9pZCBtbHg1ZV9kZWFjdGl2YXRlX3R4cXNxKHN0cnVjdCBtbHg1ZV90eHFzcSAqc3EpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoxOTYxOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHNxLVxcdTAwM2VuZXRkZXYsIHNxLVxcdTAwM2V0eHFfaXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTE5NjItXFx0Y2xlYXJfYml0KE1MWDVFX1NRX1NUQVRFX0VOQUJMRUQsIFxcdTAwMjZzcS1cXHUwMDNlc3RhdGUpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYz0yOTE5PXN0YXRpYyB2b2lkIG1seDVlX2FjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5MzUtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTM2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBcXHUwMDI2Yy1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYy0yOTM3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21lbGxhbm94L21seDUvY29yZS9lbl9tYWluLmM9MjkzOT1zdGF0aWMgdm9pZCBtbHg1ZV9kZWFjdGl2YXRlX2NoYW5uZWwoc3RydWN0IG1seDVlX2NoYW5uZWwgKmMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWVsbGFub3gvbWx4NS9jb3JlL2VuX21haW4uYzoyOTQzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGMtXFx1MDAzZW5ldGRldiwgYy1cXHUwMDNlaXgsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZWxsYW5veC9tbHg1L2NvcmUvZW5fbWFpbi5jLTI5NDQtXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTE1PXN0YXRpYyB2b2lkIGZibmljX3NldF9uZXRpZl9uYXBpKHN0cnVjdCBmYm5pY19uYXBpX3ZlY3RvciAqbnYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTIyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMjM6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlc3ViMC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTI0LVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfVFgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMwLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxMzE6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTMyLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZudi1cXHUwMDNlbmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYz0yMTM2PXN0YXRpYyB2b2lkIGZibmljX3Jlc2V0X25ldGlmX25hcGkoc3RydWN0IGZibmljX25hcGlfdmVjdG9yICpudilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDMtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbWV0YS9mYm5pYy9mYm5pY190eHJ4LmM6MjE0NDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShudi1cXHUwMDNlbmFwaS5kZXYsIHF0LVxcdTAwM2VzdWIwLnFfaWR4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jLTIxNDUtXFx0XFx0XFx0XFx0ICAgICBORVRERVZfUVVFVUVfVFlQRV9UWCwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUxLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L21ldGEvZmJuaWMvZmJuaWNfdHhyeC5jOjIxNTI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobnYtXFx1MDAzZW5hcGkuZGV2LCBxdC1cXHUwMDNlY21wbC5xX2lkeCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9tZXRhL2ZibmljL2ZibmljX3R4cnguYy0yMTUzLVxcdFxcdFxcdFxcdCAgICAgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MzIxPXN0YXRpYyB2b2lkIHJ0YXNlX3R4X2Rlc2NfaW5pdChzdHJ1Y3QgcnRhc2VfcHJpdmF0ZSAqdHAsIHUxNiBpZHgpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0zNTItXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MzUzOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHRwLVxcdTAwM2VkZXYsIHJpbmctXFx1MDAzZWluZGV4LFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jLTM1NC1cXHRcXHRcXHQgICAgIHJpbmctXFx1MDAzZXR5cGUsIFxcdTAwMjZyaW5nLVxcdTAwM2VpdmVjLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlYWx0ZWsvcnRhc2UvcnRhc2VfbWFpbi5jPTU5MD1zdGF0aWMgdm9pZCBydGFzZV9yeF9kZXNjX2luaXQoc3RydWN0IHJ0YXNlX3ByaXZhdGUgKnRwLCB1MTYgaWR4KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA3LVxcdHJpbmctXFx1MDAzZWl2ZWMgPSBcXHUwMDI2dHAtXFx1MDAzZWludF92ZWN0b3JbaWR4XTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYzo2MDg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkodHAtXFx1MDAzZWRldiwgcmluZy1cXHUwMDNlaW5kZXgsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmMtNjA5LVxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgXFx1MDAyNnJpbmctXFx1MDAzZWl2ZWMtXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM9MTE2Nj1zdGF0aWMgdm9pZCBydGFzZV9kb3duKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTE3ODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xMTc5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYz0xNzE3PXN0YXRpYyB2b2lkIHJ0YXNlX3N3X3Jlc2V0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM3LVxcdFxcdFxcdFxcdFxcdCByaW5nX2VudHJ5KSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVhbHRlay9ydGFzZS9ydGFzZV9tYWluLmM6MTczODpcXHRcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh0cC1cXHUwMDNlZGV2LCByaW5nLVxcdTAwM2VpbmRleCxcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZWFsdGVrL3J0YXNlL3J0YXNlX21haW4uYy0xNzM5LVxcdFxcdFxcdFxcdFxcdCAgICAgcmluZy1cXHUwMDNldHlwZSwgTlVMTCk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmM9NjkwPXZvaWQgbmV0dnNjX2RldmljZV9yZW1vdmUoc3RydWN0IGh2X2RldmljZSAqZGV2aWNlKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxNi1cXHRcXHRpZiAoaSBcXHUwMDNjIG5kZXYtXFx1MDAzZXJlYWxfbnVtX3J4X3F1ZXVlcykge1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTc6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcxOC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzo3MTk6XFx0XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTcyMC1cXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jPTE3NzI9c3RydWN0IG5ldHZzY19kZXZpY2UgKm5ldHZzY19kZXZpY2VfYWRkKHN0cnVjdCBodl9kZXZpY2UgKmRldmljZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI1LVxcdG5hcGlfZW5hYmxlKFxcdTAwMjZuZXRfZGV2aWNlLVxcdTAwM2VjaGFuX3RhYmxlWzBdLm5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODI2OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODI3LVxcdFxcdFxcdCAgICAgXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4Mjg6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jLTE4MjktXFx0XFx0XFx0ICAgICBcXHUwMDI2bmV0X2RldmljZS1cXHUwMDNlY2hhbl90YWJsZVswXS5uYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYy0xODcwLWNsZWFudXA6XFxuZHJpdmVycy9uZXQvaHlwZXJ2L25ldHZzYy5jOjE4NzE6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgMCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9uZXR2c2MuYzoxODcyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIDAsIE5FVERFVl9RVUVVRV9UWVBFX1JYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvbmV0dnNjLmMtMTg3My1cXHRuYXBpX2Rpc2FibGUoXFx1MDAyNm5ldF9kZXZpY2UtXFx1MDAzZWNoYW5fdGFibGVbMF0ubmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM9MTIyMz1zdGF0aWMgdm9pZCBuZXR2c2Nfc2Nfb3BlbihzdHJ1Y3Qgdm1idXNfY2hhbm5lbCAqbmV3X3NjKVxcbi0tXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNTktXFx0bmFwaV9lbmFibGUoXFx1MDAyNm52Y2hhbi1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNjA6XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI2MS1cXHRcXHRcXHQgICAgIFxcdTAwMjZudmNoYW4tXFx1MDAzZW5hcGkpO1xcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYzoxMjYyOlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKG5kZXYsIGNobl9pbmRleCwgTkVUREVWX1FVRVVFX1RZUEVfVFgsXFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jLTEyNjMtXFx0XFx0XFx0ICAgICBcXHUwMDI2bnZjaGFuLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjY5LVxcdFxcdG5ldGRldl9ub3RpY2UobmRldiwgXFxcInN1YiBjaGFubmVsIG9wZW4gZmFpbGVkOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmM6MTI3MDpcXHRcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShuZGV2LCBjaG5faW5kZXgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLFxcbmRyaXZlcnMvbmV0L2h5cGVydi9ybmRpc19maWx0ZXIuYy0xMjcxLVxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxuZHJpdmVycy9uZXQvaHlwZXJ2L3JuZGlzX2ZpbHRlci5jOjEyNzI6XFx0XFx0bmV0aWZfcXVldWVfc2V0X25hcGkobmRldiwgY2huX2luZGV4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9oeXBlcnYvcm5kaXNfZmlsdGVyLmMtMTI3My1cXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jPTQ4OD1zdGF0aWMgdm9pZCBuc2ltX2VuYWJsZV9uYXBpKHN0cnVjdCBuZXRkZXZzaW0gKm5zKVxcbi0tXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5NS1cXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6NDk2OlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaSwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIFxcdTAwMjZycS1cXHUwMDNlbmFwaSk7XFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jLTQ5Ny1cXHRcXHRuYXBpX2VuYWJsZV9sb2NrZWQoXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MDE9bnNpbV9xdWV1ZV9zdGFydChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgbmV0ZGV2X3F1ZXVlX2NvbmZpZyAqcWNmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04MjgtXFx0bnMtXFx1MDAzZXJxW2lkeF0gPSBxbWVtLVxcdTAwM2VycTtcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmM6ODI5OlxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKGRldiwgaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCxcXG5kcml2ZXJzL25ldC9uZXRkZXZzaW0vbmV0ZGV2LmMtODMwLVxcdFxcdFxcdCAgICAgXFx1MDAyNm5zLVxcdTAwM2VycVtpZHhdLVxcdTAwM2VuYXBpKTtcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYz04MzY9c3RhdGljIGludCBuc2ltX3F1ZXVlX3N0b3Aoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdm9pZCAqcGVyX3F1ZXVlX21lbSwgaW50IGlkeClcXG4tLVxcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NDItXFxuZHJpdmVycy9uZXQvbmV0ZGV2c2ltL25ldGRldi5jOjg0MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaShkZXYsIGlkeCwgTkVUREVWX1FVRVVFX1RZUEVfUlgsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L25ldGRldnNpbS9uZXRkZXYuYy04NDQtXFx0bmFwaV9kaXNhYmxlX2xvY2tlZChcXHUwMDI2bnMtXFx1MDAzZXJxW2lkeF0tXFx1MDAzZW5hcGkpO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4MTU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX2VuYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMC1cXHR2aXJ0bmV0X25hcGlfZG9fZW5hYmxlKHJxLVxcdTAwM2V2cSwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MjgyMTpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgXFx1MDAyNnJxLVxcdTAwM2VuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjgyMi19XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MjgyND1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfdHhfZW5hYmxlKHN0cnVjdCBzZW5kX3F1ZXVlICpzcSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0yODQxLVxcdHZpcnRuZXRfbmFwaV9kb19lbmFibGUoc3EtXFx1MDAzZXZxLCBuYXBpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg0MjpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9UWCwgbmFwaSk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NDMtfVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTI4NDU9c3RhdGljIHZvaWQgdmlydG5ldF9uYXBpX3R4X2Rpc2FibGUoc3RydWN0IHNlbmRfcXVldWUgKnNxKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NTEtXFx0aWYgKG5hcGktXFx1MDAzZXdlaWdodCkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzoyODUyOlxcdFxcdG5ldGlmX3F1ZXVlX3NldF9uYXBpKHZpLVxcdTAwM2VkZXYsIHFpZHgsIE5FVERFVl9RVUVVRV9UWVBFX1RYLCBOVUxMKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg1My1cXHRcXHRuYXBpX2Rpc2FibGUobmFwaSk7XFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Mjg1Nz1zdGF0aWMgdm9pZCB2aXJ0bmV0X25hcGlfZGlzYWJsZShzdHJ1Y3QgcmVjZWl2ZV9xdWV1ZSAqcnEpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMjg2Mi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mjg2MzpcXHRuZXRpZl9xdWV1ZV9zZXRfbmFwaSh2aS1cXHUwMDNlZGV2LCBxaWR4LCBORVRERVZfUVVFVUVfVFlQRV9SWCwgTlVMTCk7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTI4NjQtXFx0bmFwaV9kaXNhYmxlKG5hcGkpO1xcbi0tXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaD0yODI3PXN0YXRpYyBpbmxpbmUgc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldl9mcm9tX3ByaXYoY29uc3Qgdm9pZCAqcHJpdilcXG4tLVxcbmluY2x1ZGUvbGludXgvbmV0ZGV2aWNlLmgtMjg0Mi1cXG5pbmNsdWRlL2xpbnV4L25ldGRldmljZS5oOjI4NDM6dm9pZCBuZXRpZl9xdWV1ZV9zZXRfbmFwaShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCB1bnNpZ25lZCBpbnQgcXVldWVfaW5kZXgsXFxuaW5jbHVkZS9saW51eC9uZXRkZXZpY2UuaC0yODQ0LVxcdFxcdFxcdCAgZW51bSBuZXRkZXZfcXVldWVfdHlwZSB0eXBlLFxcbi0tXFxubmV0L2NvcmUvZGV2LmM9NzI4NT1FWFBPUlRfU1lNQk9MKG5ldGlmX3RocmVhZGVkX2VuYWJsZSk7XFxuLS1cXG5uZXQvY29yZS9kZXYuYy03Mjg3LS8qKlxcbm5ldC9jb3JlL2Rldi5jOjcyODg6ICogbmV0aWZfcXVldWVfc2V0X25hcGkgLSBBc3NvY2lhdGUgcXVldWUgd2l0aCB0aGUgbmFwaVxcbm5ldC9jb3JlL2Rldi5jLTcyODktICogQGRldjogZGV2aWNlIHRvIHdoaWNoIE5BUEkgYW5kIHF1ZXVlIGJlbG9uZ1xcbi0tXFxubmV0L2NvcmUvZGV2LmMtNzI5Ny0gKi9cXG5uZXQvY29yZS9kZXYuYzo3Mjk4OnZvaWQgbmV0aWZfcXVldWVfc2V0X25hcGkoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgdW5zaWduZWQgaW50IHF1ZXVlX2luZGV4LFxcbm5ldC9jb3JlL2Rldi5jLTcyOTktXFx0XFx0XFx0ICBlbnVtIG5ldGRldl9xdWV1ZV90eXBlIHR5cGUsIHN0cnVjdCBuYXBpX3N0cnVjdCAqbmFwaSlcXG4tLVxcbm5ldC9jb3JlL2Rldi5jLTczMjAtfVxcbm5ldC9jb3JlL2Rldi5jOjczMjE6RVhQT1JUX1NZTUJPTChuZXRpZl9xdWV1ZV9zZXRfbmFwaSk7XFxubmV0L2NvcmUvZGV2LmMtNzMyMi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6Mjk6MjMuMjU3NjA4NTUzWiIsIlNlcSI6MjMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU1MTg4ODY5NjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGxvb2tlZCBvdmVyIHRoaXMgcGF0Y2guIEl0J3MgbWFraW5nIGNoYW5nZXMgdG8gYG5zaW1fcXVldWVfc3RhcnRgIGFuZCBgbnNpbV9xdWV1ZV9zdG9wYCBieSBhZGRpbmcgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYC4gRnJvbSBhIG5ldHdvcmtpbmcgcGVyc3BlY3RpdmUsIHRoaXMgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZDsgaXQncyB0aGUgc3RhbmRhcmQgQVBJIGZvciBhc3NvY2lhdGluZyBhIE5BUEkgY29udGV4dCB3aXRoIGEgc3BlY2lmaWMgcXVldWUuIE15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIGFyb3VuZCBwb3RlbnRpYWwgbWVtb3J5IGlzc3VlcywgYnV0IGFmdGVyIGxvb2tpbmcgaW50byB0aGlzLCBpdCdzIGNsZWFyIHRoZXJlJ3Mgbm90aGluZyBoZXJlIHRoYXQncyBnb2luZyB0byB0cmlnZ2VyIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGFjY2Vzcy4gV2UncmUganVzdCBzZXR0aW5nIGEgcG9pbnRlciB3aXRoaW4gdGhlIHF1ZXVlIHN0cnVjdHVyZS4gTm8gY2hhbmNlIG9mIGluZm8gbGVha3Mgb3IgdW5pbml0aWFsaXplZCBwYWRkaW5nIGVpdGhlci4gVGhhdCdzIGdvb2QuIFdoaWNoIG1lYW5zLCBhcyBhbiBleHBlcnQgaW4gbXkgZmllbGQsIEkgY2FuIGNvbmNsdWRlIHdpdGggY29uZmlkZW5jZSB0aGF0IEtNU0FOIGlzbid0IG5lY2Vzc2FyeSBmb3IgdGhpcyBwYXJ0aWN1bGFyIGNoYW5nZS4gSXQgbG9va3Mgc291bmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE0NTQwLCJPdXRwdXRUb2tlbnMiOjE4MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjI5OjI4Ljc3NjQ5OTMwN1oiLCJTZXEiOjI0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc0OTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBhIE5BUEkgY29udGV4dCB3aXRoIGEgbmV0d29yayBkZXZpY2UgcXVldWUgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIEFQSSB0aGF0IHNldHMgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2ltcGx5IGFkZHMgY2FsbHMgdG8gYG5ldGlmX3F1ZXVlX3NldF9uYXBpYCB0byBhc3NvY2lhdGUgYW5kIGRpc2Fzc29jaWF0ZSBhIE5BUEkgY29udGV4dCB3aXRoIGEgbmV0d29yayBkZXZpY2UgcXVldWUgaW4gdGhlIG5ldGRldnNpbSBkcml2ZXIuIFRoaXMgaXMgYSBzdGFuZGFyZCBuZXR3b3JraW5nIEFQSSB0aGF0IHNldHMgYSBwb2ludGVyIGluIHRoZSBxdWV1ZSBzdHJ1Y3R1cmUuIEl0IGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UsIGRvZXMgbm90IGludm9sdmUgY29tcGxleCBtZW1vcnkgYWxsb2NhdGlvbnMsIGFuZCBkb2VzIG5vdCBhbHRlciBjb250cm9sIGZsb3cgYmFzZWQgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlIHdvdWxkIGxpa2VseSBiZSBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZXMsIG9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHdoaWNoIGFyZSBhbHJlYWR5IGVmZmVjdGl2ZWx5IGNhdWdodCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4gVGhlcmUgaXMgbm8gcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzIHRoYXQgd291bGQgcmVxdWlyZSBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24uXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[1] Phase: Succeeded StartedAt: 2026-08-12 15:29:40 +0000 UTC FinishedAt: 2026-08-12 15:29:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 15:29:40 +0000 UTC FinishedAt: 2026-08-12 15:29:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2] Phase: Succeeded StartedAt: 2026-08-12 15:29:40 +0000 UTC FinishedAt: 2026-08-12 19:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:29:40 +0000 UTC FinishedAt: 2026-08-12 19:21:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:29:40 +0000 UTC FinishedAt: 2026-08-12 15:29:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:29:40 +0000 UTC FinishedAt: 2026-08-12 15:29:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-workflow7t886/series-workflow7t886-convert-artifact-3071404288/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:29:51 +0000 UTC FinishedAt: 2026-08-12 15:53:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:29:51 +0000 UTC FinishedAt: 2026-08-12 15:53:02 +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:*7e960944-8833-4a2e-ab86-40654df37c07,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-workflow7t886/series-workflow7t886-convert-artifact-3071404288/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": "77579dc8-4874-4dee-93e6-14f0701d3107", "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-workflow7t886/series-workflow7t886-build-action-2501850054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:29:51 +0000 UTC FinishedAt: 2026-08-12 15:52:39 +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:*7e960944-8833-4a2e-ab86-40654df37c07,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-workflow7t886/series-workflow7t886-convert-artifact-3071404288/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": "77579dc8-4874-4dee-93e6-14f0701d3107", "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-workflow7t886/series-workflow7t886-build-action-2501850054/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:53:02 +0000 UTC FinishedAt: 2026-08-12 15:53:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:53:02 +0000 UTC FinishedAt: 2026-08-12 15:53:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:53:02 +0000 UTC FinishedAt: 2026-08-12 15:53:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:53:02 +0000 UTC FinishedAt: 2026-08-12 15:53:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-workflow7t886/series-workflow7t886-convert-artifact-944257703/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:53:13 +0000 UTC FinishedAt: 2026-08-12 15:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:53:13 +0000 UTC FinishedAt: 2026-08-12 15:55:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77579dc8-4874-4dee-93e6-14f0701d3107,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-workflow7t886/series-workflow7t886-build-action-2501850054/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-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:55:14 +0000 UTC FinishedAt: 2026-08-12 15:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:55:14 +0000 UTC FinishedAt: 2026-08-12 15:55:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:55:14 +0000 UTC FinishedAt: 2026-08-12 16:16:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:55:14 +0000 UTC FinishedAt: 2026-08-12 16:16:23 +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:*7e960944-8833-4a2e-ab86-40654df37c07,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-workflow7t886/series-workflow7t886-convert-artifact-944257703/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": "1c231801-2456-4eed-b865-4c22740a35ed", "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-workflow7t886/series-workflow7t886-build-action-2291706923/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 15:55:14 +0000 UTC FinishedAt: 2026-08-12 16:16:11 +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:*7e960944-8833-4a2e-ab86-40654df37c07,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-workflow7t886/series-workflow7t886-convert-artifact-944257703/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": "1c231801-2456-4eed-b865-4c22740a35ed", "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-workflow7t886/series-workflow7t886-build-action-2291706923/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:16:23 +0000 UTC FinishedAt: 2026-08-12 16:16:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:16:23 +0000 UTC FinishedAt: 2026-08-12 16:16:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:16:23 +0000 UTC FinishedAt: 2026-08-12 16:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:16:23 +0000 UTC FinishedAt: 2026-08-12 16:18:20 +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:*1c231801-2456-4eed-b865-4c22740a35ed,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-workflow7t886/series-workflow7t886-build-action-2291706923/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-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 19:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 19:21:31 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"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:*77579dc8-4874-4dee-93e6-14f0701d3107,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1c231801-2456-4eed-b865-4c22740a35ed,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-workflow7t886/series-workflow7t886-build-action-2501850054/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-workflow7t886/series-workflow7t886-build-action-2291706923/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 16:18:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 16:18:47 +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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"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-workflow7t886/series-workflow7t886-convert-artifact-1027362816/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 16:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 16:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:30 +0000 UTC FinishedAt: 2026-08-12 16:18:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:54 +0000 UTC FinishedAt: 2026-08-12 19:21:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t886[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"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-bpf-kasan-gce-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["bpf","net"],"focus_symbols":["nsim_queue_start","nsim_queue_stop"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"a59f57e2aa127c5354168d2ec4bac920df1be4f4","config_name":"upstream-apparmor-kasan.config","enable_configs":["NETDEVSIM"],"series_id":"bf07b7e4-6b2d-4352-bef9-9240f57777f9","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-08-12 16:18:54 +0000 UTC FinishedAt: 2026-08-12 19:21:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*77579dc8-4874-4dee-93e6-14f0701d3107,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1c231801-2456-4eed-b865-4c22740a35ed,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-workflow7t886/series-workflow7t886-build-action-2501850054/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-workflow7t886/series-workflow7t886-build-action-2291706923/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-workflow7t886/series-workflow7t886-convert-artifact-1027362816/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,}