Name: series-workflowhfs5w Phase: Succeeded StartedAt: 2026-06-26 22:25:15 +0000 UTC FinishedAt: 2026-06-27 00:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[0] Phase: Succeeded StartedAt: 2026-06-26 22:25:15 +0000 UTC FinishedAt: 2026-06-26 22:51:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[0].run-triage Phase: Succeeded StartedAt: 2026-06-26 22:25:15 +0000 UTC FinishedAt: 2026-06-26 22:51:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF_MDIO", "FIXED_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF_MDIO", "FIXED_PHY" ], "series_id": "820c0c2c-85c9-4a98-bc7d-1cdac18a855d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "of_phy_register_fixed_link" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GX01ESU8mIzM0OywKICAgICYjMzQ7RklYRURfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayBieSBzZXR0aW5nIHRoZSBmd25vZGUgb2YgdGhlIHJlZ2lzdGVyZWQgZml4ZWQgUEhZIGRldmljZS4gVGhpcyBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlIG9mIG5ldHdvcmsgZHJpdmVycyB1c2luZyBmaXhlZC1saW5rIGluIHRoZWlyIGRldmljZXRyZWUgbm9kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlNWQ3NjRjYTA1YTNkMTI5ZDZlMTNjZTMzYTNjYmQyMDY2NjA4MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjo0NDo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5pbmRleCBiOGQyOThjMDRkM2ZmMC4uMGRkMjVkOTRmZWMwOTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbkBAIC00NTYsOCAmIzQzOzQ1NiwxNiBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcbiBcdHJldHVybiAtRU5PREVWO1xuIFxuLXJlZ2lzdGVyX3BoeTpcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApKTtcbiYjNDM7cmVnaXN0ZXJfcGh5OiB7XG4mIzQzO1x0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiYjNDM7XG4mIzQzO1x0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApO1xuJiM0MztcdGlmIChJU19FUlIocGh5ZGV2KSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuIH1cbiBFWFBPUlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPRl9NRElPJiMzNDssCiAgICAmIzM0O0ZJWEVEX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O29mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdlNWQ3NjRjYTA1YTNkMTI5ZDZlMTNjZTMzYTNjYmQyMDY2NjA4MmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAyMjo0NDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKaW5kZXggYjhkMjk4YzA0ZDNmZjAuLjBkZDI1ZDk0ZmVjMDk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYwpAQCAtNDU2LDggJiM0Mzs0NTYsMTYgQEAgaW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiAKIAlyZXR1cm4gLUVOT0RFVjsKIAotcmVnaXN0ZXJfcGh5OgotCXJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKCZhbXA7c3RhdHVzLCBucCkpOwomIzQzO3JlZ2lzdGVyX3BoeTogewomIzQzOwlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2OwomIzQzOwomIzQzOwlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoJmFtcDtzdGF0dXMsIG5wKTsKJiM0MzsJaWYgKElTX0VSUihwaHlkZXYpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIocGh5ZGV2KTsKJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDttZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQogfQogRVhQT1JUX1NZTUJPTChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXhlZCBQSFkgUmVnaXN0cmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCB3aXRoaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSB3YXkgdGhlIGZpeGVkIFBIWSBpcyByZWdpc3RlcmVkLiBJbnN0ZWFkIG9mIGEgZGlyZWN0IHJldHVybiwgaXQmIzM5O3Mgbm93IGEgYmxvY2sgdGhhdCBkb2VzIGEgbGl0dGxlIG1vcmUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgc2V0dGluZyB0aGUgYGZ3bm9kZWAgZm9yIHRoZSBgcGh5ZGV2LSZndDttZGlvLmRldmAgYWZ0ZXIgYSBzdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgUFRSX0VSUl9PUl9aRVJPYCBvbiB0aGUgcmV0dXJuZWQgYHBoeWRldmAgd2hpY2ggd291bGQgc2V0IHRoZSByZXR1cm4gdmFsdWUgdG8gdGhlIGVycm9yIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLCBvciBgMGAgaWYgaXQgZGlkbiYjMzk7dC4gVGhpcyBjaGFuZ2UgbG9va3MgZnVuY3Rpb25hbCwgcmlnaHQ/IFdlJiMzOTtyZSBlZmZlY3RpdmVseSBhZGRpbmcgYSBzdGVwIHRvIGFzc29jaWF0ZSB0aGUgZGV2aWNlJiMzOTtzIGZpcm13YXJlIG5vZGUuCgpTbywgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGNvbmZpcm0gdGhhdCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJdCYjMzk7cyBhbiBleHBvcnRlZCBzeW1ib2wsIHNvIHRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBicmluZyBpbiBgb2ZfbWRpby5jYCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHRoaXMgY2hhbmdlIG9wZXJhdGVzIGluLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW4gYSB3YXkgdGhhdCBkb2VzbiYjMzk7dCBicmVhayBvdGhlciBzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX21kaW8ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT01PW9iai0kKENPTkZJR19GV05PREVfTURJTylcdCYjNDM7PSBmd25vZGVfbWRpby5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09GX01ESU8pXHRcdCYjNDM7PSBvZl9tZGlvLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipEZWJ1Z2dpbmcgTXkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIGBDT05GSUdfT0ZfTURJT2AgaW4gdGhlIG1peCwgYW5kIGl0JiMzOTtzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGF0IHRoaXMgY29uZmlnIG9wdGlvbiBpcyBkZWZpbml0ZWx5IG5lY2Vzc2FyeSBoZXJlLCBhbmQgd2hlcmUgaXQgZml0cyBpbiB0aGUgZ3JlYXRlciBwaWN0dXJlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgc2VlIGlmIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgZXZlcnl0aGluZyBpcyBiZWluZyB1c2VkIGFzIGludGVuZGVkLiBJZiBub3QsIGl0IG1lYW5zIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aXRoIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM1Ni0xNC4gUmVtb3ZlIGNhbGxzIHRvIG9mX3BhcnNlX3BoYW5kbGUoKSBmb3IgdGhlIFBIWSxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzU3OiAgICBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluaygpIGZvciBmaXhlZCBsaW5rcyBldGMuIGZyb20gdGhlIHByb2JlXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM1OC0gICAgZnVuY3Rpb24sIGFuZCByZXBsYWNlIHdpdGg6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTEyMzk9c3RydWN0IGJjbWFzcF9pbnRmICpiY21hc3BfaW50ZXJmYWNlX2NyZWF0ZShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEyODEtXHRpZiAoIWludGYtXHUwMDNlcGh5X2RuIFx1MDAyNlx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhuZGV2X2RuKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jOjEyODI6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5kZXZfZG4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEyODMtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MjQ0MD1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTI1MzAtXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZG4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjUzMTpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZG4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTI1MzItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz01Mzk9c3RhdGljIGludCBiY21nZW5ldF9taWlfb2ZfaW5pdChzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTEtXHRpZiAoIXByaXYtXHUwMDNlcGh5X2RuIFx1MDAyNlx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhkbikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjU1MjpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZG4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtNTUzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTUyMDQ9ZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3Ny1cdGlmICghcGh5X25vZGUgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTI3ODpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3OS1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM9NjE2PXN0YXRpYyBpbnQgZ2Zhcl9vZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy03OTEtXHRpZiAoIXByaXYtXHUwMDNlcGh5X25vZGUgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzo3OTI6XHRcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtNzkzLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNjQzPXN0YXRpYyBpbnQgZW1hY19pbml0X3BoeShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI2NzM6XHRcdFx0cmVzID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI2NzQtXHRcdFx0bmRldi1cdTAwM2VwaHlkZXYgPSBvZl9waHlfZmluZF9kZXZpY2UobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM9MTI5MT1zdGF0aWMgaW50IG5peGdlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMzY2LVx0aWYgKCFwaHlfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsocGRldi1cdTAwM2VkZXYub2Zfbm9kZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTM2NzpcdFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEzNjgtXHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTE0OTI9c3RhdGljIGludCByYXZiX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxMi1cdFx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoxNTEzOlx0XHRcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxNC1cdFx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xOTE3PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xOTY0LVx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGRldi1cdTAwM2VvZl9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jOjE5NjU6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGRldi1cdTAwM2VvZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xOTY2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYz0xMjgxPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19wbGF0Zm9ybV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcwLVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jOjEzNzE6XHRcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc2xhdmVfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmMtMTM3Mi1cdFx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYz0xMjQzPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19jb21tb24gKmNwc3cpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYy0xMzE3LVx0XHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsocG9ydF9ucCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM6MTMxODpcdFx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwb3J0X25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTMxOS1cdFx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM9MTcxOT1kYXZpbmNpX2VtYWNfb2ZfZ2V0X3BkYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBlbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMtMTc1Ny1cdFx0XHRwZGF0YS1cdTAwM2VwaHlfaWQgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM6MTc1ODpcdFx0ZWxzZSBpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApIFx1MDAzZT0gMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfZW1hYy5jLTE3NTktXHRcdFx0cHJpdi1cdTAwM2VwaHlfbm9kZSA9IG9mX25vZGVfZ2V0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xNjU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzE5LVx0fSBlbHNlIGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhldGhfbm9kZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjA6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGV0aF9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM9NzU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtODEzLVx0fSBlbHNlIGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhldGhfbm9kZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYzo4MTQ6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGV0aF9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYy04MTUtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zNDY9c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9nZXRfYW5kX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNTgtXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNTk6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2MC1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM3Nz1FWFBPUlRfU1lNQk9MKG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM3OS0vKlxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzgwOiAqIG9mX3BoeV9pc19maXhlZF9saW5rKCkgYW5kIG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKCkgbXVzdFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgxLSAqIHN1cHBvcnQgdHdvIERUIGJpbmRpbmdzOlxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQxMD1FWFBPUlRfU1lNQk9MKG9mX3BoeV9pc19maXhlZF9saW5rKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQxMjppbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDU5PXJlZ2lzdGVyX3BoeToge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2OS19XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NzA6RVhQT1JUX1NZTUJPTChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NzEtXG4tLVxuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC5jPTY3Mj1zdGF0aWMgaW50IGN2bV9vY3RfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LmMtODk3LVx0XHRcdGlmIChwcml2LVx1MDAzZW9mX25vZGUgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKHByaXYtXHUwMDNlb2Zfbm9kZSkpIHtcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQuYzo4OTg6XHRcdFx0XHRpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocHJpdi1cdTAwM2VvZl9ub2RlKSkge1xuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC5jLTg5OS1cdFx0XHRcdFx0bmV0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBmaXhlZCBsaW5rIGZvciBpbnRlcmZhY2UgJWQsIHBvcnQgJWRcXG5cJiMzNDssXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDY9c3RydWN0IG1paV9idXMgKm9mX21kaW9fZmluZF9idXMoc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKTtcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oOjQ3OmludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTQ4LXZvaWQgb2ZfcGh5X2RlcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xMjg9c3RhdGljIGlubGluZSBpbnQgb2ZfbWRpb19wYXJzZV9hZGRyKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xMzItfVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6MTMzOnN0YXRpYyBpbmxpbmUgaW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xMzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NzAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBVc2FnZSoqCgpSaWdodCwgc28gYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYC4uLiBJIGtub3cgdGhhdCBmdW5jdGlvbiBnZXRzIGFyb3VuZCwgcG9wcyB1cCBpbiBhIGZldyBwbGFjZXMuIFRoZSBpbW1lZGlhdGUgcG9pbnQgb2YgaW50ZXJlc3QgaXMgaXRzIHVzZSB3aXRoaW4gYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgLCB3aGljaCwgZnJvbSBtZW1vcnksIGxpdmVzIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRoZSBxdWVzdGlvbiBpcywgaG93IGJyb2FkbHkgaXMgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgIGl0c2VsZiB1dGlsaXplZD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBwYXRocyBmcm9tIHRoZXJlIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgaW1wYWN0IGlmIHRoZXJlJiMzOTtzIGFueSBuZWVkIGZvciBjaGFuZ2VzLCBvcHRpbWl6YXRpb25zLCBvciBwb3RlbnRpYWwgZGVidWdnaW5nIGluIHRoZSBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGZ1bmN0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgY2FsbGluZyBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfcGh5X2dldF9hbmRfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTM1Mz1zdGF0aWMgaW50IG93bF9lbWFjX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM1OTpcdHBoeSA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmV0ZGV2LCBkZXYtXHUwMDNlb2Zfbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzYwLVx0XHRcdFx0ICAgICBvd2xfZW1hY19hZGp1c3RfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTg1PXN0YXRpYyBpbnQgYmNtYV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05MC1cdC8qIERUIGluZm8gc2hvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmM6OTE6XHRwaHlfZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChiZ21hYy1cdTAwM2VuZXRfZGV2LCBiZ21hYy1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05Mi1cdFx0XHRcdFx0IGJnbWFjX2FkanVzdF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jPTE1MT1zdGF0aWMgaW50IHBsYXRmb3JtX3BoeV9jb25uZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTUtXHRpZiAoYmdtYWMtXHUwMDNlcGxhdC5uaWNwbV9iYXNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNTY6XHRcdHBoeV9kZXYgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KGJnbWFjLVx1MDAzZW5ldF9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTE1Ny1cdFx0XHRcdFx0XHQgYmdtYWMtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTktXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jOjE2MDpcdFx0cGh5X2RldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QoYmdtYWMtXHUwMDNlbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMTYxLVx0XHRcdFx0XHRcdCBiZ21hYy1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTM2MD1zdGF0aWMgaW50IGdtYWNfc2V0dXBfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM2NzpcdHBoeSA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0zNjgtXHRcdFx0XHQgICAgIGRldi1cdTAwM2VvZl9ub2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg5MD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9kdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTkwOC1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE5MDk6XHRcdHBoeSA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QocHJpdi1cdTAwM2VuZXRkZXYsIG5wLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xOTEwLVx0XHRcdFx0XHQgICAgIFx1MDAyNmZ0Z21hYzEwMF9hZGp1c3RfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYz03Njg9c3RhdGljIGludCBoaXNpX2ZlbWFjX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtODMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo4MzM6XHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5kZXYsIG5vZGUsIGhpc2lfZmVtYWNfYWRqdXN0X2xpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy04MzQtXHRpZiAoIXBoeSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmM9MTE2Mz1zdGF0aWMgaW50IGF2ZV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmMtMTIwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmM6MTIxMDpcdHBoeWRldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmRldiwgbnAsIGF2ZV9waHlfYWRqdXN0X2xpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYy0xMjExLVx0aWYgKCFwaHlkZXYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYz0xNDkwPXN0YXRpYyBpbnQgaWNzc21fcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYy0xNTY2LVx0LyogY29ubmVjdCBQSFkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NtL2ljc3NtX3BydWV0aC5jOjE1Njc6XHRlbWFjLVx1MDAzZXBoeWRldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmRldiwgZXRoX25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYy0xNTY4LVx0XHRcdFx0XHQgICAgICBpY3NzbV9lbWFjX2FkanVzdF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jPTE0OTM9c3RhdGljIGludCBpeHA0eHhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYzoxNTY1Olx0cGh5ZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChuZGV2LCBucCwgaXhwNHh4X2FkanVzdF9saW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtMTU2Ni1cdGlmICghcGh5ZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzMzPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMzNS0vKipcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjMzNjogKiBvZl9waHlfZ2V0X2FuZF9jb25uZWN0XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zMzctICogLSBHZXQgcGh5IG5vZGUgYW5kIGNvbm5lY3QgdG8gdGhlIHBoeSBkZXNjcmliZWQgaW4gdGhlIGRldmljZSB0cmVlXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzQ1LSAqL1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzQ2OnN0cnVjdCBwaHlfZGV2aWNlICpvZl9waHlfZ2V0X2FuZF9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNDctXHRcdFx0XHRcdCAgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzYtfVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Mzc3OkVYUE9SVF9TWU1CT0wob2ZfcGh5X2dldF9hbmRfY29ubmVjdCk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzgtXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDI9c3RydWN0IHBoeV9kZXZpY2UgKlxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NDM6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtNDQtXHRcdCAgICAgICB2b2lkICgqaG5kbHIpKHN0cnVjdCBuZXRfZGV2aWNlICopKTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xMTY9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxMTc6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtMTE4LVx0XHQgICAgICAgdm9pZCAoKmhuZGxyKShzdHJ1Y3QgbmV0X2RldmljZSAqKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjIwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24uIEkga25vdyBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAgYW5kIGRpcmVjdGx5IGZyb20gZHJpdmVycy4gSXQmIzM5O3MgcGFydCBvZiB0aGUgT0YgTURJTyBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlbGV2YW50IGZvciBkZXZpY2V0cmVlLWJhc2VkIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGxpa2UgUUVNVT8KCldlbGwsIFFFTVUgKmRvZXMqIHN1cHBvcnQgZGV2aWNldHJlZSwgYW5kIGEgbG90IG9mIGRyaXZlcnMgdXNlIGl0LCBhcyBpbiB0aGUgYGZ0Z21hYzEwMC5jYCBkcml2ZXIgaW4gdGhlIEFTUEVFRCBRRU1VIG1hY2hpbmVzLiBUaGF0IG1ha2VzIGl0IG1vcmUgbGlrZWx5LiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIsIG15IHByaW1hcnkgZnV6emluZyB0b29sLCBydW5zIG9uIHg4Nl82NCBwcmltYXJpbHksIGJ1dCBhbHNvIG9uIGFybTY0IGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzLiBYODZfNjQgZG9lc24mIzM5O3QgY29tbW9ubHkgdXNlIGRldmljZXRyZWUsIGJ1dCBpdCYjMzk7cyAqcG9zc2libGUqLgoKV2FpdCwgU3l6a2FsbGVyIGNhbiBpbmplY3QgZGV2aWNldHJlZSBub2RlcywgY2FuJiMzOTt0IGl0PyBPciB1c2UgdmlydHVhbCBkcml2ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgZHJpdmVyIHRoYXQgY2FsbHMgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCwgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgaGFyZHdhcmUgZHJpdmVycy4gTGV0IG1lIGNoZWNrLi4uIHRoZSBsaXN0ZWQgZHJpdmVycyAoYGJjbWFzcF9pbnRmLmNgLCBgYmNtc3lzcG9ydC5jYCwgZXRjLiBhbGwgdGhlIHdheSB0byBgb2N0ZW9uL2V0aGVybmV0LmNgLCBwbHVzIHRoZSBsaXN0IHVzaW5nIGBvZl9waHlfZ2V0X2FuZF9jb25uZWN0YCkgYXJlIHByZXR0eSBtdWNoIGFsbCBoYXJkd2FyZSBkcml2ZXJzLiBJIGRvbiYjMzk7dCBzZWUgYW55dGhpbmcgbGlrZSBgdmV0aGAsIGB0dW5gLCBvciBgbWFjc2VjYCBpbiB0aGVyZSwgdGhlIGRyaXZlcnMgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuCgpCdXQsIEkgcmVtZW1iZXIgYGZpeGVkX3BoeV9yZWdpc3RlcmAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jYC4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgb2ZfbWRpby5jYCwgd2hpY2ggcGFyc2VzIHRoZSBkZXZpY2V0cmVlLiBDYW4gU3l6a2FsbGVyIHRyaWdnZXIgdGhpcyBwYXRoPyBEb2VzIGl0IGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yaywgb3IgY2FuIGl0IGluamVjdCBEVCBub2Rlcz8gSXQgbG9va3MgbGlrZSBTeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBkeW5hbWljYWxseSBpbmplY3QgRFQgbm9kZXMgdG8gdHJpZ2dlciB0aGUgcHJvYmUgb2YgdGhlc2UgaGFyZHdhcmUgZHJpdmVycyB1bmxlc3MgdGhlIFFFTVUgbWFjaGluZSBhbHJlYWR5IGhhcyB0aGVtIGRlZmluZWQuCgpCdXQgaG9sZCBvbi4uLiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGp1c3QgYSBmdW5jdGlvbi4gUmVhY2hhYmlsaXR5IGlzIGtleS4gSWYgaXQmIzM5O3MgcmVhY2hhYmxlLCBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nISBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYENPTkZJR19PRl9NRElPYCBpcyBlbmFibGVkIGluIHR5cGljYWwgU3l6a2FsbGVyIGNvbmZpZ3MuIFllcCwgaXQgdXN1YWxseSBpcy4KCk9rYXksIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlICpvdGhlciogY2FsbGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTE4CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgSW5xdWlyeSBvbiBSZWdpc3RlciBVdGlsaXphdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSYjMzk7cmUgYXBwcm9hY2hpbmcgdGhpcyByZWdpc3RlciBhbGxvY2F0aW9uLCBhbmQgb25lIHNwZWNpZmljIHF1ZXN0aW9uIGp1bXBzIG91dDogV2hhdCBhYm91dCBgZml4ZWRfcGh5X3JlZ2lzdGVyYD8gSXQmIzM5O3MgYSBrZXkgZWxlbWVudCwgYW5kIEkmIzM5O20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCBob3cgaXRzIHByZXNlbmNlIG9yIGFic2VuY2UgaW1wYWN0cyB0aGUgY3VycmVudCBkZXNpZ24uIEhvdyBkb2VzIGl0IGZpdCBpbnRvIHRoZSB3aWRlciBwaWN0dXJlPyBJcyBpdCBoYW5kbGVkIG9wdGltYWxseSBvciBpcyB0aGVyZSBzb21lIG90aGVyIGlzc3VlIHRoYXQgbWF5IGhhdmUgYW4gZWZmZWN0IGVsc2V3aGVyZT8gVGhpcyBxdWVzdGlvbiB0aGVuIGV4dGVuZHMgdG8gdGhlIG92ZXJhbGwgaW1wYWN0LCB0aGUgaW1wbGljYXRpb25zLCBhbmQgdGhlIHBvdGVudGlhbCBjb25zdHJhaW50cyB0aGF0IHN1cnJvdW5kIHRoZSByZWdpc3Rlci4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGFueSBoaWRkZW4gY29tcGxleGl0eS4gVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdG8gYmUgc3VyZSB0aGF0IHRoZSByZWdpc3RlciBpcyBiZWluZyBoYW5kbGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDkyOlx0XHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlx0XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXHRcdGlmICghSVNfRVJSKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNDM5PWludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NDk6XHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1MC1cdGlmIChJU19FUlIocGh5X2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE4NDg9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmVfbmNzaShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTg2NzpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2OC1cdGlmIChJU19FUlIocGh5ZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cdFx0XHRuZXRkZXZfaW5mbyhuZGV2LCBcJiMzNDtubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlx0XHRcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXHRcdFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmhiZ19maXhlZF9waHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDU5PXJlZ2lzdGVyX3BoeToge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MjpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2My1cdGlmIChJU19FUlIocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTE4PXN0YXRpYyBpbnQgZml4ZWRfcGh5X2dldF9mcmVlX2FkZHIodm9pZClcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMwLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjEzMTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMyLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTcyLX1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzM6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzQtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTc1OnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODEtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTgyOlx0cmV0dXJuIGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4My19XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTg0OkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTg1LVxuLS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9MTk9ZXh0ZXJuIGludCBmaXhlZF9waHlfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2Fycmllcik7XG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIwOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjI6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjMtXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0yOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzA6Zml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTMxLVx0XHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzUtXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjM2OnN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzYzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBhdGNoIHRvIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZmZlY3RzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhpcyBmdW5jdGlvbiBnZXRzIHRyaWdnZXJlZCB3aGVuIGEgZGV2aWNldHJlZSBub2RlIGhhcyBhIGBmaXhlZC1saW5rYCBwcm9wZXJ0eS4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgY2FuIHN5emthbGxlciBoaXQgdGhpcz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRocm91Z2ggZGV2aWNldHJlZSBvdmVybGF5cy4gSSByZW1lbWJlciBzeXprYWxsZXIgY2FuIGxvYWQgdGhvc2UsIGRvZXNuJiMzOTt0IGl0PyBTb21ldGhpbmcgd2l0aCBgc3l6X21vdW50X2ltYWdlYCwgYW5kIGFsc28gYHN5el9pbml0X25ldF9zb2NrZXRgIGFuZCBvdGhlciBzeXN0ZW0gY2FsbHMuLi4gZXZlbiBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgYHN5el91c2JfY29ubmVjdGAuIFllcywgc3l6a2FsbGVyICpkZWZpbml0ZWx5KiBmdXp6ZXMgZGV2aWNldHJlZSBvdmVybGF5czsgaXQgaGFzIGBzeXpfbW91bnRfaW1hZ2VgLCBhbmQgSSBrbm93IGl0IGxldmVyYWdlcyBjb25maWdmcyBmb3IgbG9hZGluZyB0aGVtLgoKRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGBDT05GSUdfT0ZfT1ZFUkxBWWAgaXMgZW5hYmxlZC4gT2theSwgbm93IGxldCYjMzk7cyB0aGluayBhYm91dCBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQuIEl0JiMzOTtzIGNhbGxlZCBieSBkcml2ZXJzIGR1cmluZyB0aGVpciBwcm9iZSBzZXF1ZW5jZS4gU28sIGlmIGEgZHJpdmVyIGdldHMgcHJvYmVkIHZpYSBhIERUIG92ZXJsYXksIGl0IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uLiBTbywgaXMgdGhlcmUgYW55IGRyaXZlciB0aGF0IHdvdWxkIGJlIHByb2JlZCB2aWEgYSBEVCBvdmVybGF5IGFuZCBjYWxsIHRoaXM/CgpXZWxsLCBhbnkgb2YgdGhlIGRyaXZlcnMgSSBsaXN0ZWQsIGlmIHRoZXkgYXJlIGNvbXBpbGVkIGluIGFuZCB0aGVpciBoYXJkd2FyZSBpcyBwcmVzZW50LCBvciBpZiB0aGV5IGFyZSBwbGF0Zm9ybSBkcml2ZXJzIGFuZCB3ZSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIERUIG92ZXJsYXkuIENyZWF0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIGluIHRoZSBvdmVybGF5IHNvdW5kcyBsaWtlIGEgZ29vZCBhcHByb2FjaC4gQnV0LCB0aGUgaGFyZHdhcmUgd291bGQgc3RpbGwgbmVlZCB0byBiZSBwcmVzZW50IG9yIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCBkdXJpbmcgcHJvYmUuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbCEgQnV0LCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGNhbGxlZCAqZHVyaW5nKiBwcm9iZSwgbm90IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgpGb3IgZXhhbXBsZSwgYGNwc3dfcHJvYmVfZHRgIG9yIGBiY21nZW5ldF9taWlfb2ZfaW5pdGAuIEkgc2hvdWxkIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmNgIGFzIGEgcG9zc2liaWxpdHksIHNpbmNlIHRoaXMgaXMgdXNlZCBvbiBRRU1VIEFTUEVFRCBtYWNoaW5lcy4gQnV0IHN5emthbGxlciB1c3VhbGx5IHVzZXMgYHFlbXUtc3lzdGVtLXg4Nl82NGAgb3IgYHFlbXUtc3lzdGVtLWFhcmNoNjRgLiBJIGRvbiYjMzk7dCB0aGluayBhbnkgb2YgdGhvc2UgcGxhdGZvcm0gZGV2aWNlcyBhcmUgcHJlc2VudCBieSBkZWZhdWx0IGluIGBxZW11LXN5c3RlbS14ODZfNjRgLgoKV2FpdCwgaXNuJiMzOTt0IGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgYWxzbyBjYWxsZWQgYnkgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgPyBUaGF0JiMzOTtzIGFub3RoZXIgcG90ZW50aWFsIGF2ZW51ZS4gT2theSwgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhbnkgd2F5IHRvIHJlYWNoIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnJvbSB1c2Vyc3BhY2UgKndpdGhvdXQqIHNwZWNpZmljIGhhcmR3YXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gYW55IHZpcnR1YWwgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM9MTIzOT1zdHJ1Y3QgYmNtYXNwX2ludGYgKmJjbWFzcF9pbnRlcmZhY2VfY3JlYXRlKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4MS1cdGlmICghaW50Zi1cdTAwM2VwaHlfZG4gXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5kZXZfZG4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM6MTI4MjpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobmRldl9kbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4My1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yNDQwPXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjUzMC1cdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhkbikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyNTMxOlx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjUzMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTUzOT1zdGF0aWMgaW50IGJjbWdlbmV0X21paV9vZl9pbml0KHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTU1MS1cdGlmICghcHJpdi1cdTAwM2VwaHlfZG4gXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKGRuKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6NTUyOlx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTMtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NTIwND1mZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Mjc3LVx0aWYgKCFwaHlfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1Mjc4Olx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Mjc5LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz02MTY9c3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTc5MS1cdGlmICghcHJpdi1cdTAwM2VwaHlfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjc5MjpcdFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy03OTMtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI2NDM9c3RhdGljIGludCBlbWFjX2luaXRfcGh5KHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI2NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjY3MzpcdFx0XHRyZXMgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjY3NC1cdFx0XHRuZGV2LVx1MDAzZXBoeWRldiA9IG9mX3BoeV9maW5kX2RldmljZShucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz0xMjkxPXN0YXRpYyBpbnQgbml4Z2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEzNjYtXHRpZiAoIXBoeV9ub2RlIFx1MDAyNlx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhwZGV2LVx1MDAzZWRldi5vZl9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYzoxMzY3Olx0XHRlcnIgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTM2OC1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM9MTQ5Mj1zdGF0aWMgaW50IHJhdmJfcGh5X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0xNTEyLVx0XHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjE1MTM6XHRcdFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0xNTE0LVx0XHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jPTE5MTc9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjQtXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZGV2LVx1MDAzZW9mX25vZGUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM6MTk2NTpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jPTEyODE9c3RhdGljIGludCBjcHN3X3Byb2JlX2R0KHN0cnVjdCBjcHN3X3BsYXRmb3JtX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEzNzAtXHRcdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM6MTM3MTpcdFx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzbGF2ZV9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcyLVx0XHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jPTEyNDM9c3RhdGljIGludCBjcHN3X3Byb2JlX2R0KHN0cnVjdCBjcHN3X2NvbW1vbiAqY3Bzdylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTEzMTctXHRcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwb3J0X25wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMzE4Olx0XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHBvcnRfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYy0xMzE5LVx0XHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYz0xNzE5PWRhdmluY2lfZW1hY19vZl9nZXRfcGRhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGVtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYy0xNzU3LVx0XHRcdHBkYXRhLVx1MDAzZXBoeV9pZCA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYzoxNzU4Olx0XHRlbHNlIGlmIChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCkgXHUwMDNlPSAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMtMTc1OS1cdFx0XHRwcml2LVx1MDAzZXBoeV9ub2RlID0gb2Zfbm9kZV9nZXQobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTE2NTc9c3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MTktXHR9IGVsc2UgaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGV0aF9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTcyMDpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZXRoX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcyMS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYz03NTc9c3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYy04MTMtXHR9IGVsc2UgaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGV0aF9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jOjgxNDpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZXRoX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTgxNS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM0Nj1zdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM1OC1cdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpIHtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM1OTpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzYwLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mzc3PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2dldF9hbmRfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzc5LS8qXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozODA6ICogb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoKSBhbmQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoKSBtdXN0XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zODEtICogc3VwcG9ydCB0d28gRFQgYmluZGluZ3M6XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEwPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2lzX2ZpeGVkX2xpbmspO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDExLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDEyOmludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDEzLXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00NTk9cmVnaXN0ZXJfcGh5OiB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDY5LX1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ3MDpFWFBPUlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyODcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQ6IGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgaW4gT0YgTURJTyBjb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXM6IHdoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50PyBJIHNlZSBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIGNhbGxzIGBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKWAsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgdGhhdCYjMzk7cyBhIHZpcnR1YWwgRFNBIHN3aXRjaCBkcml2ZXIuIERvZXMgaXQgcmVsYXRlIHRvIHRoZSB0YXJnZXQsIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2A/IE5vcGUuIFRoZSBjb2RlIGNhbGxzIGEgc2ltaWxhciwgYnV0IGRpZmZlcmVudCBmdW5jdGlvbi4KClRoZW4sIHRoZSBrZXkgaW5zaWdodCBoaXRzIG1lOiB0aGlzIHBhdGNoIGlzICpzcGVjaWZpY2FsbHkqIHdpdGhpbiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLiBDYW4gSSB0cmlnZ2VyIHRoYXQgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXk/IEFic29sdXRlbHkhIElmIEkgY2FuIGxvYWQgYSBEVCBvdmVybGF5IHRoYXQgYWRkcyBhIG5vZGUgd2l0aCBgZml4ZWQtbGlua2AgdG8gYW4gZXhpc3RpbmcgbmV0d29yayBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIG9yIGludHJvZHVjZSBhICp2aXJ0dWFsKiBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIEkmIzM5O20gaW4gYnVzaW5lc3MuCgpOb3csIGRvIGFueSB2aXJ0dWFsIGRldmljZXMgZXZlbiAqdXNlKiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgPyBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIG5vIOKAkyBpdCBsb29rcyBsaWtlIGFsbCB0aGUgZHJpdmVycyBsaXN0ZWQgYXJlIGhhcmR3YXJlIGRyaXZlcnMuCgpCdXQgd2FpdCEgSG9sZCBvbi4gSSBzZWUgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgIGdldHMgY2FsbGVkIGJ5ICptYW55KiBkcml2ZXJzLiBJZiBJIGxvYWQgYSBEVCBvdmVybGF5IGZvciBhIGhhcmR3YXJlIGRyaXZlciB0aGF0JiMzOTtzIGFscmVhZHkgcHJlc2VudCBpbiBRRU1VIOKAkyBzb21ldGhpbmcgbGlrZSBgZnRnbWFjMTAwYCBvciBgZmVjYCDigJMgSSB0aGluayBJIGNhbiBtYWtlIGl0IGNhbGwgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYC4gVGhpcyBpcyBwcm9taXNpbmcuCgpBbmQgb2YgY291cnNlLCBTeXprYWxsZXIgZG9lcyBhIGxvdCBvZiB0ZXN0aW5nIG9uIGBxZW11LXN5c3RlbS1hcm1gIGFuZCBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAgd2hlcmUgYGZlY2Agb3IgYGZ0Z21hYzEwMGAgbWlnaHQgYWxyZWFkeSBiZSBwcmVzZW50LiBCaW5nbyEKClNvIHRoZSBwYXRjaCBpdHNlbGYgaXMgc21hbGwgYnV0IHRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbC4gSXQmIzM5O3Mgc2V0dGluZyBgcGh5ZGV2LSZndDttZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTtgIHdoaWNoIHNlZW1zIGNvcmUgdG8gdGhlIE9GIE1ESU8gY29kZS4gR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgRFQgb3ZlcmxheSBpbmplY3Rpb24sIGlzIHRoaXMgd29ydGggZnV6emluZz8gWWVzLCBhYnNvbHV0ZWx5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHdoYXQgaXMgZXNzZW50aWFsbHkgYSBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50LgoKV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkPyBJdCBzZWVtcyBJIG5lZWQgYENPTkZJR19PRl9NRElPYCBhbmQgYENPTkZJR19GSVhFRF9QSFlgLiBMZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2sgdGhhdCBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgcmVhbGx5IGEgcmVxdWlyZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgUEhZIERyaXZlciBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgYGZpeGVkX3BoeWAgZHJpdmVyIGlzIGhhbmRsZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIFBIWSBkcml2ZXIgY29tcGlsYXRpb24gbG9naWMgaXMgdXN1YWxseSBkZWZpbmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJ1bGVzIG9yIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBmaXhlZF9waHlgIHRoZXJlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCwgYW55IHNwZWNpYWwgZmxhZ3MsIG9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgUEhZIGRyaXZlcnMuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXhlZF9waHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19EUDgzVEc3MjBfUEhZKVx0JiM0Mzs9IGRwODN0ZzcyMC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0ZJWEVEX1BIWSlcdFx0JiM0Mzs9IGZpeGVkX3BoeS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX0lDUExVU19QSFkpXHQmIzQzOz0gaWNwbHVzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NDUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBldmFsdWF0aW5nIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgdGhlIE5lZWQgZm9yIENPTkZJR19GSVhFRF9QSFkqKgoKT2theSwgc28gdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIGBDT05GSUdfRklYRURfUEhZYCBpcyBuZWNlc3NhcnkuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kICp3aHkqLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBUaGUgbW9zdCBsaWtlbHkgYXJlYSB0byBzdGFydCBwb2tpbmcgYXJvdW5kIGlzIHByb2JhYmx5IGluIHRoZSBgb2ZfbWRpby5jYCBmaWxlIOKAkyBpdCBkZWFscyB3aXRoIE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIHdoaWNoIGlzIG9mdGVuIHVzZWQgZm9yIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGNvbW11bmljYXRpb24sIGVzcGVjaWFsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIERldmljZSBUcmVlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYG9mX21kaW8uY2AgYW5kIHNlZSB3aGVyZSBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgdXNlZCBpbiB0aGF0IGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT0ZfTURJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9OD1jb25maWcgRldOT0RFX01ESU9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTItXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTM6Y29uZmlnIE9GX01ESU9cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNC1cdGRlZl90cmlzdGF0ZSBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg2MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IG9mIE9GX01ESU8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYE9GX01ESU9gLi4uIGVzc2VudGlhbGx5LCB0aGF0JiMzOTtzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBkZXBlbmRlbmN5IG9uIGBPRmAuIFNvLCB0aGUgaW1wbGljYXRpb25zIGFyZSBzdHJhaWdodGZvcndhcmQ6IElmIHRoZSBiYXNlIG9wdGlvbiBgT0ZgIGlzIGVuYWJsZWQsIHRoZW4gYE9GX01ESU9gIGJlY29tZXMgYWN0aXZlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBhbmdsZXMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE9GX01ESU9gIGFuZCB0aGUgYEZJWEVEX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGSVhFRF9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz00OT1jb25maWcgUEhZTElCX0xFRFNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjU2OmNvbmZpZyBGSVhFRF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7TURJTyBCdXMvUEhZIGVtdWxhdGlvbiB3aXRoIGZpeGVkIHNwZWVkL2xpbmsgUEhZc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE2NAoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgQ09ORklHX09GX01ESU9gIGFuZCBgQ09ORklHX0ZJWEVEX1BIWWAganVtcCBvdXQgYXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBoZXJlLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmdW5jdGlvbjsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjaGFuZ2luZyB3aXRoIGl0LiBJcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24/IExldCYjMzk7cyBjaGVjayB0aGUgcGF0Y2guCgpBaCwgaXQgc2VlbXMgdGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuIExldCBtZSBtYWtlIHN1cmUuCmBgYGMKcmVnaXN0ZXJfcGh5OiB7CglzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2OwoKCXBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcigmYW1wO3N0YXR1cywgbnApOwoJaWYgKElTX0VSUihwaHlkZXYpKQoJCXJldHVybiBQVFJfRVJSKHBoeWRldik7CgoJcGh5ZGV2LSZndDttZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTsKCXJldHVybiAwOwp9CmBgYApZZXMsIGFsbCB0aGlzIHBhdGNoIGRvZXMgaXMgc2V0IHRoZSBgZndub2RlYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQgYWxsb3dzIG90aGVyIGNvZGUgdG8gZGlzY292ZXIgdGhlIGZpcm13YXJlIG5vZGUgb2YgdGhlIGZpeGVkIFBIWSBkZXZpY2UuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIGFuZCB0aGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY2FuIGxlYWQgdG8gc3VidGxlIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTtsbCBmbGFnIHRoaXMgYXMgaGF2aW5nIHBvdGVudGlhbCBmb3IgZnV6emluZy4KCk15IGNvbmNsdXNpb24gaXM6ICoqV29ydGhGdXp6aW5nPXRydWUqKi4KClNwZWNpZmljYWxseSwgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuCgpXZSB3aWxsIGVuYWJsZSB0aGUgY29uZmlnczogYE9GX01ESU9gLCBgRklYRURfUEhZYC4KClRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggbWFrZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGJ5IHNldHRpbmcgdGhlIGBmd25vZGVgIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPRl9NRElPJiMzNDssCiAgICAmIzM0O0ZJWEVEX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O29mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GX01ESU8mIzM0OywKICAgICYjMzQ7RklYRURfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayBieSBzZXR0aW5nIHRoZSBmd25vZGUgb2YgdGhlIHJlZ2lzdGVyZWQgZml4ZWQgUEhZIGRldmljZS4gVGhpcyBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlIG9mIG5ldHdvcmsgZHJpdmVycyB1c2luZyBmaXhlZC1saW5rIGluIHRoZWlyIGRldmljZXRyZWUgbm9kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQyLjU1NDQ0NTQxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDQ5NjEwMTEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPRl9NRElPXCIsXG4gICAgXCJGSVhFRF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQyLjU1NDQ1MjEyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwMTM0MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2U1ZDc2NGNhMDVhM2QxMjlkNmUxM2NlMzNhM2NiZDIwNjY2MDgyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjo0NDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuaW5kZXggYjhkMjk4YzA0ZDNmZjAuLjBkZDI1ZDk0ZmVjMDk3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcXG5AQCAtNDU2LDggKzQ1NiwxNiBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4gXFxuIFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4tcmVnaXN0ZXJfcGh5Olxcbi1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCkpO1xcbityZWdpc3Rlcl9waHk6IHtcXG4rXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4rXFxuK1xcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCk7XFxuK1xcdGlmIChJU19FUlIocGh5ZGV2KSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcXG4rXFxuK1xcdHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZndub2RlID0gb2ZfZndub2RlX2hhbmRsZShucCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0NDo0My4xMDU0MzIwMzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTk0NTA5ODM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPRl9NRElPXCIsXG4gICAgXCJGSVhFRF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2U1ZDc2NGNhMDVhM2QxMjlkNmUxM2NlMzNhM2NiZDIwNjY2MDgyZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjQ0OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMgYi9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xuaW5kZXggYjhkMjk4YzA0ZDNmZjAuLjBkZDI1ZDk0ZmVjMDk3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5AQCAtNDU2LDggKzQ1NiwxNiBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcbiBcdHJldHVybiAtRU5PREVWO1xuIFxuLXJlZ2lzdGVyX3BoeTpcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApKTtcbityZWdpc3Rlcl9waHk6IHtcbitcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4rXG4rXHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2c3RhdHVzLCBucCk7XG4rXHRpZiAoSVNfRVJSKHBoeWRldikpXG4rXHRcdHJldHVybiBQVFJfRVJSKHBoeWRldik7XG4rXG4rXHRwaHlkZXYtXHUwMDNlbWRpby5kZXYuZndub2RlID0gb2ZfZndub2RlX2hhbmRsZShucCk7XG4rXHRyZXR1cm4gMDtcbit9XG4gfVxuIEVYUE9SVF9TWU1CT0wob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmspO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDQ6NDMuMTA1NDM0ODY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ0MDc2NTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaXhlZCBQSFkgUmVnaXN0cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCB3aXRoaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSB3YXkgdGhlIGZpeGVkIFBIWSBpcyByZWdpc3RlcmVkLiBJbnN0ZWFkIG9mIGEgZGlyZWN0IHJldHVybiwgaXQncyBub3cgYSBibG9jayB0aGF0IGRvZXMgYSBsaXR0bGUgbW9yZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBzZXR0aW5nIHRoZSBgZndub2RlYCBmb3IgdGhlIGBwaHlkZXYtXHUwMDNlbWRpby5kZXZgIGFmdGVyIGEgc3VjY2Vzc2Z1bCByZWdpc3RyYXRpb24uIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYFBUUl9FUlJfT1JfWkVST2Agb24gdGhlIHJldHVybmVkIGBwaHlkZXZgIHdoaWNoIHdvdWxkIHNldCB0aGUgcmV0dXJuIHZhbHVlIHRvIHRoZSBlcnJvciBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgb3IgYDBgIGlmIGl0IGRpZG4ndC4gVGhpcyBjaGFuZ2UgbG9va3MgZnVuY3Rpb25hbCwgcmlnaHQ/IFdlJ3JlIGVmZmVjdGl2ZWx5IGFkZGluZyBhIHN0ZXAgdG8gYXNzb2NpYXRlIHRoZSBkZXZpY2UncyBmaXJtd2FyZSBub2RlLlxuXG5TbywgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGNvbmZpcm0gdGhhdCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJdCdzIGFuIGV4cG9ydGVkIHN5bWJvbCwgc28gdGhhdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGJyaW5nIGluIGBvZl9tZGlvLmNgIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdGhpcyBjaGFuZ2Ugb3BlcmF0ZXMgaW4uIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgaXMgcHJvcGVybHkgaW50ZWdyYXRlZCBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgYnJlYWsgb3RoZXIgc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQ5LjU0NjIwNTcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMTM2NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX21kaW8ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9NT1vYmotJChDT05GSUdfRldOT0RFX01ESU8pXFx0Kz0gZndub2RlX21kaW8ub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0ZfTURJTylcXHRcXHQrPSBvZl9tZGlvLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQ5LjYyNjM0NjYxNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzcyODc2MzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRlYnVnZ2luZyBNeSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIHNlZSBgQ09ORklHX09GX01ESU9gIGluIHRoZSBtaXgsIGFuZCBpdCdzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgdGhpcyBjb25maWcgb3B0aW9uIGlzIGRlZmluaXRlbHkgbmVjZXNzYXJ5IGhlcmUsIGFuZCB3aGVyZSBpdCBmaXRzIGluIHRoZSBncmVhdGVyIHBpY3R1cmUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHNlZSBpZiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGFjdHVhbGx5IGJlaW5nIHV0aWxpemVkIGFueXdoZXJlIGluIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5dGhpbmcgaXMgYmVpbmcgdXNlZCBhcyBpbnRlbmRlZC4gSWYgbm90LCBpdCBtZWFucyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ1OjIyLjk5OTIyNDkyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTAzMDU3Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzU2LTE0LiBSZW1vdmUgY2FsbHMgdG8gb2ZfcGFyc2VfcGhhbmRsZSgpIGZvciB0aGUgUEhZLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzU3OiAgICBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluaygpIGZvciBmaXhlZCBsaW5rcyBldGMuIGZyb20gdGhlIHByb2JlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNTgtICAgIGZ1bmN0aW9uLCBhbmQgcmVwbGFjZSB3aXRoOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTEyMzk9c3RydWN0IGJjbWFzcF9pbnRmICpiY21hc3BfaW50ZXJmYWNlX2NyZWF0ZShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4MS1cXHRpZiAoIWludGYtXFx1MDAzZXBoeV9kbiBcXHUwMDI2XFx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhuZGV2X2RuKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYzoxMjgyOlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5kZXZfZG4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy0xMjgzLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yNDQwPXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yNTMwLVxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhkbikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjUzMTpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTI1MzItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9NTM5PXN0YXRpYyBpbnQgYmNtZ2VuZXRfbWlpX29mX2luaXQoc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTEtXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlfZG4gXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZG4pKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6NTUyOlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGRuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTMtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTUyMDQ9ZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Mjc3LVxcdGlmICghcGh5X25vZGUgXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTI3ODpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3OS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz02MTY9c3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtNzkxLVxcdGlmICghcHJpdi1cXHUwMDNlcGh5X25vZGUgXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzo3OTI6XFx0XFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtNzkzLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjY0Mz1zdGF0aWMgaW50IGVtYWNfaW5pdF9waHkoc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNjczOlxcdFxcdFxcdHJlcyA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjY3NC1cXHRcXHRcXHRuZGV2LVxcdTAwM2VwaHlkZXYgPSBvZl9waHlfZmluZF9kZXZpY2UobnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz0xMjkxPXN0YXRpYyBpbnQgbml4Z2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTM2Ni1cXHRpZiAoIXBoeV9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTM2NzpcXHRcXHRlcnIgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMzY4LVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTE0OTI9c3RhdGljIGludCByYXZiX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0xNTEyLVxcdFxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjE1MTM6XFx0XFx0XFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxNC1cXHRcXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jPTE5MTc9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTk2NC1cXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZGV2LVxcdTAwM2VvZl9ub2RlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYzoxOTY1OlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjYtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYz0xMjgxPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19wbGF0Zm9ybV9kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEzNzAtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jOjEzNzE6XFx0XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc2xhdmVfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEzNzItXFx0XFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYz0xMjQzPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19jb21tb24gKmNwc3cpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTEzMTctXFx0XFx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKHBvcnRfbnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMzE4OlxcdFxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHBvcnRfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTMxOS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYz0xNzE5PWRhdmluY2lfZW1hY19vZl9nZXRfcGRhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGVtYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfZW1hYy5jLTE3NTctXFx0XFx0XFx0cGRhdGEtXFx1MDAzZXBoeV9pZCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM6MTc1ODpcXHRcXHRlbHNlIGlmIChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCkgXFx1MDAzZT0gMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYy0xNzU5LVxcdFxcdFxcdHByaXYtXFx1MDAzZXBoeV9ub2RlID0gb2Zfbm9kZV9nZXQobnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9MTY1Nz1zdGF0aWMgaW50IHBydWV0aF9uZXRkZXZfaW5pdChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzE5LVxcdH0gZWxzZSBpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZXRoX25vZGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTcyMDpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhldGhfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcyMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM9NzU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYy04MTMtXFx0fSBlbHNlIGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhldGhfbm9kZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM6ODE0OlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGV0aF9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtODE1LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM0Nj1zdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzU4LVxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpIHtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNTk6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2MC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mzc3PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2dldF9hbmRfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzktLypcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozODA6ICogb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoKSBhbmQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoKSBtdXN0XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgxLSAqIHN1cHBvcnQgdHdvIERUIGJpbmRpbmdzOlxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEwPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2lzX2ZpeGVkX2xpbmspO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0MTI6aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQ1OT1yZWdpc3Rlcl9waHk6IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2OS19XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDcwOkVYUE9SVF9TWU1CT0wob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmspO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ3MS1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQuYz02NzI9c3RhdGljIGludCBjdm1fb2N0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LmMtODk3LVxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2VvZl9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKHByaXYtXFx1MDAzZW9mX25vZGUpKSB7XFxuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC5jOjg5ODpcXHRcXHRcXHRcXHRpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocHJpdi1cXHUwMDNlb2Zfbm9kZSkpIHtcXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LmMtODk5LVxcdFxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGZpeGVkIGxpbmsgZm9yIGludGVyZmFjZSAlZCwgcG9ydCAlZFxcXFxuXFxcIixcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTQ2PXN0cnVjdCBtaWlfYnVzICpvZl9tZGlvX2ZpbmRfYnVzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucCk7XFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NDc6aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTQ4LXZvaWQgb2ZfcGh5X2RlcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTEyOD1zdGF0aWMgaW5saW5lIGludCBvZl9tZGlvX3BhcnNlX2FkZHIoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtMTMyLX1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxMzM6c3RhdGljIGlubGluZSBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xMzQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0NToyNy4xMDIyODc3NDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA1NzQ3NzAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBVc2FnZSoqXG5cblJpZ2h0LCBzbyBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLi4uIEkga25vdyB0aGF0IGZ1bmN0aW9uIGdldHMgYXJvdW5kLCBwb3BzIHVwIGluIGEgZmV3IHBsYWNlcy4gVGhlIGltbWVkaWF0ZSBwb2ludCBvZiBpbnRlcmVzdCBpcyBpdHMgdXNlIHdpdGhpbiBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAsIHdoaWNoLCBmcm9tIG1lbW9yeSwgbGl2ZXMgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgYnJvYWRseSBpcyBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAgaXRzZWxmIHV0aWxpemVkPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHBhdGhzIGZyb20gdGhlcmUgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBpbXBhY3QgaWYgdGhlcmUncyBhbnkgbmVlZCBmb3IgY2hhbmdlcywgb3B0aW1pemF0aW9ucywgb3IgcG90ZW50aWFsIGRlYnVnZ2luZyBpbiB0aGUgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmdW5jdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgY2FsbGluZyBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0NTo1NS4xNTk3NjczMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0MzUyMDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9waHlfZ2V0X2FuZF9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTM1Mz1zdGF0aWMgaW50IG93bF9lbWFjX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM1OTpcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5ldGRldiwgZGV2LVxcdTAwM2VvZl9ub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzYwLVxcdFxcdFxcdFxcdCAgICAgb3dsX2VtYWNfYWRqdXN0X2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTg1PXN0YXRpYyBpbnQgYmNtYV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTkwLVxcdC8qIERUIGluZm8gc2hvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jOjkxOlxcdHBoeV9kZXYgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KGJnbWFjLVxcdTAwM2VuZXRfZGV2LCBiZ21hYy1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05Mi1cXHRcXHRcXHRcXHRcXHQgYmdtYWNfYWRqdXN0X2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYz0xNTE9c3RhdGljIGludCBwbGF0Zm9ybV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTUtXFx0aWYgKGJnbWFjLVxcdTAwM2VwbGF0Lm5pY3BtX2Jhc2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNTY6XFx0XFx0cGh5X2RldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QoYmdtYWMtXFx1MDAzZW5ldF9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTctXFx0XFx0XFx0XFx0XFx0XFx0IGJnbWFjLVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTE1OS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNjA6XFx0XFx0cGh5X2RldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QoYmdtYWMtXFx1MDAzZW5ldF9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNjEtXFx0XFx0XFx0XFx0XFx0XFx0IGJnbWFjLVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTM2MD1zdGF0aWMgaW50IGdtYWNfc2V0dXBfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM2NzpcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTM2OC1cXHRcXHRcXHRcXHQgICAgIGRldi1cXHUwMDNlb2Zfbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg5MD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9kdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xOTA4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTkwOTpcXHRcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KHByaXYtXFx1MDAzZW5ldGRldiwgbnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xOTEwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmZ0Z21hYzEwMF9hZGp1c3RfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTc2OD1zdGF0aWMgaW50IGhpc2lfZmVtYWNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTgzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jOjgzMzpcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5kZXYsIG5vZGUsIGhpc2lfZmVtYWNfYWRqdXN0X2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtODM0LVxcdGlmICghcGh5KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jPTExNjM9c3RhdGljIGludCBhdmVfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmMtMTIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jOjEyMTA6XFx0cGh5ZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChuZGV2LCBucCwgYXZlX3BoeV9hZGp1c3RfbGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYy0xMjExLVxcdGlmICghcGh5ZGV2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYz0xNDkwPXN0YXRpYyBpbnQgaWNzc21fcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NtL2ljc3NtX3BydWV0aC5jLTE1NjYtXFx0LyogY29ubmVjdCBQSFkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYzoxNTY3OlxcdGVtYWMtXFx1MDAzZXBoeWRldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmRldiwgZXRoX25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc20vaWNzc21fcHJ1ZXRoLmMtMTU2OC1cXHRcXHRcXHRcXHRcXHQgICAgICBpY3NzbV9lbWFjX2FkanVzdF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmM9MTQ5Mz1zdGF0aWMgaW50IGl4cDR4eF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtMTU2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jOjE1NjU6XFx0cGh5ZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChuZGV2LCBucCwgaXhwNHh4X2FkanVzdF9saW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jLTE1NjYtXFx0aWYgKCFwaHlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTMzMz1FWFBPUlRfU1lNQk9MKG9mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMzNS0vKipcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozMzY6ICogb2ZfcGh5X2dldF9hbmRfY29ubmVjdFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMzNy0gKiAtIEdldCBwaHkgbm9kZSBhbmQgY29ubmVjdCB0byB0aGUgcGh5IGRlc2NyaWJlZCBpbiB0aGUgZGV2aWNlIHRyZWVcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM0NS0gKi9cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNDY6c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9nZXRfYW5kX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNDctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzc2LX1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNzc6RVhQT1JUX1NZTUJPTChvZl9waHlfZ2V0X2FuZF9jb25uZWN0KTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD00Mj1zdHJ1Y3QgcGh5X2RldmljZSAqXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NDM6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTQ0LVxcdFxcdCAgICAgICB2b2lkICgqaG5kbHIpKHN0cnVjdCBuZXRfZGV2aWNlICopKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTExNj1zdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxMTc6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTExOC1cXHRcXHQgICAgICAgdm9pZCAoKmhuZGxyKShzdHJ1Y3QgbmV0X2RldmljZSAqKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDU6NTkuNDAzMzQyOTk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEyODc3MjMyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24uIEkga25vdyBpdCdzIHJlYWNoYWJsZSB0aHJvdWdoIGBvZl9waHlfZ2V0X2FuZF9jb25uZWN0YCBhbmQgZGlyZWN0bHkgZnJvbSBkcml2ZXJzLiBJdCdzIHBhcnQgb2YgdGhlIE9GIE1ESU8gc3Vic3lzdGVtLCB3aGljaCBpcyByZWxldmFudCBmb3IgZGV2aWNldHJlZS1iYXNlZCBNRElPIGJ1cyByZWdpc3RyYXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBldmVuIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBsaWtlIFFFTVU/XG5cbldlbGwsIFFFTVUgKmRvZXMqIHN1cHBvcnQgZGV2aWNldHJlZSwgYW5kIGEgbG90IG9mIGRyaXZlcnMgdXNlIGl0LCBhcyBpbiB0aGUgYGZ0Z21hYzEwMC5jYCBkcml2ZXIgaW4gdGhlIEFTUEVFRCBRRU1VIG1hY2hpbmVzLiBUaGF0IG1ha2VzIGl0IG1vcmUgbGlrZWx5LiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIsIG15IHByaW1hcnkgZnV6emluZyB0b29sLCBydW5zIG9uIHg4Nl82NCBwcmltYXJpbHksIGJ1dCBhbHNvIG9uIGFybTY0IGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzLiBYODZfNjQgZG9lc24ndCBjb21tb25seSB1c2UgZGV2aWNldHJlZSwgYnV0IGl0J3MgKnBvc3NpYmxlKi5cblxuV2FpdCwgU3l6a2FsbGVyIGNhbiBpbmplY3QgZGV2aWNldHJlZSBub2RlcywgY2FuJ3QgaXQ/IE9yIHVzZSB2aXJ0dWFsIGRyaXZlcnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSB2aXJ0dWFsIGRyaXZlciB0aGF0IGNhbGxzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AsIG9yIGlmIGl0J3Mgc3RyaWN0bHkgaGFyZHdhcmUgZHJpdmVycy4gTGV0IG1lIGNoZWNrLi4uIHRoZSBsaXN0ZWQgZHJpdmVycyAoYGJjbWFzcF9pbnRmLmNgLCBgYmNtc3lzcG9ydC5jYCwgZXRjLiBhbGwgdGhlIHdheSB0byBgb2N0ZW9uL2V0aGVybmV0LmNgLCBwbHVzIHRoZSBsaXN0IHVzaW5nIGBvZl9waHlfZ2V0X2FuZF9jb25uZWN0YCkgYXJlIHByZXR0eSBtdWNoIGFsbCBoYXJkd2FyZSBkcml2ZXJzLiBJIGRvbid0IHNlZSBhbnl0aGluZyBsaWtlIGB2ZXRoYCwgYHR1bmAsIG9yIGBtYWNzZWNgIGluIHRoZXJlLCB0aGUgZHJpdmVycyBJJ2QgZXhwZWN0IHRvIHNlZSBpbiBhIHZpcnR1YWxpemVkIHNldHVwLlxuXG5CdXQsIEkgcmVtZW1iZXIgYGZpeGVkX3BoeV9yZWdpc3RlcmAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jYC4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgb2ZfbWRpby5jYCwgd2hpY2ggcGFyc2VzIHRoZSBkZXZpY2V0cmVlLiBDYW4gU3l6a2FsbGVyIHRyaWdnZXIgdGhpcyBwYXRoPyBEb2VzIGl0IGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yaywgb3IgY2FuIGl0IGluamVjdCBEVCBub2Rlcz8gSXQgbG9va3MgbGlrZSBTeXprYWxsZXIgKmRvZXNuJ3QqIGR5bmFtaWNhbGx5IGluamVjdCBEVCBub2RlcyB0byB0cmlnZ2VyIHRoZSBwcm9iZSBvZiB0aGVzZSBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGUgUUVNVSBtYWNoaW5lIGFscmVhZHkgaGFzIHRoZW0gZGVmaW5lZC5cblxuQnV0IGhvbGQgb24uLi4gYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBpcyBqdXN0IGEgZnVuY3Rpb24uIFJlYWNoYWJpbGl0eSBpcyBrZXkuIElmIGl0J3MgcmVhY2hhYmxlLCBpdCdzIHdvcnRoIGZ1enppbmchIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfT0ZfTURJT2AgaXMgZW5hYmxlZCBpbiB0eXBpY2FsIFN5emthbGxlciBjb25maWdzLiBZZXAsIGl0IHVzdWFsbHkgaXMuXG5cbk9rYXksIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgKm90aGVyKiBjYWxsZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ2OjIwLjY5MTA2OTQ0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEwMDIxMTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ2OjIwLjg3MjA4MDcyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjY5NTY3NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgSW5xdWlyeSBvbiBSZWdpc3RlciBVdGlsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UncmUgYXBwcm9hY2hpbmcgdGhpcyByZWdpc3RlciBhbGxvY2F0aW9uLCBhbmQgb25lIHNwZWNpZmljIHF1ZXN0aW9uIGp1bXBzIG91dDogV2hhdCBhYm91dCBgZml4ZWRfcGh5X3JlZ2lzdGVyYD8gSXQncyBhIGtleSBlbGVtZW50LCBhbmQgSSdtIGltbWVkaWF0ZWx5IGN1cmlvdXMgYWJvdXQgaG93IGl0cyBwcmVzZW5jZSBvciBhYnNlbmNlIGltcGFjdHMgdGhlIGN1cnJlbnQgZGVzaWduLiBIb3cgZG9lcyBpdCBmaXQgaW50byB0aGUgd2lkZXIgcGljdHVyZT8gSXMgaXQgaGFuZGxlZCBvcHRpbWFsbHkgb3IgaXMgdGhlcmUgc29tZSBvdGhlciBpc3N1ZSB0aGF0IG1heSBoYXZlIGFuIGVmZmVjdCBlbHNld2hlcmU/IFRoaXMgcXVlc3Rpb24gdGhlbiBleHRlbmRzIHRvIHRoZSBvdmVyYWxsIGltcGFjdCwgdGhlIGltcGxpY2F0aW9ucywgYW5kIHRoZSBwb3RlbnRpYWwgY29uc3RyYWludHMgdGhhdCBzdXJyb3VuZCB0aGUgcmVnaXN0ZXIuIFVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBhbnkgaGlkZGVuIGNvbXBsZXhpdHkuIFRoaXMgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHRvIGJlIHN1cmUgdGhhdCB0aGUgcmVnaXN0ZXIgaXMgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MTgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0Nzo0Ny41Njc3NTk1MzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTI1MTc5NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZml4ZWRfcGh5X3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzOT1pbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xODQ4PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlX25jc2koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4Njc6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjgtXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0yOTgxPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cXHRcXHRcXHRuZXRkZXZfaW5mbyhuZGV2LCBcXFwibm8gUEhZLCBhc3N1bWluZyBkaXJlY3QgY29ubmVjdGlvbiB0byBzd2l0Y2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XFx0XFx0XFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZoYmdfZml4ZWRfcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00NTk9cmVnaXN0ZXJfcGh5OiB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDYyOlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCk7XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDYzLVxcdGlmIChJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMTg9c3RhdGljIGludCBmaXhlZF9waHlfZ2V0X2ZyZWVfYWRkcih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMC1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTMxOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMyLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTcyLX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTczOkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3NC1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTc1OnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODEtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4MjpcXHRyZXR1cm4gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZzdGF0dXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODMtfVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODQ6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTg1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0xOT1leHRlcm4gaW50IGZpeGVkX3BoeV9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIwOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIxLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjI6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIzLVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0yOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjMwOmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzEtXFx0XFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzUtXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozNjpzdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDc6NTAuMjYwMjg0MTEyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTA2NDQ4MTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBhdGNoIHRvIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBpbiBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLiBUaGlzIGZ1bmN0aW9uIGdldHMgdHJpZ2dlcmVkIHdoZW4gYSBkZXZpY2V0cmVlIG5vZGUgaGFzIGEgYGZpeGVkLWxpbmtgIHByb3BlcnR5LiBUaGUgcXVlc3Rpb24gaXMsIGhvdyBjYW4gc3l6a2FsbGVyIGhpdCB0aGlzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhyb3VnaCBkZXZpY2V0cmVlIG92ZXJsYXlzLiBJIHJlbWVtYmVyIHN5emthbGxlciBjYW4gbG9hZCB0aG9zZSwgZG9lc24ndCBpdD8gU29tZXRoaW5nIHdpdGggYHN5el9tb3VudF9pbWFnZWAsIGFuZCBhbHNvIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBhbmQgb3RoZXIgc3lzdGVtIGNhbGxzLi4uIGV2ZW4gYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseV9pZGAgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgLiBZZXMsIHN5emthbGxlciAqZGVmaW5pdGVseSogZnV6emVzIGRldmljZXRyZWUgb3ZlcmxheXM7IGl0IGhhcyBgc3l6X21vdW50X2ltYWdlYCwgYW5kIEkga25vdyBpdCBsZXZlcmFnZXMgY29uZmlnZnMgZm9yIGxvYWRpbmcgdGhlbS5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGBDT05GSUdfT0ZfT1ZFUkxBWWAgaXMgZW5hYmxlZC4gT2theSwgbm93IGxldCdzIHRoaW5rIGFib3V0IGhvdyB0aGUgZnVuY3Rpb24gaXMgdXNlZC4gSXQncyBjYWxsZWQgYnkgZHJpdmVycyBkdXJpbmcgdGhlaXIgcHJvYmUgc2VxdWVuY2UuIFNvLCBpZiBhIGRyaXZlciBnZXRzIHByb2JlZCB2aWEgYSBEVCBvdmVybGF5LCBpdCB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbi4gU28sIGlzIHRoZXJlIGFueSBkcml2ZXIgdGhhdCB3b3VsZCBiZSBwcm9iZWQgdmlhIGEgRFQgb3ZlcmxheSBhbmQgY2FsbCB0aGlzP1xuXG5XZWxsLCBhbnkgb2YgdGhlIGRyaXZlcnMgSSBsaXN0ZWQsIGlmIHRoZXkgYXJlIGNvbXBpbGVkIGluIGFuZCB0aGVpciBoYXJkd2FyZSBpcyBwcmVzZW50LCBvciBpZiB0aGV5IGFyZSBwbGF0Zm9ybSBkcml2ZXJzIGFuZCB3ZSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIERUIG92ZXJsYXkuIENyZWF0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIGluIHRoZSBvdmVybGF5IHNvdW5kcyBsaWtlIGEgZ29vZCBhcHByb2FjaC4gQnV0LCB0aGUgaGFyZHdhcmUgd291bGQgc3RpbGwgbmVlZCB0byBiZSBwcmVzZW50IG9yIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCBkdXJpbmcgcHJvYmUuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbCEgQnV0LCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGNhbGxlZCAqZHVyaW5nKiBwcm9iZSwgbm90IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24uXG5cbkZvciBleGFtcGxlLCBgY3Bzd19wcm9iZV9kdGAgb3IgYGJjbWdlbmV0X21paV9vZl9pbml0YC4gSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuY2AgYXMgYSBwb3NzaWJpbGl0eSwgc2luY2UgdGhpcyBpcyB1c2VkIG9uIFFFTVUgQVNQRUVEIG1hY2hpbmVzLiBCdXQgc3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAuIEkgZG9uJ3QgdGhpbmsgYW55IG9mIHRob3NlIHBsYXRmb3JtIGRldmljZXMgYXJlIHByZXNlbnQgYnkgZGVmYXVsdCBpbiBgcWVtdS1zeXN0ZW0teDg2XzY0YC5cblxuV2FpdCwgaXNuJ3QgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBhbHNvIGNhbGxlZCBieSBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGA/IFRoYXQncyBhbm90aGVyIHBvdGVudGlhbCBhdmVudWUuIE9rYXksIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHdheSB0byByZWFjaCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGZyb20gdXNlcnNwYWNlICp3aXRob3V0KiBzcGVjaWZpYyBoYXJkd2FyZT8gSSBuZWVkIHRvIGNoZWNrIGlmIGl0J3MgcmVhY2hhYmxlIGZyb20gYW55IHZpcnR1YWwgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM2MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0ODowNS43NjY3MzY0NTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzQ1MjMzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYz0xMjM5PXN0cnVjdCBiY21hc3BfaW50ZiAqYmNtYXNwX2ludGVyZmFjZV9jcmVhdGUoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEyODEtXFx0aWYgKCFpbnRmLVxcdTAwM2VwaHlfZG4gXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobmRldl9kbikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM6MTI4MjpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhuZGV2X2RuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4My1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MjQ0MD1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjUzMC1cXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZG4pKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjI1MzE6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZG4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yNTMyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTUzOT1zdGF0aWMgaW50IGJjbWdlbmV0X21paV9vZl9pbml0KHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtNTUxLVxcdGlmICghcHJpdi1cXHUwMDNlcGh5X2RuIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKGRuKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjU1MjpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtNTUzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz01MjA0PWZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3Ny1cXHRpZiAoIXBoeV9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjUyNzg6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTUyNzktXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM9NjE2PXN0YXRpYyBpbnQgZ2Zhcl9vZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTc5MS1cXHRpZiAoIXByaXYtXFx1MDAzZXBoeV9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6NzkyOlxcdFxcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTc5My1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI2NDM9c3RhdGljIGludCBlbWFjX2luaXRfcGh5KHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjY3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjY3MzpcXHRcXHRcXHRyZXMgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI2NzQtXFx0XFx0XFx0bmRldi1cXHUwMDNlcGh5ZGV2ID0gb2ZfcGh5X2ZpbmRfZGV2aWNlKG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM9MTI5MT1zdGF0aWMgaW50IG5peGdlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEzNjYtXFx0aWYgKCFwaHlfbm9kZSBcXHUwMDI2XFx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jOjEzNjc6XFx0XFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTM2OC1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYz0xNDkyPXN0YXRpYyBpbnQgcmF2Yl9waHlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxMi1cXHRcXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoxNTEzOlxcdFxcdFxcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTE1MTQtXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xOTE3PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjQtXFx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGRldi1cXHUwMDNlb2Zfbm9kZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM6MTk2NTpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xOTY2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM9MTI4MT1zdGF0aWMgaW50IGNwc3dfcHJvYmVfZHQoc3RydWN0IGNwc3dfcGxhdGZvcm1fZGF0YSAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcwLVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYzoxMzcxOlxcdFxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHNsYXZlX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcyLVxcdFxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM9MTI0Mz1zdGF0aWMgaW50IGNwc3dfcHJvYmVfZHQoc3RydWN0IGNwc3dfY29tbW9uICpjcHN3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYy0xMzE3LVxcdFxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwb3J0X25wKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM6MTMxODpcXHRcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwb3J0X25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTEzMTktXFx0XFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM9MTcxOT1kYXZpbmNpX2VtYWNfb2ZfZ2V0X3BkYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBlbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYy0xNzU3LVxcdFxcdFxcdHBkYXRhLVxcdTAwM2VwaHlfaWQgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfZW1hYy5jOjE3NTg6XFx0XFx0ZWxzZSBpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApIFxcdTAwM2U9IDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMtMTc1OS1cXHRcXHRcXHRwcml2LVxcdTAwM2VwaHlfbm9kZSA9IG9mX25vZGVfZ2V0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTE2NTc9c3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcxOS1cXHR9IGVsc2UgaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGV0aF9ub2RlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjA6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZXRoX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jPTc1Nz1zdGF0aWMgaW50IHBydWV0aF9uZXRkZXZfaW5pdChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtODEzLVxcdH0gZWxzZSBpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZXRoX25vZGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jOjgxNDpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhldGhfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTgxNS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zNDY9c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9nZXRfYW5kX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM1OC1cXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzU5OlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNjAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM3Nz1FWFBPUlRfU1lNQk9MKG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzc5LS8qXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzgwOiAqIG9mX3BoeV9pc19maXhlZF9saW5rKCkgYW5kIG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKCkgbXVzdFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM4MS0gKiBzdXBwb3J0IHR3byBEVCBiaW5kaW5nczpcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQxMD1FWFBPUlRfU1lNQk9MKG9mX3BoeV9pc19maXhlZF9saW5rKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00MTEtXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDEyOmludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMy17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00NTk9cmVnaXN0ZXJfcGh5OiB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjktfVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ3MDpFWFBPUlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ4OjA3Ljc0MTI2NTYwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTM0Njg5MTIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBpbiBPRiBNRElPIGNvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXM6IHdoYXQncyB0aGUgZW50cnkgcG9pbnQ/IEkgc2VlIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AgY2FsbHMgYGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCB0aGF0J3MgYSB2aXJ0dWFsIERTQSBzd2l0Y2ggZHJpdmVyLiBEb2VzIGl0IHJlbGF0ZSB0byB0aGUgdGFyZ2V0LCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgPyBOb3BlLiBUaGUgY29kZSBjYWxscyBhIHNpbWlsYXIsIGJ1dCBkaWZmZXJlbnQgZnVuY3Rpb24uXG5cblRoZW4sIHRoZSBrZXkgaW5zaWdodCBoaXRzIG1lOiB0aGlzIHBhdGNoIGlzICpzcGVjaWZpY2FsbHkqIHdpdGhpbiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLiBDYW4gSSB0cmlnZ2VyIHRoYXQgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXk/IEFic29sdXRlbHkhIElmIEkgY2FuIGxvYWQgYSBEVCBvdmVybGF5IHRoYXQgYWRkcyBhIG5vZGUgd2l0aCBgZml4ZWQtbGlua2AgdG8gYW4gZXhpc3RpbmcgbmV0d29yayBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIG9yIGludHJvZHVjZSBhICp2aXJ0dWFsKiBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIEknbSBpbiBidXNpbmVzcy5cblxuTm93LCBkbyBhbnkgdmlydHVhbCBkZXZpY2VzIGV2ZW4gKnVzZSogYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYD8gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyBubyDigJMgaXQgbG9va3MgbGlrZSBhbGwgdGhlIGRyaXZlcnMgbGlzdGVkIGFyZSBoYXJkd2FyZSBkcml2ZXJzLlxuXG5CdXQgd2FpdCEgSG9sZCBvbi4gSSBzZWUgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgIGdldHMgY2FsbGVkIGJ5ICptYW55KiBkcml2ZXJzLiBJZiBJIGxvYWQgYSBEVCBvdmVybGF5IGZvciBhIGhhcmR3YXJlIGRyaXZlciB0aGF0J3MgYWxyZWFkeSBwcmVzZW50IGluIFFFTVUg4oCTIHNvbWV0aGluZyBsaWtlIGBmdGdtYWMxMDBgIG9yIGBmZWNgIOKAkyBJIHRoaW5rIEkgY2FuIG1ha2UgaXQgY2FsbCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLiBUaGlzIGlzIHByb21pc2luZy5cblxuQW5kIG9mIGNvdXJzZSwgU3l6a2FsbGVyIGRvZXMgYSBsb3Qgb2YgdGVzdGluZyBvbiBgcWVtdS1zeXN0ZW0tYXJtYCBhbmQgYHFlbXUtc3lzdGVtLWFhcmNoNjRgIHdoZXJlIGBmZWNgIG9yIGBmdGdtYWMxMDBgIG1pZ2h0IGFscmVhZHkgYmUgcHJlc2VudC4gQmluZ28hXG5cblNvIHRoZSBwYXRjaCBpdHNlbGYgaXMgc21hbGwgYnV0IHRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbC4gSXQncyBzZXR0aW5nIGBwaHlkZXYtXHUwMDNlbWRpby5kZXYuZndub2RlID0gb2ZfZndub2RlX2hhbmRsZShucCk7YCB3aGljaCBzZWVtcyBjb3JlIHRvIHRoZSBPRiBNRElPIGNvZGUuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIERUIG92ZXJsYXkgaW5qZWN0aW9uLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHdoYXQgaXMgZXNzZW50aWFsbHkgYSBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50LlxuXG5XaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQ/IEl0IHNlZW1zIEkgbmVlZCBgQ09ORklHX09GX01ESU9gIGFuZCBgQ09ORklHX0ZJWEVEX1BIWWAuIExldCdzIGp1c3QgZG91YmxlIGNoZWNrIHRoYXQgYENPTkZJR19GSVhFRF9QSFlgIGlzIHJlYWxseSBhIHJlcXVpcmVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI4NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0OToyNy4wODgxNjAxNDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjIxNDUxOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZml4ZWRfcGh5X3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDk6MjcuNjIwMzg2NDIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjA4NTI4NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQSFkgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGBmaXhlZF9waHlgIGRyaXZlciBpcyBoYW5kbGVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBhbGwgdGhlIFBIWSBkcml2ZXIgY29tcGlsYXRpb24gbG9naWMgaXMgdXN1YWxseSBkZWZpbmVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcnVsZXMgb3IgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYGZpeGVkX3BoeWAgdGhlcmUuIEknbGwgYmUgbG9va2luZyBmb3IgaG93IGl0J3MgaW50ZWdyYXRlZCwgYW55IHNwZWNpYWwgZmxhZ3MsIG9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgUEhZIGRyaXZlcnMuIEl0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjU1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDk6MzIuNDgxMjQyMjg1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk2NjAzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZml4ZWRfcGh5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX0RQODNURzcyMF9QSFkpXFx0Kz0gZHA4M3RnNzIwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0ZJWEVEX1BIWSlcXHRcXHQrPSBmaXhlZF9waHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfSUNQTFVTX1BIWSlcXHQrPSBpY3BsdXMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0OTozMi42OTA5MTE4MDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODk4NDg0MzI4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBldmFsdWF0aW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTmVlZCBmb3IgQ09ORklHX0ZJWEVEX1BIWSoqXG5cbk9rYXksIHNvIHRoZSBzeXN0ZW0gaXMgdGVsbGluZyBtZSBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgbmVjZXNzYXJ5LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCAqd2h5Ki4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gVGhlIG1vc3QgbGlrZWx5IGFyZWEgdG8gc3RhcnQgcG9raW5nIGFyb3VuZCBpcyBwcm9iYWJseSBpbiB0aGUgYG9mX21kaW8uY2AgZmlsZSDigJMgaXQgZGVhbHMgd2l0aCBNRElPIChNYW5hZ2VtZW50IERhdGEgSW5wdXQvT3V0cHV0KSB3aGljaCBpcyBvZnRlbiB1c2VkIGZvciBQSFkgKFBoeXNpY2FsIExheWVyKSBjb21tdW5pY2F0aW9uLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBEZXZpY2UgVHJlZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYG9mX21kaW8uY2AgYW5kIHNlZSB3aGVyZSBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgdXNlZCBpbiB0aGF0IGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU0NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjUxOjAyLjUzOTM0OTA0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU0MDU3ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBPRl9NRElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9OD1jb25maWcgRldOT0RFX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTM6Y29uZmlnIE9GX01ESU9cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTQtXFx0ZGVmX3RyaXN0YXRlIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjUxOjA0LjE5MzQxNDAyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ2OTk4NzA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBvZiBPRl9NRElPKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgT0ZfTURJT2AuLi4gZXNzZW50aWFsbHksIHRoYXQncyBkZWZpbmVkIGFzIGEgdHJpc3RhdGUgZGVwZW5kZW5jeSBvbiBgT0ZgLiBTbywgdGhlIGltcGxpY2F0aW9ucyBhcmUgc3RyYWlnaHRmb3J3YXJkOiBJZiB0aGUgYmFzZSBvcHRpb24gYE9GYCBpcyBlbmFibGVkLCB0aGVuIGBPRl9NRElPYCBiZWNvbWVzIGFjdGl2ZS4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE9GX01ESU9gIGFuZCB0aGUgYEZJWEVEX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODYwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTE6MzAuNjYzNDAzNDUzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg3NDM3OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGSVhFRF9QSFlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDk9Y29uZmlnIFBIWUxJQl9MRURTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01NS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo1Njpjb25maWcgRklYRURfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTctXFx0dHJpc3RhdGUgXFxcIk1ESU8gQnVzL1BIWSBlbXVsYXRpb24gd2l0aCBmaXhlZCBzcGVlZC9saW5rIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjUxOjMyLjQ1MDg1MDgyMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQxNDQ5MTk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgQ09ORklHX09GX01ESU9gIGFuZCBgQ09ORklHX0ZJWEVEX1BIWWAganVtcCBvdXQgYXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBoZXJlLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmdW5jdGlvbjsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNoYW5naW5nIHdpdGggaXQuIElzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbj8gTGV0J3MgY2hlY2sgdGhlIHBhdGNoLlxuXG5BaCwgaXQgc2VlbXMgdGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuIExldCBtZSBtYWtlIHN1cmUuXG5gYGBjXG5yZWdpc3Rlcl9waHk6IHtcblx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcblxuXHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2c3RhdHVzLCBucCk7XG5cdGlmIChJU19FUlIocGh5ZGV2KSlcblx0XHRyZXR1cm4gUFRSX0VSUihwaHlkZXYpO1xuXG5cdHBoeWRldi1cdTAwM2VtZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTtcblx0cmV0dXJuIDA7XG59XG5gYGBcblllcywgYWxsIHRoaXMgcGF0Y2ggZG9lcyBpcyBzZXQgdGhlIGBmd25vZGVgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCBhbGxvd3Mgb3RoZXIgY29kZSB0byBkaXNjb3ZlciB0aGUgZmlybXdhcmUgbm9kZSBvZiB0aGUgZml4ZWQgUEhZIGRldmljZS4gSXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgdGhhdCdzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY2FuIGxlYWQgdG8gc3VidGxlIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJ2xsIGZsYWcgdGhpcyBhcyBoYXZpbmcgcG90ZW50aWFsIGZvciBmdXp6aW5nLlxuXG5NeSBjb25jbHVzaW9uIGlzOiAqKldvcnRoRnV6emluZz10cnVlKiouXG5cblNwZWNpZmljYWxseSwgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuXG5cbldlIHdpbGwgZW5hYmxlIHRoZSBjb25maWdzOiBgT0ZfTURJT2AsIGBGSVhFRF9QSFlgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBieSBzZXR0aW5nIHRoZSBgZndub2RlYCBvZiB0aGUgcmVnaXN0ZXJlZCBmaXhlZCBQSFkgZGV2aWNlLiBUaGlzIGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUgb2YgbmV0d29yayBkcml2ZXJzIHVzaW5nIGZpeGVkLWxpbmsgaW4gdGhlaXIgZGV2aWNldHJlZSBub2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE2NCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTE6NDIuODY1MzQ1ODU2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MTc3MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPRl9NRElPXCIsXG4gICAgXCJGSVhFRF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT0ZfTURJT1wiLFxuICAgIFwiRklYRURfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtYWtlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rIGJ5IHNldHRpbmcgdGhlIGZ3bm9kZSBvZiB0aGUgcmVnaXN0ZXJlZCBmaXhlZCBQSFkgZGV2aWNlLiBUaGlzIGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUgb2YgbmV0d29yayBkcml2ZXJzIHVzaW5nIGZpeGVkLWxpbmsgaW4gdGhlaXIgZGV2aWNldHJlZSBub2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowhfs5w[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-26 22:25:15 +0000 UTC FinishedAt: 2026-06-26 22:51:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF_MDIO", "FIXED_PHY" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OF_MDIO", "FIXED_PHY" ], "series_id": "820c0c2c-85c9-4a98-bc7d-1cdac18a855d" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "of_phy_register_fixed_link" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+N208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GX01ESU8mIzM0OywKICAgICYjMzQ7RklYRURfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayBieSBzZXR0aW5nIHRoZSBmd25vZGUgb2YgdGhlIHJlZ2lzdGVyZWQgZml4ZWQgUEhZIGRldmljZS4gVGhpcyBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlIG9mIG5ldHdvcmsgZHJpdmVycyB1c2luZyBmaXhlZC1saW5rIGluIHRoZWlyIGRldmljZXRyZWUgbm9kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDdlNWQ3NjRjYTA1YTNkMTI5ZDZlMTNjZTMzYTNjYmQyMDY2NjA4MmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjo0NDo0MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5pbmRleCBiOGQyOThjMDRkM2ZmMC4uMGRkMjVkOTRmZWMwOTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbkBAIC00NTYsOCAmIzQzOzQ1NiwxNiBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcbiBcdHJldHVybiAtRU5PREVWO1xuIFxuLXJlZ2lzdGVyX3BoeTpcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApKTtcbiYjNDM7cmVnaXN0ZXJfcGh5OiB7XG4mIzQzO1x0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcbiYjNDM7XG4mIzQzO1x0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApO1xuJiM0MztcdGlmIChJU19FUlIocGh5ZGV2KSlcbiYjNDM7XHRcdHJldHVybiBQVFJfRVJSKHBoeWRldik7XG4mIzQzO1xuJiM0MztcdHBoeWRldi1cdTAwM2VtZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTtcbiYjNDM7XHRyZXR1cm4gMDtcbiYjNDM7fVxuIH1cbiBFWFBPUlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTtcbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT42bTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPRl9NRElPJiMzNDssCiAgICAmIzM0O0ZJWEVEX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O29mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDdlNWQ3NjRjYTA1YTNkMTI5ZDZlMTNjZTMzYTNjYmQyMDY2NjA4MmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1biAyNiAyMjo0NDo0MSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMKaW5kZXggYjhkMjk4YzA0ZDNmZjAuLjBkZDI1ZDk0ZmVjMDk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYwpAQCAtNDU2LDggJiM0Mzs0NTYsMTYgQEAgaW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApCiAKIAlyZXR1cm4gLUVOT0RFVjsKIAotcmVnaXN0ZXJfcGh5OgotCXJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKCZhbXA7c3RhdHVzLCBucCkpOwomIzQzO3JlZ2lzdGVyX3BoeTogewomIzQzOwlzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2OwomIzQzOwomIzQzOwlwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoJmFtcDtzdGF0dXMsIG5wKTsKJiM0MzsJaWYgKElTX0VSUihwaHlkZXYpKQomIzQzOwkJcmV0dXJuIFBUUl9FUlIocGh5ZGV2KTsKJiM0MzsKJiM0MzsJcGh5ZGV2LSZndDttZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQogfQogRVhQT1JUX1NZTUJPTChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayk7CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTkxNwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBGaXhlZCBQSFkgUmVnaXN0cmF0aW9uIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQmIzM5O3MgdHdlYWtpbmcgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCB3aXRoaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSB3YXkgdGhlIGZpeGVkIFBIWSBpcyByZWdpc3RlcmVkLiBJbnN0ZWFkIG9mIGEgZGlyZWN0IHJldHVybiwgaXQmIzM5O3Mgbm93IGEgYmxvY2sgdGhhdCBkb2VzIGEgbGl0dGxlIG1vcmUuIFNwZWNpZmljYWxseSwgaXQgc2VlbXMgdG8gYmUgc2V0dGluZyB0aGUgYGZ3bm9kZWAgZm9yIHRoZSBgcGh5ZGV2LSZndDttZGlvLmRldmAgYWZ0ZXIgYSBzdWNjZXNzZnVsIHJlZ2lzdHJhdGlvbi4gVGhlIG9yaWdpbmFsIGNvZGUgdXNlZCBgUFRSX0VSUl9PUl9aRVJPYCBvbiB0aGUgcmV0dXJuZWQgYHBoeWRldmAgd2hpY2ggd291bGQgc2V0IHRoZSByZXR1cm4gdmFsdWUgdG8gdGhlIGVycm9yIGlmIHNvbWV0aGluZyB3ZW50IHdyb25nLCBvciBgMGAgaWYgaXQgZGlkbiYjMzk7dC4gVGhpcyBjaGFuZ2UgbG9va3MgZnVuY3Rpb25hbCwgcmlnaHQ/IFdlJiMzOTtyZSBlZmZlY3RpdmVseSBhZGRpbmcgYSBzdGVwIHRvIGFzc29jaWF0ZSB0aGUgZGV2aWNlJiMzOTtzIGZpcm13YXJlIG5vZGUuCgpTbywgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGNvbmZpcm0gdGhhdCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJdCYjMzk7cyBhbiBleHBvcnRlZCBzeW1ib2wsIHNvIHRoYXTigJlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGljaCBjb25maWd1cmF0aW9ucyBicmluZyBpbiBgb2ZfbWRpby5jYCBzbyBJIGNhbiB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHRoaXMgY2hhbmdlIG9wZXJhdGVzIGluLiBJIG5lZWQgdG8gYmUgc3VyZSB0aGUgY2hhbmdlIGlzIHByb3Blcmx5IGludGVncmF0ZWQgaW4gYSB3YXkgdGhhdCBkb2VzbiYjMzk7dCBicmVhayBvdGhlciBzeXN0ZW1zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O29mX21kaW8ubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvbWRpby9NYWtlZmlsZT01PW9iai0kKENPTkZJR19GV05PREVfTURJTylcdCYjNDM7PSBmd25vZGVfbWRpby5vXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlOjY6b2JqLSQoQ09ORklHX09GX01ESU8pXHRcdCYjNDM7PSBvZl9tZGlvLm9cbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGUtNy1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNTQ0CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogMzMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOgoKKipEZWJ1Z2dpbmcgTXkgRHJpdmVyIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIHNvIEkgc2VlIGBDT05GSUdfT0ZfTURJT2AgaW4gdGhlIG1peCwgYW5kIGl0JiMzOTtzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGF0IHRoaXMgY29uZmlnIG9wdGlvbiBpcyBkZWZpbml0ZWx5IG5lY2Vzc2FyeSBoZXJlLCBhbmQgd2hlcmUgaXQgZml0cyBpbiB0aGUgZ3JlYXRlciBwaWN0dXJlLgoKTXkgbmV4dCBzdGVwIGlzIHRvIHF1aWNrbHkgc2VlIGlmIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgaXMgYWN0dWFsbHkgYmVpbmcgdXRpbGl6ZWQgYW55d2hlcmUgaW4gdGhlIGNvZGViYXNlLiBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgZXZlcnl0aGluZyBpcyBiZWluZyB1c2VkIGFzIGludGVuZGVkLiBJZiBub3QsIGl0IG1lYW5zIHRoZXJlJiMzOTtzIGEgcHJvYmxlbSB3aXRoIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cbi0tXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM1Ni0xNC4gUmVtb3ZlIGNhbGxzIHRvIG9mX3BhcnNlX3BoYW5kbGUoKSBmb3IgdGhlIFBIWSxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzU3OiAgICBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluaygpIGZvciBmaXhlZCBsaW5rcyBldGMuIGZyb20gdGhlIHByb2JlXG5Eb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0LTM1OC0gICAgZnVuY3Rpb24sIGFuZCByZXBsYWNlIHdpdGg6XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTEyMzk9c3RydWN0IGJjbWFzcF9pbnRmICpiY21hc3BfaW50ZXJmYWNlX2NyZWF0ZShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEyODEtXHRpZiAoIWludGYtXHUwMDNlcGh5X2RuIFx1MDAyNlx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhuZGV2X2RuKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jOjEyODI6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5kZXZfZG4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEyODMtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MjQ0MD1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTI1MzAtXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZG4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjUzMTpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZG4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTI1MzItXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYz01Mzk9c3RhdGljIGludCBiY21nZW5ldF9taWlfb2ZfaW5pdChzdHJ1Y3QgYmNtZ2VuZXRfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTEtXHRpZiAoIXByaXYtXHUwMDNlcGh5X2RuIFx1MDAyNlx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhkbikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjU1MjpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZG4pO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtNTUzLVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTUyMDQ9ZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3Ny1cdGlmICghcGh5X25vZGUgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTI3ODpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3OS1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM9NjE2PXN0YXRpYyBpbnQgZ2Zhcl9vZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy03OTEtXHRpZiAoIXByaXYtXHUwMDNlcGh5X25vZGUgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzo3OTI6XHRcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtNzkzLVx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYz0yNjQzPXN0YXRpYyBpbnQgZW1hY19pbml0X3BoeShzdHJ1Y3QgZW1hY19pbnN0YW5jZSAqZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNjcyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jOjI2NzM6XHRcdFx0cmVzID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI2NzQtXHRcdFx0bmRldi1cdTAwM2VwaHlkZXYgPSBvZl9waHlfZmluZF9kZXZpY2UobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM9MTI5MT1zdGF0aWMgaW50IG5peGdlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMzY2LVx0aWYgKCFwaHlfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsocGRldi1cdTAwM2VkZXYub2Zfbm9kZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTM2NzpcdFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocGRldi1cdTAwM2VkZXYub2Zfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEzNjgtXHRcdGlmIChlcnIgXHUwMDNjIDApIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTE0OTI9c3RhdGljIGludCByYXZiX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxMi1cdFx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoxNTEzOlx0XHRcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxNC1cdFx0XHRpZiAoZXJyKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xOTE3PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xOTY0LVx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGRldi1cdTAwM2VvZl9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jOjE5NjU6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGRldi1cdTAwM2VvZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xOTY2LVx0XHRpZiAocmV0KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYz0xMjgxPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19wbGF0Zm9ybV9kYXRhICpkYXRhLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcwLVx0XHRcdCAqL1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jOjEzNzE6XHRcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc2xhdmVfbm9kZSk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmMtMTM3Mi1cdFx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYz0xMjQzPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19jb21tb24gKmNwc3cpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYy0xMzE3LVx0XHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsocG9ydF9ucCkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM6MTMxODpcdFx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwb3J0X25wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTMxOS1cdFx0XHRpZiAocmV0KSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM9MTcxOT1kYXZpbmNpX2VtYWNfb2ZfZ2V0X3BkYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBlbWFjX3ByaXYgKnByaXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMtMTc1Ny1cdFx0XHRwZGF0YS1cdTAwM2VwaHlfaWQgPSBOVUxMO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM6MTc1ODpcdFx0ZWxzZSBpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApIFx1MDAzZT0gMClcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfZW1hYy5jLTE3NTktXHRcdFx0cHJpdi1cdTAwM2VwaHlfbm9kZSA9IG9mX25vZGVfZ2V0KG5wKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYz0xNjU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzE5LVx0fSBlbHNlIGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhldGhfbm9kZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjA6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGV0aF9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM9NzU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtODEzLVx0fSBlbHNlIGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhldGhfbm9kZSkpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYzo4MTQ6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGV0aF9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYy04MTUtXHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zNDY9c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9nZXRfYW5kX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNTgtXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNTk6XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2MC1cdFx0aWYgKHJldCBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM3Nz1FWFBPUlRfU1lNQk9MKG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM3OS0vKlxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzgwOiAqIG9mX3BoeV9pc19maXhlZF9saW5rKCkgYW5kIG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKCkgbXVzdFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgxLSAqIHN1cHBvcnQgdHdvIERUIGJpbmRpbmdzOlxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQxMD1FWFBPUlRfU1lNQk9MKG9mX3BoeV9pc19maXhlZF9saW5rKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQxMjppbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMy17XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDU5PXJlZ2lzdGVyX3BoeToge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2OS19XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0NzA6RVhQT1JUX1NZTUJPTChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NzEtXG4tLVxuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC5jPTY3Mj1zdGF0aWMgaW50IGN2bV9vY3RfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LmMtODk3LVx0XHRcdGlmIChwcml2LVx1MDAzZW9mX25vZGUgXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKHByaXYtXHUwMDNlb2Zfbm9kZSkpIHtcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQuYzo4OTg6XHRcdFx0XHRpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocHJpdi1cdTAwM2VvZl9ub2RlKSkge1xuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC5jLTg5OS1cdFx0XHRcdFx0bmV0ZGV2X2VycihkZXYsIFwmIzM0O0ZhaWxlZCB0byByZWdpc3RlciBmaXhlZCBsaW5rIGZvciBpbnRlcmZhY2UgJWQsIHBvcnQgJWRcXG5cJiMzNDssXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDY9c3RydWN0IG1paV9idXMgKm9mX21kaW9fZmluZF9idXMoc3RydWN0IGRldmljZV9ub2RlICptZGlvX25wKTtcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oOjQ3OmludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTQ4LXZvaWQgb2ZfcGh5X2RlcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xMjg9c3RhdGljIGlubGluZSBpbnQgb2ZfbWRpb19wYXJzZV9hZGRyKHN0cnVjdCBkZXZpY2UgKmRldixcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xMzItfVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6MTMzOnN0YXRpYyBpbmxpbmUgaW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xMzQte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5NzAKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA2NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBVc2FnZSoqCgpSaWdodCwgc28gYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYC4uLiBJIGtub3cgdGhhdCBmdW5jdGlvbiBnZXRzIGFyb3VuZCwgcG9wcyB1cCBpbiBhIGZldyBwbGFjZXMuIFRoZSBpbW1lZGlhdGUgcG9pbnQgb2YgaW50ZXJlc3QgaXMgaXRzIHVzZSB3aXRoaW4gYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgLCB3aGljaCwgZnJvbSBtZW1vcnksIGxpdmVzIGluIGBkcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY2AuIFRoZSBxdWVzdGlvbiBpcywgaG93IGJyb2FkbHkgaXMgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgIGl0c2VsZiB1dGlsaXplZD8gVW5kZXJzdGFuZGluZyB0aGUgY2FsbCBwYXRocyBmcm9tIHRoZXJlIHdpbGwgZ2l2ZSBtZSBhIGNsZWFyZXIgcGljdHVyZSBvZiB0aGUgaW1wYWN0IGlmIHRoZXJlJiMzOTtzIGFueSBuZWVkIGZvciBjaGFuZ2VzLCBvcHRpbWl6YXRpb25zLCBvciBwb3RlbnRpYWwgZGVidWdnaW5nIGluIHRoZSBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGZ1bmN0aW9uLiBUaW1lIHRvIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3MgY2FsbGluZyBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b2ZfcGh5X2dldF9hbmRfY29ubmVjdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTM1Mz1zdGF0aWMgaW50IG93bF9lbWFjX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYWN0aW9ucy9vd2wtZW1hYy5jLTEzNTgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM1OTpcdHBoeSA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmV0ZGV2LCBkZXYtXHUwMDNlb2Zfbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzYwLVx0XHRcdFx0ICAgICBvd2xfZW1hY19hZGp1c3RfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTg1PXN0YXRpYyBpbnQgYmNtYV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05MC1cdC8qIERUIGluZm8gc2hvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1iY21hLmM6OTE6XHRwaHlfZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChiZ21hYy1cdTAwM2VuZXRfZGV2LCBiZ21hYy1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05Mi1cdFx0XHRcdFx0IGJnbWFjX2FkanVzdF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jPTE1MT1zdGF0aWMgaW50IHBsYXRmb3JtX3BoeV9jb25uZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTUtXHRpZiAoYmdtYWMtXHUwMDNlcGxhdC5uaWNwbV9iYXNlKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNTY6XHRcdHBoeV9kZXYgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KGJnbWFjLVx1MDAzZW5ldF9kZXYsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTE1Ny1cdFx0XHRcdFx0XHQgYmdtYWMtXHUwMDNlZGV2LVx1MDAzZW9mX25vZGUsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTktXHRlbHNlXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jOjE2MDpcdFx0cGh5X2RldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QoYmdtYWMtXHUwMDNlbmV0X2RldixcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLXBsYXRmb3JtLmMtMTYxLVx0XHRcdFx0XHRcdCBiZ21hYy1cdTAwM2VkZXYtXHUwMDNlb2Zfbm9kZSxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTM2MD1zdGF0aWMgaW50IGdtYWNfc2V0dXBfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0zNjYtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM2NzpcdHBoeSA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmV0ZGV2LFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvY29ydGluYS9nZW1pbmkuYy0zNjgtXHRcdFx0XHQgICAgIGRldi1cdTAwM2VvZl9ub2RlLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg5MD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9kdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTkwOC1cdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE5MDk6XHRcdHBoeSA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QocHJpdi1cdTAwM2VuZXRkZXYsIG5wLFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xOTEwLVx0XHRcdFx0XHQgICAgIFx1MDAyNmZ0Z21hYzEwMF9hZGp1c3RfbGluayk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYz03Njg9c3RhdGljIGludCBoaXNpX2ZlbWFjX2Rydl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtODMyLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYzo4MzM6XHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5kZXYsIG5vZGUsIGhpc2lfZmVtYWNfYWRqdXN0X2xpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpc2lfZmVtYWMuYy04MzQtXHRpZiAoIXBoeSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmM9MTE2Mz1zdGF0aWMgaW50IGF2ZV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmMtMTIwOS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmM6MTIxMDpcdHBoeWRldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmRldiwgbnAsIGF2ZV9waHlfYWRqdXN0X2xpbmspO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYy0xMjExLVx0aWYgKCFwaHlkZXYpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYz0xNDkwPXN0YXRpYyBpbnQgaWNzc21fcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYy0xNTY2LVx0LyogY29ubmVjdCBQSFkgKi9cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NtL2ljc3NtX3BydWV0aC5jOjE1Njc6XHRlbWFjLVx1MDAzZXBoeWRldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmRldiwgZXRoX25vZGUsXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYy0xNTY4LVx0XHRcdFx0XHQgICAgICBpY3NzbV9lbWFjX2FkanVzdF9saW5rKTtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jPTE0OTM9c3RhdGljIGludCBpeHA0eHhfZXRoX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYy0xNTY0LVxuZHJpdmVycy9uZXQvZXRoZXJuZXQveHNjYWxlL2l4cDR4eF9ldGguYzoxNTY1Olx0cGh5ZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChuZGV2LCBucCwgaXhwNHh4X2FkanVzdF9saW5rKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtMTU2Ni1cdGlmICghcGh5ZGV2KSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9MzMzPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2Nvbm5lY3QpO1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMzNS0vKipcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjMzNjogKiBvZl9waHlfZ2V0X2FuZF9jb25uZWN0XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zMzctICogLSBHZXQgcGh5IG5vZGUgYW5kIGNvbm5lY3QgdG8gdGhlIHBoeSBkZXNjcmliZWQgaW4gdGhlIGRldmljZSB0cmVlXG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzQ1LSAqL1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzQ2OnN0cnVjdCBwaHlfZGV2aWNlICpvZl9waHlfZ2V0X2FuZF9jb25uZWN0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNDctXHRcdFx0XHRcdCAgc3RydWN0IGRldmljZV9ub2RlICpucCxcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzYtfVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6Mzc3OkVYUE9SVF9TWU1CT0wob2ZfcGh5X2dldF9hbmRfY29ubmVjdCk7XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzgtXG4tLVxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg9NDI9c3RydWN0IHBoeV9kZXZpY2UgKlxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NDM6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtNDQtXHRcdCAgICAgICB2b2lkICgqaG5kbHIpKHN0cnVjdCBuZXRfZGV2aWNlICopKTtcbi0tXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD0xMTY9c3RhdGljIGlubGluZSBzdHJ1Y3QgcGh5X2RldmljZSAqXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxMTc6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtMTE4LVx0XHQgICAgICAgdm9pZCAoKmhuZGxyKShzdHJ1Y3QgbmV0X2RldmljZSAqKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjIwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNjc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZm9yIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24uIEkga25vdyBpdCYjMzk7cyByZWFjaGFibGUgdGhyb3VnaCBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAgYW5kIGRpcmVjdGx5IGZyb20gZHJpdmVycy4gSXQmIzM5O3MgcGFydCBvZiB0aGUgT0YgTURJTyBzdWJzeXN0ZW0sIHdoaWNoIGlzIHJlbGV2YW50IGZvciBkZXZpY2V0cmVlLWJhc2VkIE1ESU8gYnVzIHJlZ2lzdHJhdGlvbi4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGNhbiB0aGlzIGV2ZW4gYmUgdHJpZ2dlcmVkIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQsIGxpa2UgUUVNVT8KCldlbGwsIFFFTVUgKmRvZXMqIHN1cHBvcnQgZGV2aWNldHJlZSwgYW5kIGEgbG90IG9mIGRyaXZlcnMgdXNlIGl0LCBhcyBpbiB0aGUgYGZ0Z21hYzEwMC5jYCBkcml2ZXIgaW4gdGhlIEFTUEVFRCBRRU1VIG1hY2hpbmVzLiBUaGF0IG1ha2VzIGl0IG1vcmUgbGlrZWx5LiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIsIG15IHByaW1hcnkgZnV6emluZyB0b29sLCBydW5zIG9uIHg4Nl82NCBwcmltYXJpbHksIGJ1dCBhbHNvIG9uIGFybTY0IGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzLiBYODZfNjQgZG9lc24mIzM5O3QgY29tbW9ubHkgdXNlIGRldmljZXRyZWUsIGJ1dCBpdCYjMzk7cyAqcG9zc2libGUqLgoKV2FpdCwgU3l6a2FsbGVyIGNhbiBpbmplY3QgZGV2aWNldHJlZSBub2RlcywgY2FuJiMzOTt0IGl0PyBPciB1c2UgdmlydHVhbCBkcml2ZXJzLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIHZpcnR1YWwgZHJpdmVyIHRoYXQgY2FsbHMgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCwgb3IgaWYgaXQmIzM5O3Mgc3RyaWN0bHkgaGFyZHdhcmUgZHJpdmVycy4gTGV0IG1lIGNoZWNrLi4uIHRoZSBsaXN0ZWQgZHJpdmVycyAoYGJjbWFzcF9pbnRmLmNgLCBgYmNtc3lzcG9ydC5jYCwgZXRjLiBhbGwgdGhlIHdheSB0byBgb2N0ZW9uL2V0aGVybmV0LmNgLCBwbHVzIHRoZSBsaXN0IHVzaW5nIGBvZl9waHlfZ2V0X2FuZF9jb25uZWN0YCkgYXJlIHByZXR0eSBtdWNoIGFsbCBoYXJkd2FyZSBkcml2ZXJzLiBJIGRvbiYjMzk7dCBzZWUgYW55dGhpbmcgbGlrZSBgdmV0aGAsIGB0dW5gLCBvciBgbWFjc2VjYCBpbiB0aGVyZSwgdGhlIGRyaXZlcnMgSSYjMzk7ZCBleHBlY3QgdG8gc2VlIGluIGEgdmlydHVhbGl6ZWQgc2V0dXAuCgpCdXQsIEkgcmVtZW1iZXIgYGZpeGVkX3BoeV9yZWdpc3RlcmAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jYC4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgb2ZfbWRpby5jYCwgd2hpY2ggcGFyc2VzIHRoZSBkZXZpY2V0cmVlLiBDYW4gU3l6a2FsbGVyIHRyaWdnZXIgdGhpcyBwYXRoPyBEb2VzIGl0IGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yaywgb3IgY2FuIGl0IGluamVjdCBEVCBub2Rlcz8gSXQgbG9va3MgbGlrZSBTeXprYWxsZXIgKmRvZXNuJiMzOTt0KiBkeW5hbWljYWxseSBpbmplY3QgRFQgbm9kZXMgdG8gdHJpZ2dlciB0aGUgcHJvYmUgb2YgdGhlc2UgaGFyZHdhcmUgZHJpdmVycyB1bmxlc3MgdGhlIFFFTVUgbWFjaGluZSBhbHJlYWR5IGhhcyB0aGVtIGRlZmluZWQuCgpCdXQgaG9sZCBvbi4uLiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGp1c3QgYSBmdW5jdGlvbi4gUmVhY2hhYmlsaXR5IGlzIGtleS4gSWYgaXQmIzM5O3MgcmVhY2hhYmxlLCBpdCYjMzk7cyB3b3J0aCBmdXp6aW5nISBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaWYgYENPTkZJR19PRl9NRElPYCBpcyBlbmFibGVkIGluIHR5cGljYWwgU3l6a2FsbGVyIGNvbmZpZ3MuIFllcCwgaXQgdXN1YWxseSBpcy4KCk9rYXksIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlICpvdGhlciogY2FsbGVycy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5NTE4CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkluaXRpYWwgSW5xdWlyeSBvbiBSZWdpc3RlciBVdGlsaXphdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB3ZSYjMzk7cmUgYXBwcm9hY2hpbmcgdGhpcyByZWdpc3RlciBhbGxvY2F0aW9uLCBhbmQgb25lIHNwZWNpZmljIHF1ZXN0aW9uIGp1bXBzIG91dDogV2hhdCBhYm91dCBgZml4ZWRfcGh5X3JlZ2lzdGVyYD8gSXQmIzM5O3MgYSBrZXkgZWxlbWVudCwgYW5kIEkmIzM5O20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCBob3cgaXRzIHByZXNlbmNlIG9yIGFic2VuY2UgaW1wYWN0cyB0aGUgY3VycmVudCBkZXNpZ24uIEhvdyBkb2VzIGl0IGZpdCBpbnRvIHRoZSB3aWRlciBwaWN0dXJlPyBJcyBpdCBoYW5kbGVkIG9wdGltYWxseSBvciBpcyB0aGVyZSBzb21lIG90aGVyIGlzc3VlIHRoYXQgbWF5IGhhdmUgYW4gZWZmZWN0IGVsc2V3aGVyZT8gVGhpcyBxdWVzdGlvbiB0aGVuIGV4dGVuZHMgdG8gdGhlIG92ZXJhbGwgaW1wYWN0LCB0aGUgaW1wbGljYXRpb25zLCBhbmQgdGhlIHBvdGVudGlhbCBjb25zdHJhaW50cyB0aGF0IHN1cnJvdW5kIHRoZSByZWdpc3Rlci4gVWx0aW1hdGVseSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUgYW5kIGFueSBoaWRkZW4gY29tcGxleGl0eS4gVGhpcyB3YXJyYW50cyBmdXJ0aGVyIGludmVzdGlnYXRpb24gdG8gYmUgc3VyZSB0aGF0IHRoZSByZWdpc3RlciBpcyBiZWluZyBoYW5kbGVkIGNvcnJlY3RseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jPTQ4Mj1zdGF0aWMgaW50IF9faW5pdCBkc2FfbG9vcF9pbml0KHZvaWQpXG4tLVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgTlVNX0ZJWEVEX1BIWVM7IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmM6NDkyOlx0XHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XG5kcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYy00OTMtXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlx0XHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXHRcdGlmICghSVNfRVJSKHBoeWRldikpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYz0xNDM5PWludCBiZ21hY19waHlfY29ubmVjdF9kaXJlY3Qoc3RydWN0IGJnbWFjICpiZ21hYylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jOjE0NDk6XHRwaHlfZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmMtMTQ1MC1cdGlmIChJU19FUlIocGh5X2RldikpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jPTE4NDg9c3RhdGljIGludCBmdGdtYWMxMDBfcHJvYmVfbmNzaShzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTg2NzpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2OC1cdGlmIChJU19FUlIocGh5ZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTI5ODE9c3RhdGljIGludCBmZWNfZW5ldF9taWlfcHJvYmUoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cdFx0XHRuZXRkZXZfaW5mbyhuZGV2LCBcJiMzNDtubyBQSFksIGFzc3VtaW5nIGRpcmVjdCBjb25uZWN0aW9uIHRvIHN3aXRjaFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzozMDAzOlx0XHRcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXHRcdFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM9MjM4PXN0YXRpYyBpbnQgaGJnX2ZpeGVkX3BoeV9pbml0KHN0cnVjdCBoYmdfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlibWNnZS9oYmdfbWRpby5jLTI1MC1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmM6MjUxOlx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNmhiZ19maXhlZF9waHlfc3RhdHVzLCBOVUxMKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaWJtY2dlL2hiZ19tZGlvLmMtMjUyLVx0aWYgKElTX0VSUihwaHlkZXYpKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDU5PXJlZ2lzdGVyX3BoeToge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2MS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ2MjpcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIG5wKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2My1cdGlmIChJU19FUlIocGh5ZGV2KSlcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM9MTE4PXN0YXRpYyBpbnQgZml4ZWRfcGh5X2dldF9mcmVlX2FkZHIodm9pZClcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMwLVxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjEzMTpzdHJ1Y3QgcGh5X2RldmljZSAqZml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMyLVx0XHRcdFx0ICAgICAgc3RydWN0IGRldmljZV9ub2RlICpucClcbi0tXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTcyLX1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxNzM6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyKTtcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzQtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTc1OnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xNzYte1xuLS1cbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODEtXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTgyOlx0cmV0dXJuIGZpeGVkX3BoeV9yZWdpc3RlcihcdTAwMjZzdGF0dXMsIE5VTEwpO1xuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE4My19XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTg0OkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCk7XG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTg1LVxuLS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg9MTk9ZXh0ZXJuIGludCBmaXhlZF9waHlfY2hhbmdlX2NhcnJpZXIoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgYm9vbCBuZXdfY2Fycmllcik7XG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIwOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjEtXHRcdFx0XHQgICAgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjI6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKTtcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMjMtXG4tLVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0yOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MzA6Zml4ZWRfcGh5X3JlZ2lzdGVyKGNvbnN0IHN0cnVjdCBmaXhlZF9waHlfc3RhdHVzICpzdGF0dXMsXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTMxLVx0XHQgICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuLS1cbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzUtXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjM2OnN0YXRpYyBpbmxpbmUgc3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKVxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaC0zNy17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMzYzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNTc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBhdGNoIHRvIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AqKgoKT2theSwgc28gdGhpcyBwYXRjaCBhZmZlY3RzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhpcyBmdW5jdGlvbiBnZXRzIHRyaWdnZXJlZCB3aGVuIGEgZGV2aWNldHJlZSBub2RlIGhhcyBhIGBmaXhlZC1saW5rYCBwcm9wZXJ0eS4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgY2FuIHN5emthbGxlciBoaXQgdGhpcz8gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRocm91Z2ggZGV2aWNldHJlZSBvdmVybGF5cy4gSSByZW1lbWJlciBzeXprYWxsZXIgY2FuIGxvYWQgdGhvc2UsIGRvZXNuJiMzOTt0IGl0PyBTb21ldGhpbmcgd2l0aCBgc3l6X21vdW50X2ltYWdlYCwgYW5kIGFsc28gYHN5el9pbml0X25ldF9zb2NrZXRgIGFuZCBvdGhlciBzeXN0ZW0gY2FsbHMuLi4gZXZlbiBgc3l6X2dlbmV0bGlua19nZXRfZmFtaWx5X2lkYCBhbmQgYHN5el91c2JfY29ubmVjdGAuIFllcywgc3l6a2FsbGVyICpkZWZpbml0ZWx5KiBmdXp6ZXMgZGV2aWNldHJlZSBvdmVybGF5czsgaXQgaGFzIGBzeXpfbW91bnRfaW1hZ2VgLCBhbmQgSSBrbm93IGl0IGxldmVyYWdlcyBjb25maWdmcyBmb3IgbG9hZGluZyB0aGVtLgoKRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGBDT05GSUdfT0ZfT1ZFUkxBWWAgaXMgZW5hYmxlZC4gT2theSwgbm93IGxldCYjMzk7cyB0aGluayBhYm91dCBob3cgdGhlIGZ1bmN0aW9uIGlzIHVzZWQuIEl0JiMzOTtzIGNhbGxlZCBieSBkcml2ZXJzIGR1cmluZyB0aGVpciBwcm9iZSBzZXF1ZW5jZS4gU28sIGlmIGEgZHJpdmVyIGdldHMgcHJvYmVkIHZpYSBhIERUIG92ZXJsYXksIGl0IHdpbGwgY2FsbCB0aGlzIGZ1bmN0aW9uLiBTbywgaXMgdGhlcmUgYW55IGRyaXZlciB0aGF0IHdvdWxkIGJlIHByb2JlZCB2aWEgYSBEVCBvdmVybGF5IGFuZCBjYWxsIHRoaXM/CgpXZWxsLCBhbnkgb2YgdGhlIGRyaXZlcnMgSSBsaXN0ZWQsIGlmIHRoZXkgYXJlIGNvbXBpbGVkIGluIGFuZCB0aGVpciBoYXJkd2FyZSBpcyBwcmVzZW50LCBvciBpZiB0aGV5IGFyZSBwbGF0Zm9ybSBkcml2ZXJzIGFuZCB3ZSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIERUIG92ZXJsYXkuIENyZWF0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIGluIHRoZSBvdmVybGF5IHNvdW5kcyBsaWtlIGEgZ29vZCBhcHByb2FjaC4gQnV0LCB0aGUgaGFyZHdhcmUgd291bGQgc3RpbGwgbmVlZCB0byBiZSBwcmVzZW50IG9yIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCBkdXJpbmcgcHJvYmUuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbCEgQnV0LCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGNhbGxlZCAqZHVyaW5nKiBwcm9iZSwgbm90IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24uCgpGb3IgZXhhbXBsZSwgYGNwc3dfcHJvYmVfZHRgIG9yIGBiY21nZW5ldF9taWlfb2ZfaW5pdGAuIEkgc2hvdWxkIGxvb2sgYXQgYGRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmNgIGFzIGEgcG9zc2liaWxpdHksIHNpbmNlIHRoaXMgaXMgdXNlZCBvbiBRRU1VIEFTUEVFRCBtYWNoaW5lcy4gQnV0IHN5emthbGxlciB1c3VhbGx5IHVzZXMgYHFlbXUtc3lzdGVtLXg4Nl82NGAgb3IgYHFlbXUtc3lzdGVtLWFhcmNoNjRgLiBJIGRvbiYjMzk7dCB0aGluayBhbnkgb2YgdGhvc2UgcGxhdGZvcm0gZGV2aWNlcyBhcmUgcHJlc2VudCBieSBkZWZhdWx0IGluIGBxZW11LXN5c3RlbS14ODZfNjRgLgoKV2FpdCwgaXNuJiMzOTt0IGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgYWxzbyBjYWxsZWQgYnkgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgPyBUaGF0JiMzOTtzIGFub3RoZXIgcG90ZW50aWFsIGF2ZW51ZS4gT2theSwgdGhlIGNyaXRpY2FsIHF1ZXN0aW9uOiBpcyB0aGVyZSBhbnkgd2F5IHRvIHJlYWNoIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnJvbSB1c2Vyc3BhY2UgKndpdGhvdXQqIHNwZWNpZmljIGhhcmR3YXJlPyBJIG5lZWQgdG8gY2hlY2sgaWYgaXQmIzM5O3MgcmVhY2hhYmxlIGZyb20gYW55IHZpcnR1YWwgZHJpdmVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM9MTIzOT1zdHJ1Y3QgYmNtYXNwX2ludGYgKmJjbWFzcF9pbnRlcmZhY2VfY3JlYXRlKHN0cnVjdCBiY21hc3BfcHJpdiAqcHJpdixcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4MS1cdGlmICghaW50Zi1cdTAwM2VwaHlfZG4gXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5kZXZfZG4pKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM6MTI4MjpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobmRldl9kbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4My1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yNDQwPXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjUzMC1cdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhkbikpIHtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYzoyNTMxOlx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjUzMi1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTUzOT1zdGF0aWMgaW50IGJjbWdlbmV0X21paV9vZl9pbml0KHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KVxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jLTU1MS1cdGlmICghcHJpdi1cdTAwM2VwaHlfZG4gXHUwMDI2XHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKGRuKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6NTUyOlx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTMtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM9NTIwND1mZWNfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Mjc3LVx0aWYgKCFwaHlfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYzo1Mjc4Olx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Mjc5LVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz02MTY9c3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTc5MS1cdGlmICghcHJpdi1cdTAwM2VwaHlfbm9kZSBcdTAwMjZcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jOjc5MjpcdFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYy03OTMtXHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI2NDM9c3RhdGljIGludCBlbWFjX2luaXRfcGh5KHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI2NzItXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjY3MzpcdFx0XHRyZXMgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjY3NC1cdFx0XHRuZGV2LVx1MDAzZXBoeWRldiA9IG9mX3BoeV9maW5kX2RldmljZShucCk7XG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz0xMjkxPXN0YXRpYyBpbnQgbml4Z2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEzNjYtXHRpZiAoIXBoeV9ub2RlIFx1MDAyNlx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhwZGV2LVx1MDAzZWRldi5vZl9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYzoxMzY3Olx0XHRlcnIgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwZGV2LVx1MDAzZWRldi5vZl9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTM2OC1cdFx0aWYgKGVyciBcdTAwM2MgMCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmM9MTQ5Mj1zdGF0aWMgaW50IHJhdmJfcGh5X2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKm5kZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0xNTEyLVx0XHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjE1MTM6XHRcdFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0xNTE0LVx0XHRcdGlmIChlcnIpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jPTE5MTc9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjQtXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZGV2LVx1MDAzZW9mX25vZGUpKSB7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM6MTk2NTpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZGV2LVx1MDAzZW9mX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjYtXHRcdGlmIChyZXQpXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jPTEyODE9c3RhdGljIGludCBjcHN3X3Byb2JlX2R0KHN0cnVjdCBjcHN3X3BsYXRmb3JtX2RhdGEgKmRhdGEsXG4tLVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEzNzAtXHRcdFx0ICovXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM6MTM3MTpcdFx0XHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzbGF2ZV9ub2RlKTtcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcyLVx0XHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jPTEyNDM9c3RhdGljIGludCBjcHN3X3Byb2JlX2R0KHN0cnVjdCBjcHN3X2NvbW1vbiAqY3Bzdylcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTEzMTctXHRcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwb3J0X25wKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMzE4Olx0XHRcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHBvcnRfbnApO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYy0xMzE5LVx0XHRcdGlmIChyZXQpIHtcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYz0xNzE5PWRhdmluY2lfZW1hY19vZl9nZXRfcGRhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGVtYWNfcHJpdiAqcHJpdilcbi0tXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYy0xNzU3LVx0XHRcdHBkYXRhLVx1MDAzZXBoeV9pZCA9IE5VTEw7XG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYzoxNzU4Olx0XHRlbHNlIGlmIChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCkgXHUwMDNlPSAwKVxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMtMTc1OS1cdFx0XHRwcml2LVx1MDAzZXBoeV9ub2RlID0gb2Zfbm9kZV9nZXQobnApO1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTE2NTc9c3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MTktXHR9IGVsc2UgaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGV0aF9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTcyMDpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZXRoX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcyMS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYz03NTc9c3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoLFxuLS1cbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYy04MTMtXHR9IGVsc2UgaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGV0aF9ub2RlKSkge1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jOjgxNDpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZXRoX25vZGUpO1xuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTgxNS1cdFx0aWYgKHJldCkge1xuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM0Nj1zdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM1OC1cdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpIHtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjM1OTpcdFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzYwLVx0XHRpZiAocmV0IFx1MDAzYyAwKSB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mzc3PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2dldF9hbmRfY29ubmVjdCk7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzc5LS8qXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozODA6ICogb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoKSBhbmQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoKSBtdXN0XG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zODEtICogc3VwcG9ydCB0d28gRFQgYmluZGluZ3M6XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEwPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2lzX2ZpeGVkX2xpbmspO1xuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDExLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDEyOmludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDEzLXtcbi0tXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00NTk9cmVnaXN0ZXJfcGh5OiB7XG4tLVxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDY5LX1cbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ3MDpFWFBPUlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTtcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ3MS1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTUyODcKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiA0MDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQ6IGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgaW4gT0YgTURJTyBjb2RlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXM6IHdoYXQmIzM5O3MgdGhlIGVudHJ5IHBvaW50PyBJIHNlZSBgZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmNgIGNhbGxzIGBmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQoKWAsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgdGhhdCYjMzk7cyBhIHZpcnR1YWwgRFNBIHN3aXRjaCBkcml2ZXIuIERvZXMgaXQgcmVsYXRlIHRvIHRoZSB0YXJnZXQsIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2A/IE5vcGUuIFRoZSBjb2RlIGNhbGxzIGEgc2ltaWxhciwgYnV0IGRpZmZlcmVudCBmdW5jdGlvbi4KClRoZW4sIHRoZSBrZXkgaW5zaWdodCBoaXRzIG1lOiB0aGlzIHBhdGNoIGlzICpzcGVjaWZpY2FsbHkqIHdpdGhpbiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLiBDYW4gSSB0cmlnZ2VyIHRoYXQgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXk/IEFic29sdXRlbHkhIElmIEkgY2FuIGxvYWQgYSBEVCBvdmVybGF5IHRoYXQgYWRkcyBhIG5vZGUgd2l0aCBgZml4ZWQtbGlua2AgdG8gYW4gZXhpc3RpbmcgbmV0d29yayBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIG9yIGludHJvZHVjZSBhICp2aXJ0dWFsKiBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIEkmIzM5O20gaW4gYnVzaW5lc3MuCgpOb3csIGRvIGFueSB2aXJ0dWFsIGRldmljZXMgZXZlbiAqdXNlKiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgPyBNeSBpbml0aWFsIHJlYWN0aW9uIGlzIG5vIOKAkyBpdCBsb29rcyBsaWtlIGFsbCB0aGUgZHJpdmVycyBsaXN0ZWQgYXJlIGhhcmR3YXJlIGRyaXZlcnMuCgpCdXQgd2FpdCEgSG9sZCBvbi4gSSBzZWUgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgIGdldHMgY2FsbGVkIGJ5ICptYW55KiBkcml2ZXJzLiBJZiBJIGxvYWQgYSBEVCBvdmVybGF5IGZvciBhIGhhcmR3YXJlIGRyaXZlciB0aGF0JiMzOTtzIGFscmVhZHkgcHJlc2VudCBpbiBRRU1VIOKAkyBzb21ldGhpbmcgbGlrZSBgZnRnbWFjMTAwYCBvciBgZmVjYCDigJMgSSB0aGluayBJIGNhbiBtYWtlIGl0IGNhbGwgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYC4gVGhpcyBpcyBwcm9taXNpbmcuCgpBbmQgb2YgY291cnNlLCBTeXprYWxsZXIgZG9lcyBhIGxvdCBvZiB0ZXN0aW5nIG9uIGBxZW11LXN5c3RlbS1hcm1gIGFuZCBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAgd2hlcmUgYGZlY2Agb3IgYGZ0Z21hYzEwMGAgbWlnaHQgYWxyZWFkeSBiZSBwcmVzZW50LiBCaW5nbyEKClNvIHRoZSBwYXRjaCBpdHNlbGYgaXMgc21hbGwgYnV0IHRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbC4gSXQmIzM5O3Mgc2V0dGluZyBgcGh5ZGV2LSZndDttZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTtgIHdoaWNoIHNlZW1zIGNvcmUgdG8gdGhlIE9GIE1ESU8gY29kZS4gR2l2ZW4gdGhlIHBvdGVudGlhbCBmb3IgRFQgb3ZlcmxheSBpbmplY3Rpb24sIGlzIHRoaXMgd29ydGggZnV6emluZz8gWWVzLCBhYnNvbHV0ZWx5LiBJdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHdoYXQgaXMgZXNzZW50aWFsbHkgYSBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50LgoKV2hhdCBjb25maWd1cmF0aW9ucyBhcmUgbmVlZGVkPyBJdCBzZWVtcyBJIG5lZWQgYENPTkZJR19PRl9NRElPYCBhbmQgYENPTkZJR19GSVhFRF9QSFlgLiBMZXQmIzM5O3MganVzdCBkb3VibGUgY2hlY2sgdGhhdCBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgcmVhbGx5IGEgcmVxdWlyZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjQ5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zml4ZWRfcGh5X3JlZ2lzdGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYyNTUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgUEhZIERyaXZlciBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0aGUgYGZpeGVkX3BoeWAgZHJpdmVyIGlzIGhhbmRsZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbS4gTXkgaW1tZWRpYXRlIGluc3RpbmN0IGlzIHRvIGNoZWNrIHRoZSBgZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSBhbGwgdGhlIFBIWSBkcml2ZXIgY29tcGlsYXRpb24gbG9naWMgaXMgdXN1YWxseSBkZWZpbmVkLiBJJiMzOTttIGV4cGVjdGluZyB0byBmaW5kIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHJ1bGVzIG9yIGRlcGVuZGVuY2llcyByZWxhdGVkIHRvIGBmaXhlZF9waHlgIHRoZXJlLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciBob3cgaXQmIzM5O3MgaW50ZWdyYXRlZCwgYW55IHNwZWNpYWwgZmxhZ3MsIG9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgUEhZIGRyaXZlcnMuIEl0JiMzOTtzIHRoZSBsb2dpY2FsIHN0YXJ0aW5nIHBvaW50IGZvciB1bmRlcnN0YW5kaW5nIGl0cyBidWlsZCBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaXhlZF9waHkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvcGh5L01ha2VmaWxlPTYzPW9iai0kKENPTkZJR19EUDgzVEc3MjBfUEhZKVx0JiM0Mzs9IGRwODN0ZzcyMC5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0ZJWEVEX1BIWSlcdFx0JiM0Mzs9IGZpeGVkX3BoeS5vXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGUtNjUtb2JqLSQoQ09ORklHX0lDUExVU19QSFkpXHQmIzQzOz0gaWNwbHVzLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjYgMjI6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY1NDUKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBldmFsdWF0aW5nIHRoaXM6CgoqKkludmVzdGlnYXRpbmcgdGhlIE5lZWQgZm9yIENPTkZJR19GSVhFRF9QSFkqKgoKT2theSwgc28gdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIGBDT05GSUdfRklYRURfUEhZYCBpcyBuZWNlc3NhcnkuIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byB1bmRlcnN0YW5kICp3aHkqLiBJIG5lZWQgdG8gdHJhY2UgdGhpcyBiYWNrLiBUaGUgbW9zdCBsaWtlbHkgYXJlYSB0byBzdGFydCBwb2tpbmcgYXJvdW5kIGlzIHByb2JhYmx5IGluIHRoZSBgb2ZfbWRpby5jYCBmaWxlIOKAkyBpdCBkZWFscyB3aXRoIE1ESU8gKE1hbmFnZW1lbnQgRGF0YSBJbnB1dC9PdXRwdXQpIHdoaWNoIGlzIG9mdGVuIHVzZWQgZm9yIFBIWSAoUGh5c2ljYWwgTGF5ZXIpIGNvbW11bmljYXRpb24sIGVzcGVjaWFsbHkgd2l0aGluIHRoZSBjb250ZXh0IG9mIERldmljZSBUcmVlLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYG9mX21kaW8uY2AgYW5kIHNlZSB3aGVyZSBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgdXNlZCBpbiB0aGF0IGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo1MTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT0ZfTURJTyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L21kaW8vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9OD1jb25maWcgRldOT0RFX01ESU9cbi0tXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTItXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTM6Y29uZmlnIE9GX01ESU9cbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xNC1cdGRlZl90cmlzdGF0ZSBPRlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNjg2MAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJiMzOTttIGRpc2N1c3NpbmcgdGhpcyB3aXRoIGEgZmVsbG93IGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IG9mIE9GX01ESU8qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gYE9GX01ESU9gLi4uIGVzc2VudGlhbGx5LCB0aGF0JiMzOTtzIGRlZmluZWQgYXMgYSB0cmlzdGF0ZSBkZXBlbmRlbmN5IG9uIGBPRmAuIFNvLCB0aGUgaW1wbGljYXRpb25zIGFyZSBzdHJhaWdodGZvcndhcmQ6IElmIHRoZSBiYXNlIG9wdGlvbiBgT0ZgIGlzIGVuYWJsZWQsIHRoZW4gYE9GX01ESU9gIGJlY29tZXMgYWN0aXZlLiBObyBzdXJwcmlzZXMgdGhlcmUuIEJ1dCwgSSBuZWVkIHRvIGNvbnNpZGVyIGFsbCBhbmdsZXMuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE9GX01ESU9gIGFuZCB0aGUgYEZJWEVEX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBGSVhFRF9QSFkmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9waHkvS2NvbmZpZz00OT1jb25maWcgUEhZTElCX0xFRFNcbi0tXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01NS1cbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnOjU2OmNvbmZpZyBGSVhFRF9QSFlcbmRyaXZlcnMvbmV0L3BoeS9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7TURJTyBCdXMvUEhZIGVtdWxhdGlvbiB3aXRoIGZpeGVkIHNwZWVkL2xpbmsgUEhZc1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNiAyMjo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzE2NAoJCQkJCQkJb3V0cHV0OiAxMDYKCQkJCQkJCXRob3VnaHRzOiAyOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgQ09ORklHX09GX01ESU9gIGFuZCBgQ09ORklHX0ZJWEVEX1BIWWAganVtcCBvdXQgYXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBoZXJlLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmdW5jdGlvbjsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBjaGFuZ2luZyB3aXRoIGl0LiBJcyB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb24/IExldCYjMzk7cyBjaGVjayB0aGUgcGF0Y2guCgpBaCwgaXQgc2VlbXMgdGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuIExldCBtZSBtYWtlIHN1cmUuCmBgYGMKcmVnaXN0ZXJfcGh5OiB7CglzdHJ1Y3QgcGh5X2RldmljZSAqcGh5ZGV2OwoKCXBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcigmYW1wO3N0YXR1cywgbnApOwoJaWYgKElTX0VSUihwaHlkZXYpKQoJCXJldHVybiBQVFJfRVJSKHBoeWRldik7CgoJcGh5ZGV2LSZndDttZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTsKCXJldHVybiAwOwp9CmBgYApZZXMsIGFsbCB0aGlzIHBhdGNoIGRvZXMgaXMgc2V0IHRoZSBgZndub2RlYC4gRnVuY3Rpb25hbGx5LCB0aGlzIGlzIGEgY2hhbmdlIHRoYXQgYWxsb3dzIG90aGVyIGNvZGUgdG8gZGlzY292ZXIgdGhlIGZpcm13YXJlIG5vZGUgb2YgdGhlIGZpeGVkIFBIWSBkZXZpY2UuIEl0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIGFuZCB0aGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY2FuIGxlYWQgdG8gc3VidGxlIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJiMzOTtsbCBmbGFnIHRoaXMgYXMgaGF2aW5nIHBvdGVudGlhbCBmb3IgZnV6emluZy4KCk15IGNvbmNsdXNpb24gaXM6ICoqV29ydGhGdXp6aW5nPXRydWUqKi4KClNwZWNpZmljYWxseSwgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuCgpXZSB3aWxsIGVuYWJsZSB0aGUgY29uZmlnczogYE9GX01ESU9gLCBgRklYRURfUEhZYC4KClRoZSByZWFzb25pbmcgaXMgdGhhdCB0aGUgcGF0Y2ggbWFrZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGJ5IHNldHRpbmcgdGhlIGBmd25vZGVgIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI2IDIyOjUxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPRl9NRElPJiMzNDssCiAgICAmIzM0O0ZJWEVEX1BIWSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O29mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09GX01ESU8mIzM0OywKICAgICYjMzQ7RklYRURfUEhZJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbWFrZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0byBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayBieSBzZXR0aW5nIHRoZSBmd25vZGUgb2YgdGhlIHJlZ2lzdGVyZWQgZml4ZWQgUEhZIGRldmljZS4gVGhpcyBjYW4gYmUgcmVhY2hlZCBkdXJpbmcgZGV2aWNlIHByb2JlIG9mIG5ldHdvcmsgZHJpdmVycyB1c2luZyBmaXhlZC1saW5rIGluIHRoZWlyIGRldmljZXRyZWUgbm9kZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQyLjU1NDQ0NTQxOVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQyMDQ5NjEwMTEzNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPRl9NRElPXCIsXG4gICAgXCJGSVhFRF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQyLjU1NDQ1MjEyOVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTUwMTM0MDQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgN2U1ZDc2NGNhMDVhM2QxMjlkNmUxM2NlMzNhM2NiZDIwNjY2MDgyZlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgRnJpIEp1biAyNiAyMjo0NDo0MSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuaW5kZXggYjhkMjk4YzA0ZDNmZjAuLjBkZDI1ZDk0ZmVjMDk3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXFxuKysrIGIvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcXG5AQCAtNDU2LDggKzQ1NiwxNiBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcXG4gXFxuIFxcdHJldHVybiAtRU5PREVWO1xcbiBcXG4tcmVnaXN0ZXJfcGh5Olxcbi1cXHRyZXR1cm4gUFRSX0VSUl9PUl9aRVJPKGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCkpO1xcbityZWdpc3Rlcl9waHk6IHtcXG4rXFx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcXG4rXFxuK1xcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCk7XFxuK1xcdGlmIChJU19FUlIocGh5ZGV2KSlcXG4rXFx0XFx0cmV0dXJuIFBUUl9FUlIocGh5ZGV2KTtcXG4rXFxuK1xcdHBoeWRldi1cXHUwMDNlbWRpby5kZXYuZndub2RlID0gb2ZfZndub2RlX2hhbmRsZShucCk7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuIH1cXG4gRVhQT1JUX1NZTUJPTChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayk7XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0NDo0My4xMDU0MzIwMzZaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQxOTk0NTA5ODM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPRl9NRElPXCIsXG4gICAgXCJGSVhFRF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgN2U1ZDc2NGNhMDVhM2QxMjlkNmUxM2NlMzNhM2NiZDIwNjY2MDgyZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVuIDI2IDIyOjQ0OjQxIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMgYi9kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uY1xuaW5kZXggYjhkMjk4YzA0ZDNmZjAuLjBkZDI1ZDk0ZmVjMDk3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNcbisrKyBiL2RyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jXG5AQCAtNDU2LDggKzQ1NiwxNiBAQCBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcbiBcbiBcdHJldHVybiAtRU5PREVWO1xuIFxuLXJlZ2lzdGVyX3BoeTpcbi1cdHJldHVybiBQVFJfRVJSX09SX1pFUk8oZml4ZWRfcGh5X3JlZ2lzdGVyKFx1MDAyNnN0YXR1cywgbnApKTtcbityZWdpc3Rlcl9waHk6IHtcbitcdHN0cnVjdCBwaHlfZGV2aWNlICpwaHlkZXY7XG4rXG4rXHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2c3RhdHVzLCBucCk7XG4rXHRpZiAoSVNfRVJSKHBoeWRldikpXG4rXHRcdHJldHVybiBQVFJfRVJSKHBoeWRldik7XG4rXG4rXHRwaHlkZXYtXHUwMDNlbWRpby5kZXYuZndub2RlID0gb2ZfZndub2RlX2hhbmRsZShucCk7XG4rXHRyZXR1cm4gMDtcbit9XG4gfVxuIEVYUE9SVF9TWU1CT0wob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmspO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDQ6NDMuMTA1NDM0ODY1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjQ0MDc2NTk3NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGaXhlZCBQSFkgUmVnaXN0cmF0aW9uIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0J3MgdHdlYWtpbmcgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCB3aXRoaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhlIGNvcmUgY2hhbmdlIGlzIHRoZSB3YXkgdGhlIGZpeGVkIFBIWSBpcyByZWdpc3RlcmVkLiBJbnN0ZWFkIG9mIGEgZGlyZWN0IHJldHVybiwgaXQncyBub3cgYSBibG9jayB0aGF0IGRvZXMgYSBsaXR0bGUgbW9yZS4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSBzZXR0aW5nIHRoZSBgZndub2RlYCBmb3IgdGhlIGBwaHlkZXYtXHUwMDNlbWRpby5kZXZgIGFmdGVyIGEgc3VjY2Vzc2Z1bCByZWdpc3RyYXRpb24uIFRoZSBvcmlnaW5hbCBjb2RlIHVzZWQgYFBUUl9FUlJfT1JfWkVST2Agb24gdGhlIHJldHVybmVkIGBwaHlkZXZgIHdoaWNoIHdvdWxkIHNldCB0aGUgcmV0dXJuIHZhbHVlIHRvIHRoZSBlcnJvciBpZiBzb21ldGhpbmcgd2VudCB3cm9uZywgb3IgYDBgIGlmIGl0IGRpZG4ndC4gVGhpcyBjaGFuZ2UgbG9va3MgZnVuY3Rpb25hbCwgcmlnaHQ/IFdlJ3JlIGVmZmVjdGl2ZWx5IGFkZGluZyBhIHN0ZXAgdG8gYXNzb2NpYXRlIHRoZSBkZXZpY2UncyBmaXJtd2FyZSBub2RlLlxuXG5TbywgZmlyc3QgdGhpbmcgSSBuZWVkIHRvIGRvIGlzIGNvbmZpcm0gdGhhdCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24gaXMgYWN0dWFsbHkgKnVzZWQqLiBJdCdzIGFuIGV4cG9ydGVkIHN5bWJvbCwgc28gdGhhdOKAmXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIGNvbmZpZ3VyYXRpb25zIGJyaW5nIGluIGBvZl9tZGlvLmNgIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGNvbnRleHQgdGhpcyBjaGFuZ2Ugb3BlcmF0ZXMgaW4uIEkgbmVlZCB0byBiZSBzdXJlIHRoZSBjaGFuZ2UgaXMgcHJvcGVybHkgaW50ZWdyYXRlZCBpbiBhIHdheSB0aGF0IGRvZXNuJ3QgYnJlYWsgb3RoZXIgc3lzdGVtcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTkxNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQ5LjU0NjIwNTcxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjgwMTM2NTU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX21kaW8ub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU9NT1vYmotJChDT05GSUdfRldOT0RFX01ESU8pXFx0Kz0gZndub2RlX21kaW8ub1xcbmRyaXZlcnMvbmV0L21kaW8vTWFrZWZpbGU6NjpvYmotJChDT05GSUdfT0ZfTURJTylcXHRcXHQrPSBvZl9tZGlvLm9cXG5kcml2ZXJzL25ldC9tZGlvL01ha2VmaWxlLTctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ0OjQ5LjYyNjM0NjYxNloiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzMzcyODc2MzIzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHN1bW1hcml6ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkOlxuXG4qKkRlYnVnZ2luZyBNeSBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBzbyBJIHNlZSBgQ09ORklHX09GX01ESU9gIGluIHRoZSBtaXgsIGFuZCBpdCdzIG1ha2luZyBtZSBwYXVzZS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQgdGhpcyBjb25maWcgb3B0aW9uIGlzIGRlZmluaXRlbHkgbmVjZXNzYXJ5IGhlcmUsIGFuZCB3aGVyZSBpdCBmaXRzIGluIHRoZSBncmVhdGVyIHBpY3R1cmUuXG5cbk15IG5leHQgc3RlcCBpcyB0byBxdWlja2x5IHNlZSBpZiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGFjdHVhbGx5IGJlaW5nIHV0aWxpemVkIGFueXdoZXJlIGluIHRoZSBjb2RlYmFzZS4gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGV2ZXJ5dGhpbmcgaXMgYmVpbmcgdXNlZCBhcyBpbnRlbmRlZC4gSWYgbm90LCBpdCBtZWFucyB0aGVyZSdzIGEgcHJvYmxlbSB3aXRoIHRoZSBkcml2ZXIgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjU0NCwiT3V0cHV0VG9rZW5zIjoyOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ1OjIyLjk5OTIyNDkyOVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTAzMDU3Mzg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJEb2N1bWVudGF0aW9uL25ldHdvcmtpbmcvc2ZwLXBoeWxpbmsucnN0PTc0PXRoaXMgZG9jdW1lbnRhdGlvbi5cXG4tLVxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3QtMzU2LTE0LiBSZW1vdmUgY2FsbHMgdG8gb2ZfcGFyc2VfcGhhbmRsZSgpIGZvciB0aGUgUEhZLFxcbkRvY3VtZW50YXRpb24vbmV0d29ya2luZy9zZnAtcGh5bGluay5yc3Q6MzU3OiAgICBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluaygpIGZvciBmaXhlZCBsaW5rcyBldGMuIGZyb20gdGhlIHByb2JlXFxuRG9jdW1lbnRhdGlvbi9uZXR3b3JraW5nL3NmcC1waHlsaW5rLnJzdC0zNTgtICAgIGZ1bmN0aW9uLCBhbmQgcmVwbGFjZSB3aXRoOlxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jPTEyMzk9c3RydWN0IGJjbWFzcF9pbnRmICpiY21hc3BfaW50ZXJmYWNlX2NyZWF0ZShzdHJ1Y3QgYmNtYXNwX3ByaXYgKnByaXYsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4MS1cXHRpZiAoIWludGYtXFx1MDAzZXBoeV9kbiBcXHUwMDI2XFx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhuZGV2X2RuKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYzoxMjgyOlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5kZXZfZG4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYy0xMjgzLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYz0yNDQwPXN0YXRpYyBpbnQgYmNtX3N5c3BvcnRfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yNTMwLVxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhkbikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM6MjUzMTpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jLTI1MzItXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM9NTM5PXN0YXRpYyBpbnQgYmNtZ2VuZXRfbWlpX29mX2luaXQoc3RydWN0IGJjbWdlbmV0X3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTEtXFx0aWYgKCFwcml2LVxcdTAwM2VwaHlfZG4gXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZG4pKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmM6NTUyOlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGRuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9nZW5ldC9iY21taWkuYy01NTMtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jPTUyMDQ9ZmVjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYy01Mjc3LVxcdGlmICghcGh5X25vZGUgXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmM6NTI3ODpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3OS1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYz02MTY9c3RhdGljIGludCBnZmFyX29mX2luaXQoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqb2ZkZXYsIHN0cnVjdCBuZXRfZGV2aWNlICoqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtNzkxLVxcdGlmICghcHJpdi1cXHUwMDNlcGh5X25vZGUgXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2dpYW5mYXIuYzo3OTI6XFx0XFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmMtNzkzLVxcdFxcdGlmIChlcnIpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM9MjY0Mz1zdGF0aWMgaW50IGVtYWNfaW5pdF9waHkoc3RydWN0IGVtYWNfaW5zdGFuY2UgKmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYy0yNjcyLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2libS9lbWFjL2NvcmUuYzoyNjczOlxcdFxcdFxcdHJlcyA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjY3NC1cXHRcXHRcXHRuZGV2LVxcdTAwM2VwaHlkZXYgPSBvZl9waHlfZmluZF9kZXZpY2UobnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYz0xMjkxPXN0YXRpYyBpbnQgbml4Z2VfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTM2Ni1cXHRpZiAoIXBoeV9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKHBkZXYtXFx1MDAzZWRldi5vZl9ub2RlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM6MTM2NzpcXHRcXHRlcnIgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvbmkvbml4Z2UuYy0xMzY4LVxcdFxcdGlmIChlcnIgXFx1MDAzYyAwKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jPTE0OTI9c3RhdGljIGludCByYXZiX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYy0xNTEyLVxcdFxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jOjE1MTM6XFx0XFx0XFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxNC1cXHRcXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jPTE5MTc9c3RhdGljIGludCBlbWFjX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmMtMTk2NC1cXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZGV2LVxcdTAwM2VvZl9ub2RlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYzoxOTY1OlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGRldi1cXHUwMDNlb2Zfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjYtXFx0XFx0aWYgKHJldClcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYz0xMjgxPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19wbGF0Zm9ybV9kYXRhICpkYXRhLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEzNzAtXFx0XFx0XFx0ICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jOjEzNzE6XFx0XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc2xhdmVfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzdy5jLTEzNzItXFx0XFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYz0xMjQzPXN0YXRpYyBpbnQgY3Bzd19wcm9iZV9kdChzdHJ1Y3QgY3Bzd19jb21tb24gKmNwc3cpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTEzMTctXFx0XFx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKHBvcnRfbnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYzoxMzE4OlxcdFxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHBvcnRfbnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmMtMTMxOS1cXHRcXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYz0xNzE5PWRhdmluY2lfZW1hY19vZl9nZXRfcGRhdGEoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldiwgc3RydWN0IGVtYWNfcHJpdiAqcHJpdilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfZW1hYy5jLTE3NTctXFx0XFx0XFx0cGRhdGEtXFx1MDAzZXBoeV9pZCA9IE5VTEw7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM6MTc1ODpcXHRcXHRlbHNlIGlmIChvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCkgXFx1MDAzZT0gMClcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYy0xNzU5LVxcdFxcdFxcdHByaXYtXFx1MDAzZXBoeV9ub2RlID0gb2Zfbm9kZV9nZXQobnApO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM9MTY1Nz1zdGF0aWMgaW50IHBydWV0aF9uZXRkZXZfaW5pdChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGguYy0xNzE5LVxcdH0gZWxzZSBpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZXRoX25vZGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmM6MTcyMDpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhldGhfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcyMS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM9NzU3PXN0YXRpYyBpbnQgcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aF9zcjEuYy04MTMtXFx0fSBlbHNlIGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhldGhfbm9kZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmM6ODE0OlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKGV0aF9ub2RlKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtODE1LVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM0Nj1zdHJ1Y3QgcGh5X2RldmljZSAqb2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzU4LVxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhucCkpIHtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNTk6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM2MC1cXHRcXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9Mzc3PUVYUE9SVF9TWU1CT0wob2ZfcGh5X2dldF9hbmRfY29ubmVjdCk7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzktLypcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozODA6ICogb2ZfcGh5X2lzX2ZpeGVkX2xpbmsoKSBhbmQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoKSBtdXN0XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzgxLSAqIHN1cHBvcnQgdHdvIERUIGJpbmRpbmdzOlxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM9NDEwPUVYUE9SVF9TWU1CT0wob2ZfcGh5X2lzX2ZpeGVkX2xpbmspO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzo0MTI6aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDEzLXtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQ1OT1yZWdpc3Rlcl9waHk6IHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ2OS19XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDcwOkVYUE9SVF9TWU1CT0wob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmspO1xcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQ3MS1cXG4tLVxcbmRyaXZlcnMvc3RhZ2luZy9vY3Rlb24vZXRoZXJuZXQuYz02NzI9c3RhdGljIGludCBjdm1fb2N0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LmMtODk3LVxcdFxcdFxcdGlmIChwcml2LVxcdTAwM2VvZl9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKHByaXYtXFx1MDAzZW9mX25vZGUpKSB7XFxuZHJpdmVycy9zdGFnaW5nL29jdGVvbi9ldGhlcm5ldC5jOjg5ODpcXHRcXHRcXHRcXHRpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocHJpdi1cXHUwMDNlb2Zfbm9kZSkpIHtcXG5kcml2ZXJzL3N0YWdpbmcvb2N0ZW9uL2V0aGVybmV0LmMtODk5LVxcdFxcdFxcdFxcdFxcdG5ldGRldl9lcnIoZGV2LCBcXFwiRmFpbGVkIHRvIHJlZ2lzdGVyIGZpeGVkIGxpbmsgZm9yIGludGVyZmFjZSAlZCwgcG9ydCAlZFxcXFxuXFxcIixcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTQ2PXN0cnVjdCBtaWlfYnVzICpvZl9tZGlvX2ZpbmRfYnVzKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbWRpb19ucCk7XFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NDc6aW50IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTQ4LXZvaWQgb2ZfcGh5X2RlcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTEyOD1zdGF0aWMgaW5saW5lIGludCBvZl9tZGlvX3BhcnNlX2FkZHIoc3RydWN0IGRldmljZSAqZGV2LFxcbi0tXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmgtMTMyLX1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxMzM6c3RhdGljIGlubGluZSBpbnQgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoc3RydWN0IGRldmljZV9ub2RlICpucClcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaC0xMzQte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0NToyNy4xMDIyODc3NDdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODA1NzQ3NzAxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgU2NvcGUgb2YgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBVc2FnZSoqXG5cblJpZ2h0LCBzbyBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLi4uIEkga25vdyB0aGF0IGZ1bmN0aW9uIGdldHMgYXJvdW5kLCBwb3BzIHVwIGluIGEgZmV3IHBsYWNlcy4gVGhlIGltbWVkaWF0ZSBwb2ludCBvZiBpbnRlcmVzdCBpcyBpdHMgdXNlIHdpdGhpbiBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAsIHdoaWNoLCBmcm9tIG1lbW9yeSwgbGl2ZXMgaW4gYGRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jYC4gVGhlIHF1ZXN0aW9uIGlzLCBob3cgYnJvYWRseSBpcyBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAgaXRzZWxmIHV0aWxpemVkPyBVbmRlcnN0YW5kaW5nIHRoZSBjYWxsIHBhdGhzIGZyb20gdGhlcmUgd2lsbCBnaXZlIG1lIGEgY2xlYXJlciBwaWN0dXJlIG9mIHRoZSBpbXBhY3QgaWYgdGhlcmUncyBhbnkgbmVlZCBmb3IgY2hhbmdlcywgb3B0aW1pemF0aW9ucywgb3IgcG90ZW50aWFsIGRlYnVnZ2luZyBpbiB0aGUgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmdW5jdGlvbi4gVGltZSB0byBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgY2FsbGluZyBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU5NzAsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0NTo1NS4xNTk3NjczMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDI0MzUyMDkwMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvZl9waHlfZ2V0X2FuZF9jb25uZWN0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM9MTM1Mz1zdGF0aWMgaW50IG93bF9lbWFjX3BoeV9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmMtMTM1OC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9hY3Rpb25zL293bC1lbWFjLmM6MTM1OTpcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5ldGRldiwgZGV2LVxcdTAwM2VvZl9ub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2FjdGlvbnMvb3dsLWVtYWMuYy0xMzYwLVxcdFxcdFxcdFxcdCAgICAgb3dsX2VtYWNfYWRqdXN0X2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jPTg1PXN0YXRpYyBpbnQgYmNtYV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jLTkwLVxcdC8qIERUIGluZm8gc2hvdWxkIGJlIHRoZSBtb3N0IGFjY3VyYXRlICovXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtYmNtYS5jOjkxOlxcdHBoeV9kZXYgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KGJnbWFjLVxcdTAwM2VuZXRfZGV2LCBiZ21hYy1cXHUwMDNlZGV2LVxcdTAwM2VvZl9ub2RlLFxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLWJjbWEuYy05Mi1cXHRcXHRcXHRcXHRcXHQgYmdtYWNfYWRqdXN0X2xpbmspO1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYz0xNTE9c3RhdGljIGludCBwbGF0Zm9ybV9waHlfY29ubmVjdChzdHJ1Y3QgYmdtYWMgKmJnbWFjKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTUtXFx0aWYgKGJnbWFjLVxcdTAwM2VwbGF0Lm5pY3BtX2Jhc2UpXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNTY6XFx0XFx0cGh5X2RldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QoYmdtYWMtXFx1MDAzZW5ldF9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNTctXFx0XFx0XFx0XFx0XFx0XFx0IGJnbWFjLVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy1wbGF0Zm9ybS5jLTE1OS1cXHRlbHNlXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYzoxNjA6XFx0XFx0cGh5X2RldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QoYmdtYWMtXFx1MDAzZW5ldF9kZXYsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMtcGxhdGZvcm0uYy0xNjEtXFx0XFx0XFx0XFx0XFx0XFx0IGJnbWFjLVxcdTAwM2VkZXYtXFx1MDAzZW9mX25vZGUsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jPTM2MD1zdGF0aWMgaW50IGdtYWNfc2V0dXBfcGh5KHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTM2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jOjM2NzpcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5ldGRldixcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9jb3J0aW5hL2dlbWluaS5jLTM2OC1cXHRcXHRcXHRcXHQgICAgIGRldi1cXHUwMDNlb2Zfbm9kZSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM9MTg5MD1zdGF0aWMgaW50IGZ0Z21hYzEwMF9wcm9iZV9kdChzdHJ1Y3QgbmV0X2RldmljZSAqbmV0ZGV2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xOTA4LVxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmM6MTkwOTpcXHRcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KHByaXYtXFx1MDAzZW5ldGRldiwgbnAsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYy0xOTEwLVxcdFxcdFxcdFxcdFxcdCAgICAgXFx1MDAyNmZ0Z21hYzEwMF9hZGp1c3RfbGluayk7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jPTc2OD1zdGF0aWMgaW50IGhpc2lfZmVtYWNfZHJ2X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jLTgzMi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9oaXNpbGljb24vaGlzaV9mZW1hYy5jOjgzMzpcXHRwaHkgPSBvZl9waHlfZ2V0X2FuZF9jb25uZWN0KG5kZXYsIG5vZGUsIGhpc2lfZmVtYWNfYWRqdXN0X2xpbmspO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2hpc2lsaWNvbi9oaXNpX2ZlbWFjLmMtODM0LVxcdGlmICghcGh5KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jPTExNjM9c3RhdGljIGludCBhdmVfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NvY2lvbmV4dC9zbmlfYXZlLmMtMTIwOS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zb2Npb25leHQvc25pX2F2ZS5jOjEyMTA6XFx0cGh5ZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChuZGV2LCBucCwgYXZlX3BoeV9hZGp1c3RfbGluayk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc29jaW9uZXh0L3NuaV9hdmUuYy0xMjExLVxcdGlmICghcGh5ZGV2KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYz0xNDkwPXN0YXRpYyBpbnQgaWNzc21fcHJ1ZXRoX25ldGRldl9pbml0KHN0cnVjdCBwcnVldGggKnBydWV0aCxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NtL2ljc3NtX3BydWV0aC5jLTE1NjYtXFx0LyogY29ubmVjdCBQSFkgKi9cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzbS9pY3NzbV9wcnVldGguYzoxNTY3OlxcdGVtYWMtXFx1MDAzZXBoeWRldiA9IG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QobmRldiwgZXRoX25vZGUsXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc20vaWNzc21fcHJ1ZXRoLmMtMTU2OC1cXHRcXHRcXHRcXHRcXHQgICAgICBpY3NzbV9lbWFjX2FkanVzdF9saW5rKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmM9MTQ5Mz1zdGF0aWMgaW50IGl4cDR4eF9ldGhfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3hzY2FsZS9peHA0eHhfZXRoLmMtMTU2NC1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jOjE1NjU6XFx0cGh5ZGV2ID0gb2ZfcGh5X2dldF9hbmRfY29ubmVjdChuZGV2LCBucCwgaXhwNHh4X2FkanVzdF9saW5rKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC94c2NhbGUvaXhwNHh4X2V0aC5jLTE1NjYtXFx0aWYgKCFwaHlkZXYpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTMzMz1FWFBPUlRfU1lNQk9MKG9mX3BoeV9jb25uZWN0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMzNS0vKipcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozMzY6ICogb2ZfcGh5X2dldF9hbmRfY29ubmVjdFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTMzNy0gKiAtIEdldCBwaHkgbm9kZSBhbmQgY29ubmVjdCB0byB0aGUgcGh5IGRlc2NyaWJlZCBpbiB0aGUgZGV2aWNlIHRyZWVcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM0NS0gKi9cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNDY6c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9nZXRfYW5kX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNDctXFx0XFx0XFx0XFx0XFx0ICBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzc2LX1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYzozNzc6RVhQT1JUX1NZTUJPTChvZl9waHlfZ2V0X2FuZF9jb25uZWN0KTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNzgtXFxuLS1cXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaD00Mj1zdHJ1Y3QgcGh5X2RldmljZSAqXFxuaW5jbHVkZS9saW51eC9vZl9tZGlvLmg6NDM6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTQ0LVxcdFxcdCAgICAgICB2b2lkICgqaG5kbHIpKHN0cnVjdCBuZXRfZGV2aWNlICopKTtcXG4tLVxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oPTExNj1zdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpcXG5pbmNsdWRlL2xpbnV4L29mX21kaW8uaDoxMTc6b2ZfcGh5X2dldF9hbmRfY29ubmVjdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wLFxcbmluY2x1ZGUvbGludXgvb2ZfbWRpby5oLTExOC1cXHRcXHQgICAgICAgdm9pZCAoKmhuZGxyKShzdHJ1Y3QgbmV0X2RldmljZSAqKSlcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDU6NTkuNDAzMzQyOTk2WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjEyODc3MjMyODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIEknbSB0aGlua2luZyBhYm91dCB0aGlzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AgZnVuY3Rpb24uIEkga25vdyBpdCdzIHJlYWNoYWJsZSB0aHJvdWdoIGBvZl9waHlfZ2V0X2FuZF9jb25uZWN0YCBhbmQgZGlyZWN0bHkgZnJvbSBkcml2ZXJzLiBJdCdzIHBhcnQgb2YgdGhlIE9GIE1ESU8gc3Vic3lzdGVtLCB3aGljaCBpcyByZWxldmFudCBmb3IgZGV2aWNldHJlZS1iYXNlZCBNRElPIGJ1cyByZWdpc3RyYXRpb24uIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gdGhpcyBldmVuIGJlIHRyaWdnZXJlZCBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCBsaWtlIFFFTVU/XG5cbldlbGwsIFFFTVUgKmRvZXMqIHN1cHBvcnQgZGV2aWNldHJlZSwgYW5kIGEgbG90IG9mIGRyaXZlcnMgdXNlIGl0LCBhcyBpbiB0aGUgYGZ0Z21hYzEwMC5jYCBkcml2ZXIgaW4gdGhlIEFTUEVFRCBRRU1VIG1hY2hpbmVzLiBUaGF0IG1ha2VzIGl0IG1vcmUgbGlrZWx5LiBUaGVuIEkgcmVtZW1iZXIgdGhhdCBTeXprYWxsZXIsIG15IHByaW1hcnkgZnV6emluZyB0b29sLCBydW5zIG9uIHg4Nl82NCBwcmltYXJpbHksIGJ1dCBhbHNvIG9uIGFybTY0IGFuZCBvdGhlciBhcmNoaXRlY3R1cmVzLiBYODZfNjQgZG9lc24ndCBjb21tb25seSB1c2UgZGV2aWNldHJlZSwgYnV0IGl0J3MgKnBvc3NpYmxlKi5cblxuV2FpdCwgU3l6a2FsbGVyIGNhbiBpbmplY3QgZGV2aWNldHJlZSBub2RlcywgY2FuJ3QgaXQ/IE9yIHVzZSB2aXJ0dWFsIGRyaXZlcnMuIEkgbmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZXJlJ3MgYSB2aXJ0dWFsIGRyaXZlciB0aGF0IGNhbGxzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AsIG9yIGlmIGl0J3Mgc3RyaWN0bHkgaGFyZHdhcmUgZHJpdmVycy4gTGV0IG1lIGNoZWNrLi4uIHRoZSBsaXN0ZWQgZHJpdmVycyAoYGJjbWFzcF9pbnRmLmNgLCBgYmNtc3lzcG9ydC5jYCwgZXRjLiBhbGwgdGhlIHdheSB0byBgb2N0ZW9uL2V0aGVybmV0LmNgLCBwbHVzIHRoZSBsaXN0IHVzaW5nIGBvZl9waHlfZ2V0X2FuZF9jb25uZWN0YCkgYXJlIHByZXR0eSBtdWNoIGFsbCBoYXJkd2FyZSBkcml2ZXJzLiBJIGRvbid0IHNlZSBhbnl0aGluZyBsaWtlIGB2ZXRoYCwgYHR1bmAsIG9yIGBtYWNzZWNgIGluIHRoZXJlLCB0aGUgZHJpdmVycyBJJ2QgZXhwZWN0IHRvIHNlZSBpbiBhIHZpcnR1YWxpemVkIHNldHVwLlxuXG5CdXQsIEkgcmVtZW1iZXIgYGZpeGVkX3BoeV9yZWdpc3RlcmAgaXMgZGVmaW5lZCBpbiBgZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jYC4gVGhlIGNoYW5nZXMgYXJlIHNwZWNpZmljYWxseSBpbiBgb2ZfbWRpby5jYCwgd2hpY2ggcGFyc2VzIHRoZSBkZXZpY2V0cmVlLiBDYW4gU3l6a2FsbGVyIHRyaWdnZXIgdGhpcyBwYXRoPyBEb2VzIGl0IGhhdmUgYSBwc2V1ZG8tZGV2aWNlIGZyYW1ld29yaywgb3IgY2FuIGl0IGluamVjdCBEVCBub2Rlcz8gSXQgbG9va3MgbGlrZSBTeXprYWxsZXIgKmRvZXNuJ3QqIGR5bmFtaWNhbGx5IGluamVjdCBEVCBub2RlcyB0byB0cmlnZ2VyIHRoZSBwcm9iZSBvZiB0aGVzZSBoYXJkd2FyZSBkcml2ZXJzIHVubGVzcyB0aGUgUUVNVSBtYWNoaW5lIGFscmVhZHkgaGFzIHRoZW0gZGVmaW5lZC5cblxuQnV0IGhvbGQgb24uLi4gYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBpcyBqdXN0IGEgZnVuY3Rpb24uIFJlYWNoYWJpbGl0eSBpcyBrZXkuIElmIGl0J3MgcmVhY2hhYmxlLCBpdCdzIHdvcnRoIGZ1enppbmchIEknbSBnb2luZyB0byBxdWlja2x5IGNoZWNrIGlmIGBDT05GSUdfT0ZfTURJT2AgaXMgZW5hYmxlZCBpbiB0eXBpY2FsIFN5emthbGxlciBjb25maWdzLiBZZXAsIGl0IHVzdWFsbHkgaXMuXG5cbk9rYXksIGxldCdzIHNlZSBpZiB0aGVyZSBhcmUgKm90aGVyKiBjYWxsZXJzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjIwLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Njc4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ2OjIwLjY5MTA2OTQ0WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEwMDIxMTksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ2OjIwLjg3MjA4MDcyOVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NjY5NTY3NjUxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkluaXRpYWwgSW5xdWlyeSBvbiBSZWdpc3RlciBVdGlsaXphdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgd2UncmUgYXBwcm9hY2hpbmcgdGhpcyByZWdpc3RlciBhbGxvY2F0aW9uLCBhbmQgb25lIHNwZWNpZmljIHF1ZXN0aW9uIGp1bXBzIG91dDogV2hhdCBhYm91dCBgZml4ZWRfcGh5X3JlZ2lzdGVyYD8gSXQncyBhIGtleSBlbGVtZW50LCBhbmQgSSdtIGltbWVkaWF0ZWx5IGN1cmlvdXMgYWJvdXQgaG93IGl0cyBwcmVzZW5jZSBvciBhYnNlbmNlIGltcGFjdHMgdGhlIGN1cnJlbnQgZGVzaWduLiBIb3cgZG9lcyBpdCBmaXQgaW50byB0aGUgd2lkZXIgcGljdHVyZT8gSXMgaXQgaGFuZGxlZCBvcHRpbWFsbHkgb3IgaXMgdGhlcmUgc29tZSBvdGhlciBpc3N1ZSB0aGF0IG1heSBoYXZlIGFuIGVmZmVjdCBlbHNld2hlcmU/IFRoaXMgcXVlc3Rpb24gdGhlbiBleHRlbmRzIHRvIHRoZSBvdmVyYWxsIGltcGFjdCwgdGhlIGltcGxpY2F0aW9ucywgYW5kIHRoZSBwb3RlbnRpYWwgY29uc3RyYWludHMgdGhhdCBzdXJyb3VuZCB0aGUgcmVnaXN0ZXIuIFVsdGltYXRlbHksIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByb2xlIGFuZCBhbnkgaGlkZGVuIGNvbXBsZXhpdHkuIFRoaXMgd2FycmFudHMgZnVydGhlciBpbnZlc3RpZ2F0aW9uIHRvIGJlIHN1cmUgdGhhdCB0aGUgcmVnaXN0ZXIgaXMgYmVpbmcgaGFuZGxlZCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjk1MTgsIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0Nzo0Ny41Njc3NTk1MzZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTI1MTc5NjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZml4ZWRfcGh5X3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuYz00ODI9c3RhdGljIGludCBfX2luaXQgZHNhX2xvb3BfaW5pdCh2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkxLVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBOVU1fRklYRURfUEhZUzsgaSsrKVxcbmRyaXZlcnMvbmV0L2RzYS9kc2FfbG9vcC5jOjQ5MjpcXHRcXHRwaHlkZXZzW2ldID0gZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKCk7XFxuZHJpdmVycy9uZXQvZHNhL2RzYV9sb29wLmMtNDkzLVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmM9MjIzND1zdGF0aWMgaW50IGI0NF9yZWdpc3Rlcl9waHlfb25lKHN0cnVjdCBiNDQgKmJwKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYjQ0LmMtMjI3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iNDQuYzoyMjczOlxcdFxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2I0NC5jLTIyNzQtXFx0XFx0aWYgKCFJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JnbWFjLmM9MTQzOT1pbnQgYmdtYWNfcGh5X2Nvbm5lY3RfZGlyZWN0KHN0cnVjdCBiZ21hYyAqYmdtYWMpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NDgtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmdtYWMuYzoxNDQ5OlxcdHBoeV9kZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXFx1MDAyNmZwaHlfc3RhdHVzLCBOVUxMKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iZ21hYy5jLTE0NTAtXFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuYz0xODQ4PXN0YXRpYyBpbnQgZnRnbWFjMTAwX3Byb2JlX25jc2koc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRldixcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZhcmFkYXkvZnRnbWFjMTAwLmMtMTg2Ni1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jOjE4Njc6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZuY3NpX3BoeV9zdGF0dXMsIG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mYXJhZGF5L2Z0Z21hYzEwMC5jLTE4NjgtXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz0yOTgxPXN0YXRpYyBpbnQgZmVjX2VuZXRfbWlpX3Byb2JlKHN0cnVjdCBuZXRfZGV2aWNlICpuZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtMzAwMi1cXHRcXHRcXHRuZXRkZXZfaW5mbyhuZGV2LCBcXFwibm8gUEhZLCBhc3N1bWluZyBkaXJlY3QgY29ubmVjdGlvbiB0byBzd2l0Y2hcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjMwMDM6XFx0XFx0XFx0cGh5X2RldiA9IGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTMwMDQtXFx0XFx0XFx0aWYgKElTX0VSUihwaHlfZGV2KSkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYz0yMzg9c3RhdGljIGludCBoYmdfZml4ZWRfcGh5X2luaXQoc3RydWN0IGhiZ19wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTAtXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYzoyNTE6XFx0cGh5ZGV2ID0gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZoYmdfZml4ZWRfcGh5X3N0YXR1cywgTlVMTCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaGlzaWxpY29uL2hpYm1jZ2UvaGJnX21kaW8uYy0yNTItXFx0aWYgKElTX0VSUihwaHlkZXYpKSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00NTk9cmVnaXN0ZXJfcGh5OiB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjEtXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDYyOlxcdHBoeWRldiA9IGZpeGVkX3BoeV9yZWdpc3RlcihcXHUwMDI2c3RhdHVzLCBucCk7XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtNDYzLVxcdGlmIChJU19FUlIocGh5ZGV2KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYz0xMTg9c3RhdGljIGludCBmaXhlZF9waHlfZ2V0X2ZyZWVfYWRkcih2b2lkKVxcbi0tXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTEzMC1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTMxOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTMyLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTcyLX1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTczOkVYUE9SVF9TWU1CT0xfR1BMKGZpeGVkX3BoeV9yZWdpc3Rlcik7XFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jLTE3NC1cXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmM6MTc1OnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTc2LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODEtXFxuZHJpdmVycy9uZXQvcGh5L2ZpeGVkX3BoeS5jOjE4MjpcXHRyZXR1cm4gZml4ZWRfcGh5X3JlZ2lzdGVyKFxcdTAwMjZzdGF0dXMsIE5VTEwpO1xcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYy0xODMtfVxcbmRyaXZlcnMvbmV0L3BoeS9maXhlZF9waHkuYzoxODQ6RVhQT1JUX1NZTUJPTF9HUEwoZml4ZWRfcGh5X3JlZ2lzdGVyXzEwMGZkKTtcXG5kcml2ZXJzL25ldC9waHkvZml4ZWRfcGh5LmMtMTg1LVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0xOT1leHRlcm4gaW50IGZpeGVkX3BoeV9jaGFuZ2VfY2FycmllcihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LCBib29sIG5ld19jYXJyaWVyKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjIwOnN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXIoY29uc3Qgc3RydWN0IGZpeGVkX3BoeV9zdGF0dXMgKnN0YXR1cyxcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIxLVxcdFxcdFxcdFxcdCAgICAgIHN0cnVjdCBkZXZpY2Vfbm9kZSAqbnApO1xcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmg6MjI6c3RydWN0IHBoeV9kZXZpY2UgKmZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCh2b2lkKTtcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTIzLVxcbi0tXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaD0yOT1zdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oOjMwOmZpeGVkX3BoeV9yZWdpc3Rlcihjb25zdCBzdHJ1Y3QgZml4ZWRfcGh5X3N0YXR1cyAqc3RhdHVzLFxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzEtXFx0XFx0ICAgc3RydWN0IGRldmljZV9ub2RlICpucClcXG4tLVxcbmluY2x1ZGUvbGludXgvcGh5X2ZpeGVkLmgtMzUtXFxuaW5jbHVkZS9saW51eC9waHlfZml4ZWQuaDozNjpzdGF0aWMgaW5saW5lIHN0cnVjdCBwaHlfZGV2aWNlICpmaXhlZF9waHlfcmVnaXN0ZXJfMTAwZmQodm9pZClcXG5pbmNsdWRlL2xpbnV4L3BoeV9maXhlZC5oLTM3LXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDc6NTAuMjYwMjg0MTEyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE1NTA2NDQ4MTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgUG90ZW50aWFsIEltcGFjdCBvZiBhIFBhdGNoIHRvIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGFmZmVjdHMgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBpbiBgZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmNgLiBUaGlzIGZ1bmN0aW9uIGdldHMgdHJpZ2dlcmVkIHdoZW4gYSBkZXZpY2V0cmVlIG5vZGUgaGFzIGEgYGZpeGVkLWxpbmtgIHByb3BlcnR5LiBUaGUgcXVlc3Rpb24gaXMsIGhvdyBjYW4gc3l6a2FsbGVyIGhpdCB0aGlzPyBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhyb3VnaCBkZXZpY2V0cmVlIG92ZXJsYXlzLiBJIHJlbWVtYmVyIHN5emthbGxlciBjYW4gbG9hZCB0aG9zZSwgZG9lc24ndCBpdD8gU29tZXRoaW5nIHdpdGggYHN5el9tb3VudF9pbWFnZWAsIGFuZCBhbHNvIGBzeXpfaW5pdF9uZXRfc29ja2V0YCBhbmQgb3RoZXIgc3lzdGVtIGNhbGxzLi4uIGV2ZW4gYHN5el9nZW5ldGxpbmtfZ2V0X2ZhbWlseV9pZGAgYW5kIGBzeXpfdXNiX2Nvbm5lY3RgLiBZZXMsIHN5emthbGxlciAqZGVmaW5pdGVseSogZnV6emVzIGRldmljZXRyZWUgb3ZlcmxheXM7IGl0IGhhcyBgc3l6X21vdW50X2ltYWdlYCwgYW5kIEkga25vdyBpdCBsZXZlcmFnZXMgY29uZmlnZnMgZm9yIGxvYWRpbmcgdGhlbS5cblxuRmlyc3QsIEkgbmVlZCB0byBjb25maXJtIGBDT05GSUdfT0ZfT1ZFUkxBWWAgaXMgZW5hYmxlZC4gT2theSwgbm93IGxldCdzIHRoaW5rIGFib3V0IGhvdyB0aGUgZnVuY3Rpb24gaXMgdXNlZC4gSXQncyBjYWxsZWQgYnkgZHJpdmVycyBkdXJpbmcgdGhlaXIgcHJvYmUgc2VxdWVuY2UuIFNvLCBpZiBhIGRyaXZlciBnZXRzIHByb2JlZCB2aWEgYSBEVCBvdmVybGF5LCBpdCB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbi4gU28sIGlzIHRoZXJlIGFueSBkcml2ZXIgdGhhdCB3b3VsZCBiZSBwcm9iZWQgdmlhIGEgRFQgb3ZlcmxheSBhbmQgY2FsbCB0aGlzP1xuXG5XZWxsLCBhbnkgb2YgdGhlIGRyaXZlcnMgSSBsaXN0ZWQsIGlmIHRoZXkgYXJlIGNvbXBpbGVkIGluIGFuZCB0aGVpciBoYXJkd2FyZSBpcyBwcmVzZW50LCBvciBpZiB0aGV5IGFyZSBwbGF0Zm9ybSBkcml2ZXJzIGFuZCB3ZSBjcmVhdGUgYSBwbGF0Zm9ybSBkZXZpY2UgdmlhIERUIG92ZXJsYXkuIENyZWF0aW5nIGEgcGxhdGZvcm0gZGV2aWNlIGluIHRoZSBvdmVybGF5IHNvdW5kcyBsaWtlIGEgZ29vZCBhcHByb2FjaC4gQnV0LCB0aGUgaGFyZHdhcmUgd291bGQgc3RpbGwgbmVlZCB0byBiZSBwcmVzZW50IG9yIHRoZSBkcml2ZXIgbWlnaHQgZmFpbCBkdXJpbmcgcHJvYmUuIFRoaXMgaXMgYW4gaW1wb3J0YW50IGRldGFpbCEgQnV0LCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGlzIGNhbGxlZCAqZHVyaW5nKiBwcm9iZSwgbm90IGFzIGEgc2VwYXJhdGUgZnVuY3Rpb24uXG5cbkZvciBleGFtcGxlLCBgY3Bzd19wcm9iZV9kdGAgb3IgYGJjbWdlbmV0X21paV9vZl9pbml0YC4gSSBzaG91bGQgbG9vayBhdCBgZHJpdmVycy9uZXQvZXRoZXJuZXQvZmFyYWRheS9mdGdtYWMxMDAuY2AgYXMgYSBwb3NzaWJpbGl0eSwgc2luY2UgdGhpcyBpcyB1c2VkIG9uIFFFTVUgQVNQRUVEIG1hY2hpbmVzLiBCdXQgc3l6a2FsbGVyIHVzdWFsbHkgdXNlcyBgcWVtdS1zeXN0ZW0teDg2XzY0YCBvciBgcWVtdS1zeXN0ZW0tYWFyY2g2NGAuIEkgZG9uJ3QgdGhpbmsgYW55IG9mIHRob3NlIHBsYXRmb3JtIGRldmljZXMgYXJlIHByZXNlbnQgYnkgZGVmYXVsdCBpbiBgcWVtdS1zeXN0ZW0teDg2XzY0YC5cblxuV2FpdCwgaXNuJ3QgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBhbHNvIGNhbGxlZCBieSBgb2ZfcGh5X2dldF9hbmRfY29ubmVjdGA/IFRoYXQncyBhbm90aGVyIHBvdGVudGlhbCBhdmVudWUuIE9rYXksIHRoZSBjcml0aWNhbCBxdWVzdGlvbjogaXMgdGhlcmUgYW55IHdheSB0byByZWFjaCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgIGZyb20gdXNlcnNwYWNlICp3aXRob3V0KiBzcGVjaWZpYyBoYXJkd2FyZT8gSSBuZWVkIHRvIGNoZWNrIGlmIGl0J3MgcmVhY2hhYmxlIGZyb20gYW55IHZpcnR1YWwgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTM2MywiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU3NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0ODowNS43NjY3MzY0NTdaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE5NzQ1MjMzNzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2FzcDIvYmNtYXNwX2ludGYuYz0xMjM5PXN0cnVjdCBiY21hc3BfaW50ZiAqYmNtYXNwX2ludGVyZmFjZV9jcmVhdGUoc3RydWN0IGJjbWFzcF9wcml2ICpwcml2LFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYXNwMi9iY21hc3BfaW50Zi5jLTEyODEtXFx0aWYgKCFpbnRmLVxcdTAwM2VwaHlfZG4gXFx1MDAyNlxcdTAwMjYgb2ZfcGh5X2lzX2ZpeGVkX2xpbmsobmRldl9kbikpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmM6MTI4MjpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhuZGV2X2RuKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9hc3AyL2JjbWFzcF9pbnRmLmMtMTI4My1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmM9MjQ0MD1zdGF0aWMgaW50IGJjbV9zeXNwb3J0X3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9icm9hZGNvbS9iY21zeXNwb3J0LmMtMjUzMC1cXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZG4pKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vYmNtc3lzcG9ydC5jOjI1MzE6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZG4pO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2JjbXN5c3BvcnQuYy0yNTMyLVxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jPTUzOT1zdGF0aWMgaW50IGJjbWdlbmV0X21paV9vZl9pbml0KHN0cnVjdCBiY21nZW5ldF9wcml2ICpwcml2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtNTUxLVxcdGlmICghcHJpdi1cXHUwMDNlcGh5X2RuIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKGRuKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2Jyb2FkY29tL2dlbmV0L2JjbW1paS5jOjU1MjpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkbik7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvYnJvYWRjb20vZ2VuZXQvYmNtbWlpLmMtNTUzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZmVjX21haW4uYz01MjA0PWZlY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvZnJlZXNjYWxlL2ZlY19tYWluLmMtNTI3Ny1cXHRpZiAoIXBoeV9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jOjUyNzg6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9mZWNfbWFpbi5jLTUyNzktXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM9NjE2PXN0YXRpYyBpbnQgZ2Zhcl9vZl9pbml0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKm9mZGV2LCBzdHJ1Y3QgbmV0X2RldmljZSAqKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTc5MS1cXHRpZiAoIXByaXYtXFx1MDAzZXBoeV9ub2RlIFxcdTAwMjZcXHUwMDI2IG9mX3BoeV9pc19maXhlZF9saW5rKG5wKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L2ZyZWVzY2FsZS9naWFuZmFyLmM6NzkyOlxcdFxcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9mcmVlc2NhbGUvZ2lhbmZhci5jLTc5My1cXHRcXHRpZiAoZXJyKVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jPTI2NDM9c3RhdGljIGludCBlbWFjX2luaXRfcGh5KHN0cnVjdCBlbWFjX2luc3RhbmNlICpkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmMtMjY3Mi1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9pYm0vZW1hYy9jb3JlLmM6MjY3MzpcXHRcXHRcXHRyZXMgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhucCk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvaWJtL2VtYWMvY29yZS5jLTI2NzQtXFx0XFx0XFx0bmRldi1cXHUwMDNlcGh5ZGV2ID0gb2ZfcGh5X2ZpbmRfZGV2aWNlKG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmM9MTI5MT1zdGF0aWMgaW50IG5peGdlX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jLTEzNjYtXFx0aWYgKCFwaHlfbm9kZSBcXHUwMDI2XFx1MDAyNiBvZl9waHlfaXNfZml4ZWRfbGluayhwZGV2LVxcdTAwM2VkZXYub2Zfbm9kZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9uaS9uaXhnZS5jOjEzNjc6XFx0XFx0ZXJyID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsocGRldi1cXHUwMDNlZGV2Lm9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L25pL25peGdlLmMtMTM2OC1cXHRcXHRpZiAoZXJyIFxcdTAwM2MgMCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYz0xNDkyPXN0YXRpYyBpbnQgcmF2Yl9waHlfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqbmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3JlbmVzYXMvcmF2Yl9tYWluLmMtMTUxMi1cXHRcXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvcmVuZXNhcy9yYXZiX21haW4uYzoxNTEzOlxcdFxcdFxcdGVyciA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9yZW5lc2FzL3JhdmJfbWFpbi5jLTE1MTQtXFx0XFx0XFx0aWYgKGVycilcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYz0xOTE3PXN0YXRpYyBpbnQgZW1hY19wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvc3BhY2VtaXQvazFfZW1hYy5jLTE5NjQtXFx0aWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGRldi1cXHUwMDNlb2Zfbm9kZSkpIHtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC9zcGFjZW1pdC9rMV9lbWFjLmM6MTk2NTpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhkZXYtXFx1MDAzZW9mX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3NwYWNlbWl0L2sxX2VtYWMuYy0xOTY2LVxcdFxcdGlmIChyZXQpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3LmM9MTI4MT1zdGF0aWMgaW50IGNwc3dfcHJvYmVfZHQoc3RydWN0IGNwc3dfcGxhdGZvcm1fZGF0YSAqZGF0YSxcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcwLVxcdFxcdFxcdCAqL1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYzoxMzcxOlxcdFxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKHNsYXZlX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3cuYy0xMzcyLVxcdFxcdFxcdGlmIChyZXQpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM9MTI0Mz1zdGF0aWMgaW50IGNwc3dfcHJvYmVfZHQoc3RydWN0IGNwc3dfY29tbW9uICpjcHN3KVxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvY3Bzd19uZXcuYy0xMzE3LVxcdFxcdGlmIChvZl9waHlfaXNfZml4ZWRfbGluayhwb3J0X25wKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2Nwc3dfbmV3LmM6MTMxODpcXHRcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhwb3J0X25wKTtcXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9jcHN3X25ldy5jLTEzMTktXFx0XFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmM9MTcxOT1kYXZpbmNpX2VtYWNfb2ZfZ2V0X3BkYXRhKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYsIHN0cnVjdCBlbWFjX3ByaXYgKnByaXYpXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9kYXZpbmNpX2VtYWMuYy0xNzU3LVxcdFxcdFxcdHBkYXRhLVxcdTAwM2VwaHlfaWQgPSBOVUxMO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2RhdmluY2lfZW1hYy5jOjE3NTg6XFx0XFx0ZWxzZSBpZiAob2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsobnApIFxcdTAwM2U9IDApXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvZGF2aW5jaV9lbWFjLmMtMTc1OS1cXHRcXHRcXHRwcml2LVxcdTAwM2VwaHlfbm9kZSA9IG9mX25vZGVfZ2V0KG5wKTtcXG4tLVxcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jPTE2NTc9c3RhdGljIGludCBwcnVldGhfbmV0ZGV2X2luaXQoc3RydWN0IHBydWV0aCAqcHJ1ZXRoLFxcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoLmMtMTcxOS1cXHR9IGVsc2UgaWYgKG9mX3BoeV9pc19maXhlZF9saW5rKGV0aF9ub2RlKSkge1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jOjE3MjA6XFx0XFx0cmV0ID0gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsoZXRoX25vZGUpO1xcbmRyaXZlcnMvbmV0L2V0aGVybmV0L3RpL2ljc3NnL2ljc3NnX3BydWV0aC5jLTE3MjEtXFx0XFx0aWYgKHJldCkge1xcbi0tXFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jPTc1Nz1zdGF0aWMgaW50IHBydWV0aF9uZXRkZXZfaW5pdChzdHJ1Y3QgcHJ1ZXRoICpwcnVldGgsXFxuLS1cXG5kcml2ZXJzL25ldC9ldGhlcm5ldC90aS9pY3NzZy9pY3NzZ19wcnVldGhfc3IxLmMtODEzLVxcdH0gZWxzZSBpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsoZXRoX25vZGUpKSB7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jOjgxNDpcXHRcXHRyZXQgPSBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhldGhfbm9kZSk7XFxuZHJpdmVycy9uZXQvZXRoZXJuZXQvdGkvaWNzc2cvaWNzc2dfcHJ1ZXRoX3NyMS5jLTgxNS1cXHRcXHRpZiAocmV0KSB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz0zNDY9c3RydWN0IHBoeV9kZXZpY2UgKm9mX3BoeV9nZXRfYW5kX2Nvbm5lY3Qoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM1OC1cXHRpZiAob2ZfcGh5X2lzX2ZpeGVkX2xpbmsobnApKSB7XFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzU5OlxcdFxcdHJldCA9IG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKG5wKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy0zNjAtXFx0XFx0aWYgKHJldCBcXHUwMDNjIDApIHtcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTM3Nz1FWFBPUlRfU1lNQk9MKG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3QpO1xcbi0tXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmMtMzc5LS8qXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6MzgwOiAqIG9mX3BoeV9pc19maXhlZF9saW5rKCkgYW5kIG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKCkgbXVzdFxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTM4MS0gKiBzdXBwb3J0IHR3byBEVCBiaW5kaW5nczpcXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jPTQxMD1FWFBPUlRfU1lNQk9MKG9mX3BoeV9pc19maXhlZF9saW5rKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00MTEtXFxuZHJpdmVycy9uZXQvbWRpby9vZl9tZGlvLmM6NDEyOmludCBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGluayhzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wKVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jLTQxMy17XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYz00NTk9cmVnaXN0ZXJfcGh5OiB7XFxuLS1cXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NjktfVxcbmRyaXZlcnMvbmV0L21kaW8vb2ZfbWRpby5jOjQ3MDpFWFBPUlRfU1lNQk9MKG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rKTtcXG5kcml2ZXJzL25ldC9tZGlvL29mX21kaW8uYy00NzEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjQ4OjA3Ljc0MTI2NTYwNFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3OTM0Njg5MTIyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldDogYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBpbiBPRiBNRElPIGNvZGUqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXM6IHdoYXQncyB0aGUgZW50cnkgcG9pbnQ/IEkgc2VlIGBkcml2ZXJzL25ldC9kc2EvZHNhX2xvb3AuY2AgY2FsbHMgYGZpeGVkX3BoeV9yZWdpc3Rlcl8xMDBmZCgpYCwgd2hpY2ggaXMgaW50ZXJlc3RpbmcsIGJ1dCB0aGF0J3MgYSB2aXJ0dWFsIERTQSBzd2l0Y2ggZHJpdmVyLiBEb2VzIGl0IHJlbGF0ZSB0byB0aGUgdGFyZ2V0LCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgPyBOb3BlLiBUaGUgY29kZSBjYWxscyBhIHNpbWlsYXIsIGJ1dCBkaWZmZXJlbnQgZnVuY3Rpb24uXG5cblRoZW4sIHRoZSBrZXkgaW5zaWdodCBoaXRzIG1lOiB0aGlzIHBhdGNoIGlzICpzcGVjaWZpY2FsbHkqIHdpdGhpbiBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLiBDYW4gSSB0cmlnZ2VyIHRoYXQgdGhyb3VnaCBhIGRldmljZSB0cmVlIG92ZXJsYXk/IEFic29sdXRlbHkhIElmIEkgY2FuIGxvYWQgYSBEVCBvdmVybGF5IHRoYXQgYWRkcyBhIG5vZGUgd2l0aCBgZml4ZWQtbGlua2AgdG8gYW4gZXhpc3RpbmcgbmV0d29yayBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIG9yIGludHJvZHVjZSBhICp2aXJ0dWFsKiBkZXZpY2UgdGhhdCBwcm9iZXMgaXQsIEknbSBpbiBidXNpbmVzcy5cblxuTm93LCBkbyBhbnkgdmlydHVhbCBkZXZpY2VzIGV2ZW4gKnVzZSogYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYD8gTXkgaW5pdGlhbCByZWFjdGlvbiBpcyBubyDigJMgaXQgbG9va3MgbGlrZSBhbGwgdGhlIGRyaXZlcnMgbGlzdGVkIGFyZSBoYXJkd2FyZSBkcml2ZXJzLlxuXG5CdXQgd2FpdCEgSG9sZCBvbi4gSSBzZWUgYG9mX3BoeV9nZXRfYW5kX2Nvbm5lY3RgIGdldHMgY2FsbGVkIGJ5ICptYW55KiBkcml2ZXJzLiBJZiBJIGxvYWQgYSBEVCBvdmVybGF5IGZvciBhIGhhcmR3YXJlIGRyaXZlciB0aGF0J3MgYWxyZWFkeSBwcmVzZW50IGluIFFFTVUg4oCTIHNvbWV0aGluZyBsaWtlIGBmdGdtYWMxMDBgIG9yIGBmZWNgIOKAkyBJIHRoaW5rIEkgY2FuIG1ha2UgaXQgY2FsbCBgb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtgLiBUaGlzIGlzIHByb21pc2luZy5cblxuQW5kIG9mIGNvdXJzZSwgU3l6a2FsbGVyIGRvZXMgYSBsb3Qgb2YgdGVzdGluZyBvbiBgcWVtdS1zeXN0ZW0tYXJtYCBhbmQgYHFlbXUtc3lzdGVtLWFhcmNoNjRgIHdoZXJlIGBmZWNgIG9yIGBmdGdtYWMxMDBgIG1pZ2h0IGFscmVhZHkgYmUgcHJlc2VudC4gQmluZ28hXG5cblNvIHRoZSBwYXRjaCBpdHNlbGYgaXMgc21hbGwgYnV0IHRoZSBjaGFuZ2UgaXMgZnVuY3Rpb25hbC4gSXQncyBzZXR0aW5nIGBwaHlkZXYtXHUwMDNlbWRpby5kZXYuZndub2RlID0gb2ZfZndub2RlX2hhbmRsZShucCk7YCB3aGljaCBzZWVtcyBjb3JlIHRvIHRoZSBPRiBNRElPIGNvZGUuIEdpdmVuIHRoZSBwb3RlbnRpYWwgZm9yIERUIG92ZXJsYXkgaW5qZWN0aW9uLCBpcyB0aGlzIHdvcnRoIGZ1enppbmc/IFllcywgYWJzb2x1dGVseS4gSXQncyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHdoYXQgaXMgZXNzZW50aWFsbHkgYSBjb3JlIG5ldHdvcmtpbmcgY29tcG9uZW50LlxuXG5XaGF0IGNvbmZpZ3VyYXRpb25zIGFyZSBuZWVkZWQ/IEl0IHNlZW1zIEkgbmVlZCBgQ09ORklHX09GX01ESU9gIGFuZCBgQ09ORklHX0ZJWEVEX1BIWWAuIExldCdzIGp1c3QgZG91YmxlIGNoZWNrIHRoYXQgYENPTkZJR19GSVhFRF9QSFlgIGlzIHJlYWxseSBhIHJlcXVpcmVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTI4NywiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0OToyNy4wODgxNjAxNDNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUzMjIxNDUxOSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZml4ZWRfcGh5X3JlZ2lzdGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDk6MjcuNjIwMzg2NDIyWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjA4NTI4NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBQSFkgRHJpdmVyIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCBob3cgdGhlIGBmaXhlZF9waHlgIGRyaXZlciBpcyBoYW5kbGVkIGluIHRoZSBidWlsZCBzeXN0ZW0uIE15IGltbWVkaWF0ZSBpbnN0aW5jdCBpcyB0byBjaGVjayB0aGUgYGRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSBhbGwgdGhlIFBIWSBkcml2ZXIgY29tcGlsYXRpb24gbG9naWMgaXMgdXN1YWxseSBkZWZpbmVkLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcnVsZXMgb3IgZGVwZW5kZW5jaWVzIHJlbGF0ZWQgdG8gYGZpeGVkX3BoeWAgdGhlcmUuIEknbGwgYmUgbG9va2luZyBmb3IgaG93IGl0J3MgaW50ZWdyYXRlZCwgYW55IHNwZWNpYWwgZmxhZ3MsIG9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzIHdpdGggb3RoZXIgUEhZIGRyaXZlcnMuIEl0J3MgdGhlIGxvZ2ljYWwgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGJ1aWxkIGNvbmZpZ3VyYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MjU1LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NDk6MzIuNDgxMjQyMjg1WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDk2NjAzMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZml4ZWRfcGh5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9waHkvTWFrZWZpbGU9NjM9b2JqLSQoQ09ORklHX0RQODNURzcyMF9QSFkpXFx0Kz0gZHA4M3RnNzIwLm9cXG5kcml2ZXJzL25ldC9waHkvTWFrZWZpbGU6NjQ6b2JqLSQoQ09ORklHX0ZJWEVEX1BIWSlcXHRcXHQrPSBmaXhlZF9waHkub1xcbmRyaXZlcnMvbmV0L3BoeS9NYWtlZmlsZS02NS1vYmotJChDT05GSUdfSUNQTFVTX1BIWSlcXHQrPSBpY3BsdXMub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNlQyMjo0OTozMi42OTA5MTE4MDNaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODk4NDg0MzI4NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBldmFsdWF0aW5nIHRoaXM6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTmVlZCBmb3IgQ09ORklHX0ZJWEVEX1BIWSoqXG5cbk9rYXksIHNvIHRoZSBzeXN0ZW0gaXMgdGVsbGluZyBtZSBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgbmVjZXNzYXJ5LiBNeSBpbW1lZGlhdGUgaW5zdGluY3QgaXMgdG8gdW5kZXJzdGFuZCAqd2h5Ki4gSSBuZWVkIHRvIHRyYWNlIHRoaXMgYmFjay4gVGhlIG1vc3QgbGlrZWx5IGFyZWEgdG8gc3RhcnQgcG9raW5nIGFyb3VuZCBpcyBwcm9iYWJseSBpbiB0aGUgYG9mX21kaW8uY2AgZmlsZSDigJMgaXQgZGVhbHMgd2l0aCBNRElPIChNYW5hZ2VtZW50IERhdGEgSW5wdXQvT3V0cHV0KSB3aGljaCBpcyBvZnRlbiB1c2VkIGZvciBQSFkgKFBoeXNpY2FsIExheWVyKSBjb21tdW5pY2F0aW9uLCBlc3BlY2lhbGx5IHdpdGhpbiB0aGUgY29udGV4dCBvZiBEZXZpY2UgVHJlZS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBkZXBlbmRlbmNpZXMgb2YgYG9mX21kaW8uY2AgYW5kIHNlZSB3aGVyZSBgQ09ORklHX0ZJWEVEX1BIWWAgaXMgdXNlZCBpbiB0aGF0IGNvbnRleHQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbnMuIFRoaXMgc2hvdWxkIGlsbHVtaW5hdGUgdGhlIHJhdGlvbmFsZSBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNjU0NSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjUxOjAyLjUzOTM0OTA0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjU0MDU3ODI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBPRl9NRElPXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC9tZGlvL0tjb25maWc9OD1jb25maWcgRldOT0RFX01ESU9cXG4tLVxcbmRyaXZlcnMvbmV0L21kaW8vS2NvbmZpZy0xMi1cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWc6MTM6Y29uZmlnIE9GX01ESU9cXG5kcml2ZXJzL25ldC9tZGlvL0tjb25maWctMTQtXFx0ZGVmX3RyaXN0YXRlIE9GXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjUxOjA0LjE5MzQxNDAyNloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ2OTk4NzA2NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjcmFmdGVkIHdpdGggdGhlIHVuZGVyc3RhbmRpbmcgdGhhdCBJJ20gZGlzY3Vzc2luZyB0aGlzIHdpdGggYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBvZiBPRl9NRElPKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBgT0ZfTURJT2AuLi4gZXNzZW50aWFsbHksIHRoYXQncyBkZWZpbmVkIGFzIGEgdHJpc3RhdGUgZGVwZW5kZW5jeSBvbiBgT0ZgLiBTbywgdGhlIGltcGxpY2F0aW9ucyBhcmUgc3RyYWlnaHRmb3J3YXJkOiBJZiB0aGUgYmFzZSBvcHRpb24gYE9GYCBpcyBlbmFibGVkLCB0aGVuIGBPRl9NRElPYCBiZWNvbWVzIGFjdGl2ZS4gTm8gc3VycHJpc2VzIHRoZXJlLiBCdXQsIEkgbmVlZCB0byBjb25zaWRlciBhbGwgYW5nbGVzLlxuXG5NeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYE9GX01ESU9gIGFuZCB0aGUgYEZJWEVEX1BIWWAgY29uZmlndXJhdGlvbiBvcHRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2ODYwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTE6MzAuNjYzNDAzNDUzWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzg3NDM3OTc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBGSVhFRF9QSFlcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvcGh5L0tjb25maWc9NDk9Y29uZmlnIFBIWUxJQl9MRURTXFxuLS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZy01NS1cXG5kcml2ZXJzL25ldC9waHkvS2NvbmZpZzo1Njpjb25maWcgRklYRURfUEhZXFxuZHJpdmVycy9uZXQvcGh5L0tjb25maWctNTctXFx0dHJpc3RhdGUgXFxcIk1ESU8gQnVzL1BIWSBlbXVsYXRpb24gd2l0aCBmaXhlZCBzcGVlZC9saW5rIFBIWXNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI2VDIyOjUxOjMyLjQ1MDg1MDgyMVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQxNDQ5MTk0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBgQ09ORklHX09GX01ESU9gIGFuZCBgQ09ORklHX0ZJWEVEX1BIWWAganVtcCBvdXQgYXMgdGhlIGtleSBjb25maWd1cmF0aW9ucyBpbnZvbHZlZCBoZXJlLiBNeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiB0aGUgYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBmdW5jdGlvbjsgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCdzIGNoYW5naW5nIHdpdGggaXQuIElzIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbj8gTGV0J3MgY2hlY2sgdGhlIHBhdGNoLlxuXG5BaCwgaXQgc2VlbXMgdGhlIHBhdGNoIGV4Y2x1c2l2ZWx5IG1vZGlmaWVzIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuIExldCBtZSBtYWtlIHN1cmUuXG5gYGBjXG5yZWdpc3Rlcl9waHk6IHtcblx0c3RydWN0IHBoeV9kZXZpY2UgKnBoeWRldjtcblxuXHRwaHlkZXYgPSBmaXhlZF9waHlfcmVnaXN0ZXIoXHUwMDI2c3RhdHVzLCBucCk7XG5cdGlmIChJU19FUlIocGh5ZGV2KSlcblx0XHRyZXR1cm4gUFRSX0VSUihwaHlkZXYpO1xuXG5cdHBoeWRldi1cdTAwM2VtZGlvLmRldi5md25vZGUgPSBvZl9md25vZGVfaGFuZGxlKG5wKTtcblx0cmV0dXJuIDA7XG59XG5gYGBcblllcywgYWxsIHRoaXMgcGF0Y2ggZG9lcyBpcyBzZXQgdGhlIGBmd25vZGVgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjaGFuZ2UgdGhhdCBhbGxvd3Mgb3RoZXIgY29kZSB0byBkaXNjb3ZlciB0aGUgZmlybXdhcmUgbm9kZSBvZiB0aGUgZml4ZWQgUEhZIGRldmljZS4gSXQncyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uLCBhbmQgdGhhdCdzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgY2FuIGxlYWQgdG8gc3VidGxlIGlzc3VlcyBkb3duIHRoZSBsaW5lLiBJJ2xsIGZsYWcgdGhpcyBhcyBoYXZpbmcgcG90ZW50aWFsIGZvciBmdXp6aW5nLlxuXG5NeSBjb25jbHVzaW9uIGlzOiAqKldvcnRoRnV6emluZz10cnVlKiouXG5cblNwZWNpZmljYWxseSwgbXkgZm9jdXMgc2hvdWxkIGJlIG9uIGBvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua2AuXG5cbldlIHdpbGwgZW5hYmxlIHRoZSBjb25maWdzOiBgT0ZfTURJT2AsIGBGSVhFRF9QSFlgLlxuXG5UaGUgcmVhc29uaW5nIGlzIHRoYXQgdGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gYG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rYCBieSBzZXR0aW5nIHRoZSBgZndub2RlYCBvZiB0aGUgcmVnaXN0ZXJlZCBmaXhlZCBQSFkgZGV2aWNlLiBUaGlzIGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUgb2YgbmV0d29yayBkcml2ZXJzIHVzaW5nIGZpeGVkLWxpbmsgaW4gdGhlaXIgZGV2aWNldHJlZSBub2RlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzE2NCwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjZUMjI6NTE6NDIuODY1MzQ1ODU2WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg1MTc3MzYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPRl9NRElPXCIsXG4gICAgXCJGSVhFRF9QSFlcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvZl9waHlfcmVnaXN0ZXJfZml4ZWRfbGlua1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1ha2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gb2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmsgYnkgc2V0dGluZyB0aGUgZndub2RlIG9mIHRoZSByZWdpc3RlcmVkIGZpeGVkIFBIWSBkZXZpY2UuIFRoaXMgY2FuIGJlIHJlYWNoZWQgZHVyaW5nIGRldmljZSBwcm9iZSBvZiBuZXR3b3JrIGRyaXZlcnMgdXNpbmcgZml4ZWQtbGluayBpbiB0aGVpciBkZXZpY2V0cmVlIG5vZGUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT0ZfTURJT1wiLFxuICAgIFwiRklYRURfUEhZXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib2ZfcGh5X3JlZ2lzdGVyX2ZpeGVkX2xpbmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtYWtlcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIG9mX3BoeV9yZWdpc3Rlcl9maXhlZF9saW5rIGJ5IHNldHRpbmcgdGhlIGZ3bm9kZSBvZiB0aGUgcmVnaXN0ZXJlZCBmaXhlZCBQSFkgZGV2aWNlLiBUaGlzIGNhbiBiZSByZWFjaGVkIGR1cmluZyBkZXZpY2UgcHJvYmUgb2YgbmV0d29yayBkcml2ZXJzIHVzaW5nIGZpeGVkLWxpbmsgaW4gdGhlaXIgZGV2aWNldHJlZSBub2RlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowhfs5w[1] Phase: Succeeded StartedAt: 2026-06-26 22:51:55 +0000 UTC FinishedAt: 2026-06-26 22:51:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-26 22:51:56 +0000 UTC FinishedAt: 2026-06-26 22:51:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2] Phase: Succeeded StartedAt: 2026-06-26 22:51:56 +0000 UTC FinishedAt: 2026-06-27 00:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-26 22:51:56 +0000 UTC FinishedAt: 2026-06-27 00:50:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-26 22:51:56 +0000 UTC FinishedAt: 2026-06-26 22:52:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-26 22:51:56 +0000 UTC FinishedAt: 2026-06-26 22:52:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowhfs5w/series-workflowhfs5w-convert-artifact-721468743/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-26 22:52:19 +0000 UTC FinishedAt: 2026-06-26 23:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-26 22:52:19 +0000 UTC FinishedAt: 2026-06-26 23:21:25 +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:*207e46e3-028a-488b-bcd6-7d2c6cf70613,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-workflowhfs5w/series-workflowhfs5w-convert-artifact-721468743/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": "b230b567-79e0-4589-9102-fa5e607d238c", "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-workflowhfs5w/series-workflowhfs5w-build-action-4205561309/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-26 22:52:19 +0000 UTC FinishedAt: 2026-06-26 23:21:15 +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:*207e46e3-028a-488b-bcd6-7d2c6cf70613,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-workflowhfs5w/series-workflowhfs5w-convert-artifact-721468743/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": "b230b567-79e0-4589-9102-fa5e607d238c", "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-workflowhfs5w/series-workflowhfs5w-build-action-4205561309/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-26 23:21:25 +0000 UTC FinishedAt: 2026-06-26 23:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-26 23:21:25 +0000 UTC FinishedAt: 2026-06-26 23:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-26 23:21:25 +0000 UTC FinishedAt: 2026-06-26 23:22:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-26 23:21:25 +0000 UTC FinishedAt: 2026-06-26 23:21:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowhfs5w/series-workflowhfs5w-convert-artifact-2555998582/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-26 23:22:09 +0000 UTC FinishedAt: 2026-06-26 23:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-26 23:22:09 +0000 UTC FinishedAt: 2026-06-26 23:24:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b230b567-79e0-4589-9102-fa5e607d238c,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-workflowhfs5w/series-workflowhfs5w-build-action-4205561309/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-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-26 23:24:26 +0000 UTC FinishedAt: 2026-06-26 23:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-26 23:24:26 +0000 UTC FinishedAt: 2026-06-26 23:24:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-26 23:24:26 +0000 UTC FinishedAt: 2026-06-26 23:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-26 23:24:26 +0000 UTC FinishedAt: 2026-06-26 23:51:14 +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:*207e46e3-028a-488b-bcd6-7d2c6cf70613,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-workflowhfs5w/series-workflowhfs5w-convert-artifact-2555998582/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": "72ed0d6e-c096-47fd-8fe6-508abac7ccfd", "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-workflowhfs5w/series-workflowhfs5w-build-action-4041906298/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-26 23:24:26 +0000 UTC FinishedAt: 2026-06-26 23:50:53 +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:*207e46e3-028a-488b-bcd6-7d2c6cf70613,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-workflowhfs5w/series-workflowhfs5w-convert-artifact-2555998582/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": "72ed0d6e-c096-47fd-8fe6-508abac7ccfd", "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-workflowhfs5w/series-workflowhfs5w-build-action-4041906298/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-26 23:51:14 +0000 UTC FinishedAt: 2026-06-26 23:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-26 23:51:14 +0000 UTC FinishedAt: 2026-06-26 23:51:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-26 23:51:14 +0000 UTC FinishedAt: 2026-06-26 23:53:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-26 23:51:14 +0000 UTC FinishedAt: 2026-06-26 23:53:11 +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:*72ed0d6e-c096-47fd-8fe6-508abac7ccfd,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-workflowhfs5w/series-workflowhfs5w-build-action-4041906298/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-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-26 23:53:22 +0000 UTC FinishedAt: 2026-06-27 00:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-26 23:53:22 +0000 UTC FinishedAt: 2026-06-27 00:50:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"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:*b230b567-79e0-4589-9102-fa5e607d238c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*72ed0d6e-c096-47fd-8fe6-508abac7ccfd,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-workflowhfs5w/series-workflowhfs5w-build-action-4205561309/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-workflowhfs5w/series-workflowhfs5w-build-action-4041906298/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-26 23:53:22 +0000 UTC FinishedAt: 2026-06-26 23:54:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-26 23:53:22 +0000 UTC FinishedAt: 2026-06-26 23:54:41 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"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-workflowhfs5w/series-workflowhfs5w-convert-artifact-2464101275/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-26 23:53:22 +0000 UTC FinishedAt: 2026-06-26 23:53:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-26 23:53:22 +0000 UTC FinishedAt: 2026-06-26 23:53:22 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-26 23:53:23 +0000 UTC FinishedAt: 2026-06-26 23:53:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-26 23:54:53 +0000 UTC FinishedAt: 2026-06-27 00:50:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhfs5w[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["of_phy_register_fixed_link"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["OF_MDIO","FIXED_PHY"],"series_id":"820c0c2c-85c9-4a98-bc7d-1cdac18a855d","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-26 23:54:54 +0000 UTC FinishedAt: 2026-06-27 00:50:16 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b230b567-79e0-4589-9102-fa5e607d238c,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*72ed0d6e-c096-47fd-8fe6-508abac7ccfd,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-workflowhfs5w/series-workflowhfs5w-build-action-4205561309/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-workflowhfs5w/series-workflowhfs5w-build-action-4041906298/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-workflowhfs5w/series-workflowhfs5w-convert-artifact-2464101275/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,}