Name: series-workflow95kwf Phase: Succeeded StartedAt: 2026-07-13 19:39:52 +0000 UTC FinishedAt: 2026-07-14 00:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[0] Phase: Succeeded StartedAt: 2026-07-13 19:39:52 +0000 UTC FinishedAt: 2026-07-13 19:53:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[0].run-triage Phase: Succeeded StartedAt: 2026-07-13 19:39:52 +0000 UTC FinishedAt: 2026-07-13 19:53:33 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "546800ac-b045-43da-8a3c-281433429d20" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gre_tunnel_init", "ip6gre_tnl_init_features", "ipgre_xmit", "gre_tap_xmit", "erspan_xmit", "ip6gre_tunnel_xmit", "ip6erspan_tunnel_xmit" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyYjMzQ7LAogICAgJiMzNDtpcGdyZV94bWl0JiMzNDssCiAgICAmIzM0O2dyZV90YXBfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVx1MDAzZWxsdHggPSB0cnVlYCBhc3NpZ25tZW50IGJlZm9yZSBwb3RlbnRpYWwgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGBsbHR4YCBmbGFnICh3aGljaCBpbmRpY2F0ZXMgbG9ja2xlc3MgdHJhbnNtaXQpIGlzIGFsd2F5cyBzZXQgZm9yIEdSRSBkZXZpY2VzLCBldmVuIGlmIHRoZXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB1bnN1cHBvcnRlZCBvZmZsb2FkIGZlYXR1cmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG92ZXIgR1JFIHR1bm5lbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMDVmNjA0OWEwZjQ4MjU1OTljYmU2ZGY5YWJmM2M5MzI5NGQzMTE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTk6NTI6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuY1xuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTAxOCw2ICYjNDM7MTAxOCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXG4mIzQzO1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuJiM0MztcbiBcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxuIFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cbiBcdCAqL1xuQEAgLTEwMjksOCAmIzQzOzEwMzEsNiBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuLVxuLVx0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uYjg0MzExNmU5YjcwM2MgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9ncmUuY1xuQEAgLTE0NTUsNiAmIzQzOzE0NTUsOCBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFxuJiM0MztcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiYjNDM7XG4gXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbiBcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4gXHQgKi9cbkBAIC0xNDY2LDggJiM0MzsxNDY4LDYgQEAgc3RhdGljIHZvaWQgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4gXHRkZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4tXG4tXHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyYjMzQ7LAogICAgJiMzNDtpcGdyZV94bWl0JiMzNDssCiAgICAmIzM0O2dyZV90YXBfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVx1MDAzZWxsdHggPSB0cnVlYCBhc3NpZ25tZW50IGJlZm9yZSBwb3RlbnRpYWwgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGBsbHR4YCBmbGFnICh3aGljaCBpbmRpY2F0ZXMgbG9ja2xlc3MgdHJhbnNtaXQpIGlzIGFsd2F5cyBzZXQgZm9yIEdSRSBkZXZpY2VzLCBldmVuIGlmIHRoZXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB1bnN1cHBvcnRlZCBvZmZsb2FkIGZlYXR1cmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG92ZXIgR1JFIHR1bm5lbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMwNWY2MDQ5YTBmNDgyNTU5OWNiZTZkZjlhYmYzYzkzMjk0ZDMxMTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAxOTo1MjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmMKaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9ncmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF9ncmUuYwpAQCAtMTAxOCw2ICYjNDM7MTAxOCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJZGV2LSZndDtmZWF0dXJlcwkJfD0gR1JFX0ZFQVRVUkVTOwogCWRldi0mZ3Q7aHdfZmVhdHVyZXMJfD0gR1JFX0ZFQVRVUkVTOwogCiYjNDM7CWRldi0mZ3Q7bGx0eCA9IHRydWU7CiYjNDM7CiAJLyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyCiAJICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS4KIAkgKi8KQEAgLTEwMjksOCAmIzQzOzEwMzEsNiBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJZGV2LSZndDtmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTsKIAlkZXYtJmd0O2h3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwotCi0JZGV2LSZndDtsbHR4ID0gdHJ1ZTsKIH0KIAogc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jCmluZGV4IDdjMDlhMjY5YjM1MjE2Li5iODQzMTE2ZTliNzAzYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9ncmUuYwpAQCAtMTQ1NSw2ICYjNDM7MTQ1NSw4IEBAIHN0YXRpYyB2b2lkIGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7ZmVhdHVyZXMJCXw9IEdSRTZfRkVBVFVSRVM7CiAJZGV2LSZndDtod19mZWF0dXJlcwl8PSBHUkU2X0ZFQVRVUkVTOwogCiYjNDM7CWRldi0mZ3Q7bGx0eCA9IHRydWU7CiYjNDM7CiAJLyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyCiAJICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS4KIAkgKi8KQEAgLTE0NjYsOCAmIzQzOzE0NjgsNiBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCWRldi0mZ3Q7ZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7CiAJZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTsKLQotCWRldi0mZ3Q7bGx0eCA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbnQgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjUzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBSZW9yZGVyaW5nIEJ1ZyBpbiBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQganVzdCBzaHVmZmxlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIGEgZmV3IGxpbmVzIHVwIGluIGBfX2dyZV90dW5uZWxfaW5pdGAgZm9yIGJvdGggSVB2NCBhbmQgSVB2NiBHUkUgdHVubmVscy4gIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MganVzdCBhIHJlb3JkZXJpbmcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdHJlYXQgdGhpcyBhcyBhIHBvdGVudGlhbGx5IG1pbm9yLCBwZXJoYXBzIGNvc21ldGljIGNoYW5nZS4gIEJ1dCwgYXMgYSBzZWFzb25lZCBkZXZlbG9wZXIsIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXM6IGRvZXMgdGhpcyAqYWN0dWFsbHkqIGNoYW5nZSBhbnl0aGluZyBmdW5jdGlvbmFsbHk/IEV2ZW4gdGhlIHNtYWxsZXN0IGNoYW5nZSBjYW4gaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcywgZXNwZWNpYWxseSBpbiB0aGUga2VybmVsLgoKU28sIEkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBzbmlwcGV0OgoKYGBgYwoJZGV2LSZndDtmZWF0dXJlcwkJfD0gR1JFX0ZFQVRVUkVTOwoJZGV2LSZndDtod19mZWF0dXJlcwl8PSBHUkVfRkVBVFVSRVM7CgoJZGV2LSZndDtsbHR4ID0gdHJ1ZTsKCgkvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDIKCSAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuCgkgKi8KCWlmICghKHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyAmYW1wOyBUVU5ORUxfU0VRKSkgewoJCS8qIGh3X2VuY19mZWF0dXJlcyBpcyBzZXQgaW4gZ3JlX3R1bm5lbF9pbml0KCkgKi8KCQlkZXYtJmd0O2h3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwoJfQoKCWRldi0mZ3Q7ZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7CglkZXYtJmd0O2h3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwpgYGAKClByZXZpb3VzbHksIGBkZXYtJmd0O2xsdHggPSB0cnVlO2Agd2FzIGF0IHRoZSAqZW5kKiBvZiB0aGlzIGJsb2NrLiBOb3csIGl0JiMzOTtzIG1vdmVkICpiZWZvcmUqIHRoZSBjb25kaXRpb25hbCBjaGVjayByZWxhdGVkIHRvIGBUVU5ORUxfU0VRYC4gIE15IGZpcnN0IHRob3VnaHQgaXMsIGRvZXMgYW55dGhpbmcgKmluIGJldHdlZW4qIHJlYWQgYGRldi0mZ3Q7bGx0eGA/IElmIHNvbWV0aGluZyByZWxpZXMgb24gdGhlIHZhbHVlIG9mIGBkZXYtJmd0O2xsdHhgIGJlZm9yZSBpdCYjMzk7cyBzZXQsIHRoaXMgcmVvcmRlcmluZyBjb3VsZCBiZSBkaXNhc3Ryb3VzLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQgcmVhZHMgYHR1bm5lbC0mZ3Q7cGFybXMub19mbGFnc2AgYW5kIGNvbmRpdGlvbmFsbHkgc2V0cyBgZGV2LSZndDtod19mZWF0dXJlc2AuICBUaGVyZSYjMzk7cyBubyBkaXJlY3QgcmVhZCBvZiBgZGV2LSZndDtsbHR4YCBpbiB0aGlzIHNlY3Rpb24uICBTbywgYXQgYSBnbGFuY2UsIEkgZG9uJiMzOTt0IHNlZSBhbiBvYnZpb3VzIHByb2JsZW0uICBObyBpbnRlcm1lZGlhdGUgZnVuY3Rpb24gY2FsbHMsIG1hY3Jvcywgb3IgYml0ZmllbGQgbWFuaXB1bGF0aW9ucyB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkLgoKTm93LCBteSBtaW5kIHN0YXJ0cyB0byB3YW5kZXI6IHdoeSBkaWQgdGhlIGF1dGhvciBtYWtlIHRoaXMgY2hhbmdlPyBXYXMgaXQgZm9yIGNsYXJpdHk/IFBlcmZvcm1hbmNlPyBEaWQgaXQgZml4IGEgc3VidGxlIHJhY2UgY29uZGl0aW9uIG9yIGEgcG90ZW50aWFsIHBhdGggd2l0aCBhbiBlYXJseSByZXR1cm4sIHdoZXJlIGBkZXYtJmd0O2xsdHhgIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQ/ICBJJiMzOTtkIGxvdmUgdG8gc2VlIHRoZSBjb21taXQgbWVzc2FnZSByaWdodCBub3chIFdpdGhvdXQgdGhhdCwgSSYjMzk7bSByZWR1Y2VkIHRvIHNwZWN1bGF0aW5nLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgbWFjcm8gdGhhdCByZWFkcyBgZGV2LSZndDtsbHR4YCBvciBpZiB0aGUgYXV0aG9yIG1lbnRpb25lZCB0aGlzIGFueXdoZXJlIGVsc2UuCgpMZXQmIzM5O3Mgc2VlLiBJcyBgZGV2LSZndDtsbHR4YCBhIGJpdGZpZWxkPyAgQWgsIGl0JiMzOTtzIGEgYm9vbGVhbiBpbiBgc3RydWN0IG5ldF9kZXZpY2VgLiAgSSByZWNhbGwgYE5FVElGX0ZfTExUWGAsIGEgZGVwcmVjYXRlZCBmbGFnLiAgSXMgdGhpcyByZWxhdGVkPyAgQWgsIGBkZXYtJmd0O2xsdHhgIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgaXQuCgpTbywgSSYjMzk7bSBzdHVjayBoZXJlLiAgSXQgc2VlbXMgdGhlIGNvcmUgbG9naWMgKnNob3VsZG4mIzM5O3QqIGJlIGFmZmVjdGVkLCBidXQsIEkgYW0gbGVmdCB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZXJlJiMzOTtzIHByb2JhYmx5IGEgZ29vZCByZWFzb24gZm9yIHRoaXMgY2hhbmdlLCBhbmQgSSBuZWVkIHRvIGZpbmQgdGhlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCBpdCBiZXR0ZXIuICBJIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHRoZSBjb250ZXh0IGluIGBuZXQvaXB2NC9pcF9ncmUuY2AgYXJvdW5kIGxpbmUgMTAxOCB0byBzZWUgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDEwOlx0XG4xMDExOlx0XHR0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuMTAxMjpcdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4xMDEzOlx0XHR0dW5uZWwtXHUwMDNlcGFybXMuaXBoLnByb3RvY29sID0gSVBQUk9UT19HUkU7XG4xMDE0Olx0XG4xMDE1Olx0XHR0dW5uZWwtXHUwMDNlaGxlbiA9IHR1bm5lbC1cdTAwM2V0dW5faGxlbiAmIzQzOyB0dW5uZWwtXHUwMDNlZW5jYXBfaGxlbjtcbjEwMTY6XHRcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0dW5uZWwtXHUwMDNlaGxlbiAmIzQzOyBzaXplb2YodHVubmVsLVx1MDAzZXBhcm1zLmlwaCk7XG4xMDE3Olx0XG4xMDE4Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuMTAxOTpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4xMDIwOlx0XG4xMDIxOlx0XHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4xMDIyOlx0XG4xMDIzOlx0XHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbjEwMjQ6XHRcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4xMDI1Olx0XHQgKi9cbjEwMjY6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxuMTAyNzpcdFx0XHRyZXR1cm47XG4xMDI4Olx0XHRpZiAodGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykgXHUwMDI2XHUwMDI2XG4xMDI5Olx0XHQgICAgdHVubmVsLVx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXG4xMDMwOlx0XHRcdHJldHVybjtcbjEwMzE6XHRcbjEwMzI6XHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzM6XHRcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzQ6XHR9XG4xMDM1Olx0XG4xMDM2Olx0c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuMTAzNzpcdHtcbjEwMzg6XHRcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4xMDM5Olx0XHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGg7XG4xMDQwOlx0XG4xMDQxOlx0XHRfX2dyZV90dW5uZWxfaW5pdChkZXYpO1xuMTA0MjpcdFxuMTA0MzpcdFx0X19kZXZfYWRkcl9zZXQoZGV2LCBcdTAwMjZpcGgtXHUwMDNlc2FkZHIsIDQpO1xuMTA0NDpcdFx0bWVtY3B5KGRldi1cdTAwM2Vicm9hZGNhc3QsIFx1MDAyNmlwaC1cdTAwM2VkYWRkciwgNCk7XG4xMDQ1Olx0XG4xMDQ2Olx0XHRkZXYtXHUwMDNlZmxhZ3NcdFx0PSBJRkZfTk9BUlA7XG4xMDQ3Olx0XHRuZXRpZl9rZWVwX2RzdChkZXYpO1xuMTA0ODpcdFx0ZGV2LVx1MDAzZWFkZHJfbGVuXHRcdD0gNDtcbjEwNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDYyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN1YnRsZSBHUkUgVHVubmVsIERyaXZlciBDaGFuZ2UqKgoKT2theSwgaGVyZSB3ZSBnby4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIGFoYSEgVGhlcmUgYXJlIGluZGVlZCBlYXJseSByZXR1cm4gcG9pbnRzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJIGRpZG4mIzM5O3QgaW1tZWRpYXRlbHkgc2VlIHRoZW0uIFNwZWNpZmljYWxseSwgdGhlIGJpdCB0ZXN0cyBmb3IgYElQX1RVTk5FTF9TRVFfQklUYCBhbmQgYElQX1RVTk5FTF9DU1VNX0JJVGAgYXJlIHNob3J0LWNpcmN1aXRpbmcgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50LgoKSWYgZWl0aGVyIG9mIHRob3NlIGNvbmRpdGlvbnMgYXJlIG1ldCwgdGhlIGZ1bmN0aW9uIGV4aXRzIGVhcmx5LiBJJiMzOTttIHJlYWxpemluZyB0aGF0IHRoZSBsaW5lIGBkZXYtJmd0O2xsdHggPSB0cnVlYCB3YXMgcHJldmlvdXNseSBza2lwcGVkIHdoZW4gdGhvc2UgZWFybHkgcmV0dXJucyBoYXBwZW5lZC4gU28sIGlmIEkgbW92ZSBgZGV2LSZndDtsbHR4ID0gdHJ1ZWAgKnVwKiBhYm92ZSB0aG9zZSByZXR1cm4gc3RhdGVtZW50cywgSSYjMzk7bSBlZmZlY3RpdmVseSBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRyaXZlci4gTm93LCBgZGV2LSZndDtsbHR4YCB3aWxsIGJlIHNldCB0byBgdHJ1ZWAgZXZlbiB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LgoKVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQmIzM5O3Mgbm90IGp1c3QgY29zbWV0aWMuIFRoZSBzZXR0aW5nIG9mIGBkZXYtJmd0O2xsdHhgIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2Ugd2lsbCB1c2UgdGhlIHFkaXNjIGxvY2sgKGB0eHEtJmd0O194bWl0X2xvY2tgKSBkdXJpbmcgdHJhbnNtaXQuIElmIGBkZXYtJmd0O2xsdHhgIGlzICpub3QqIHNldCwgdGhlIGxvY2sgKndpbGwqIGJlIHVzZWQuIElmIGl0ICppcyogc2V0LCB0aGUgZGV2aWNlIHdpbGwgYmUgbG9ja2xlc3MuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyBjb25jdXJyZW5jeSBhbmQgbG9ja2luZyBiZWhhdmlvciB3aXRoaW4gdGhlIEdSRSB0dW5uZWwgZHJpdmVyLiBUaGlzIHdhcnJhbnRzIGNhcmVmdWwgcmV2aWV3LgoKT2theSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhpcyBjaGFuZ2UgaW50ZXJhY3RzIHdpdGggcmVsYXRlZCBpbml0aWFsaXphdGlvbnMsIHBhcnRpY3VsYXJseSB3aXRoaW4gYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AsIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgbG9ja2xlc3MvbG9ja2VkIGJlaGF2aW9yIGlzIGRldGVybWluZWQgaW4gdGhlIG92ZXJhbGwgdHVubmVsIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZ3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NTA6XHRcbjE0NTE6XHRzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjE0NTI6XHR7XG4xNDUzOlx0XHRzdHJ1Y3QgaXA2X3RubCAqbnQgPSBuZXRkZXZfcHJpdihkZXYpO1xuMTQ1NDpcdFxuMTQ1NTpcdFx0ZGV2LVx1MDAzZWZlYXR1cmVzXHRcdHw9IEdSRTZfRkVBVFVSRVM7XG4xNDU2Olx0XHRkZXYtXHUwMDNlaHdfZmVhdHVyZXNcdHw9IEdSRTZfRkVBVFVSRVM7XG4xNDU3Olx0XG4xNDU4Olx0XHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4xNDU5Olx0XG4xNDYwOlx0XHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbjE0NjE6XHRcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4xNDYyOlx0XHQgKi9cbjE0NjM6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgbnQtXHUwMDNlcGFybXMub19mbGFncykpXG4xNDY0Olx0XHRcdHJldHVybjtcbjE0NjU6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsIG50LVx1MDAzZXBhcm1zLm9fZmxhZ3MpIFx1MDAyNlx1MDAyNlxuMTQ2NjpcdFx0ICAgIG50LVx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXG4xNDY3Olx0XHRcdHJldHVybjtcbjE0Njg6XHRcbjE0Njk6XHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjE0NzA6XHRcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjE0NzE6XHR9XG4xNDcyOlx0XG4xNDczOlx0c3RhdGljIGludCBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4xNDc0Olx0e1xuMTQ3NTpcdFx0c3RydWN0IGlwNl90bmwgKnR1bm5lbDtcbjE0NzY6XHRcdGludCByZXQ7XG4xNDc3Olx0XHRpbnQgdF9obGVuO1xuMTQ3ODpcdFxuMTQ3OTpcdFx0dHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZ1bmN0aW9uYWwgQ2hhbmdlIGluIEdSRSBUdW5uZWwgTG9ja2luZyoqCgpPa2F5LCBJIHNlZSBpdC4gSXQmIzM5O3MgdGhlIHNhbWUgc2l0dWF0aW9uIEkgd2FzIGFudGljaXBhdGluZywgZWFybHkgcmV0dXJucy4gU28sIHRoaXMgYm9pbHMgZG93biB0byBhICpmdW5jdGlvbmFsIGNoYW5nZSouIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCB3YXJyYW50IGZ1enppbmc/IEFic29sdXRlbHksIHllcywgYmVjYXVzZSB0aGlzIGRpcmVjdGx5IGltcGFjdHMgbG9ja2luZyB3aXRoaW4gdGhlIHRyYW5zbWl0IHBhdGggb2YgR1JFIHR1bm5lbHMuCgpMZXQgbWUgYnJlYWsgaXQgZG93bjogd2hlbiBgZGV2LSZndDtsbHR4YCBpcyBzZXQgdG8gdHJ1ZSwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIGRyaXZlciBlaXRoZXIgaGFuZGxlcyBpdHMgb3duIGxvY2tpbmcgb3IgZG9lc24mIzM5O3QgcmVxdWlyZSBpdC4gUHJldmlvdXNseSwgaWYgdGhhdCBjb25kaXRpb24gd2FzbiYjMzk7dCBtZXQgZHVlIHRvIHRoYXQgZWFybHkgcmV0dXJuLCB0aGUgZ2VuZXJpYyBuZXR3b3JraW5nIGNvZGUgd291bGQgc3RlcCBpbiBhbmQgdGFrZSBhIGxvY2suIE5vdywgaXQgd29uJiMzOTt0LgoKVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGlzIGNoYW5nZSBjb3VsZCByZXZlYWwgZXhpc3RpbmcgcmFjZSBjb25kaXRpb25zIGluIHRoZSBHUkUgdHJhbnNtaXQgcGF0aCBpZiB0aGUgbG9ja2xlc3MgYXBwcm9hY2ggd2FzbiYjMzk7dCBhY3R1YWxseSBzYWZlLiBPciwgaXQgbWlnaHQgZml4IGEgbGF0ZW50IGJ1ZyB3aGVyZSB0aGUgc3lzdGVtIHdhcyAqc3VwcG9zZWQqIHRvIGJlIGxvY2tsZXNzIGJ1dCB3YXNuJiMzOTt0LCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGRlYWRsb2NrcyBvciBoaW5kZXJpbmcgcGVyZm9ybWFuY2UuIEhhbmcgb24gYSBtaW51dGUsIEdSRSB0dW5uZWxzIGFyZSBpbmhlcmVudGx5IGRlc2lnbmVkIHRvIGJlIGxvY2tsZXNzIChgbGx0eCA9IHRydWVgKS4gSWYgYGxsdHhgIHdhcyBmYWxzZSBiZWZvcmUgdGhlIHBhdGNoLCBwZXJoYXBzIHRha2luZyBhIGxvY2sgKndhcyogdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uIFRoYXQmIzM5O3MgZ29vZCwgaWYgdGhhdCYjMzk7cyB0aGUgY2FzZS4gSXQmIzM5O3MgcG9zc2libGUgdGhpbmdzIHdlcmUgdGVjaG5pY2FsbHkgZmluZSwgYnV0IHNsb3cgZHVlIHRvIHVubmVjZXNzYXJ5IGxvY2tpbmcuIEVpdGhlciB3YXksIHRoaXMgaXMgYSBkaXN0aW5jdCBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgYW5kIHR1bm5lbGluZyBjb2RlLgoKTm93LCBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zOiB3ZSYjMzk7bGwgbmVlZCBgQ09ORklHX05FVF9JUEdSRWAgZm9yIElQdjQgR1JFIGFuZCBgQ09ORklHX0lQVjZfR1JFYCBmb3IgSVB2NiBHUkUuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzOTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSVB2NiBDb25zaWRlcmF0aW9ucyAmYW1wOyBJbXBsaWNhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBJUHY2LiBJJiMzOTt2ZSBiZWVuIG11bGxpbmcgb3ZlciB0aGUgaW1wbGljYXRpb25zIGFuZCBjaGFsbGVuZ2VzLiBUaGUgd2hvbGUgdHJhbnNpdGlvbiBpcyBhIGNvbXBsZXggZGFuY2UsIGlzbiYjMzk7dCBpdD8gV2UmIzM5O3JlIG5vdCBqdXN0IGZsaXBwaW5nIGEgc3dpdGNoOyB3ZSYjMzk7cmUgZXNzZW50aWFsbHkgcmUtYXJjaGl0ZWN0aW5nIHNpZ25pZmljYW50IHBvcnRpb25zIG9mIHRoZSBuZXR3b3JrIGluZnJhc3RydWN0dXJlLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm5zIHJldm9sdmUgYXJvdW5kIHRoZSB0cmFuc2l0aW9uIG1lY2hhbmlzbXMuIFdlIG5lZWQgdG8gYmUganVkaWNpb3VzIGluIGNob29zaW5nIHRoZSByaWdodCBtZXRob2RzIOKAkyBEdWFsLVN0YWNrPyBOQVQ2ND8gNnRvND8gVGVyZWRvPyBFYWNoIGhhcyB0cmFkZS1vZmZzIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIGludGVyb3BlcmFiaWxpdHkuIFdlIGNhbuKAmXQganVzdCBkZWZhdWx0IHRvIHRoZSAmIzM5O2Vhc2llc3QmIzM5OyBhcHByb2FjaDsgaXQgaGFzIHRvIGJlIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGZvciB0aGUgc3BlY2lmaWMgbmV0d29yayBzZWdtZW50LgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgb3BlcmF0aW9uYWwgYXNwZWN0LiBJUHY2IGFkZHJlc3MgcGxhbm5pbmcgaXMgKmNyaXRpY2FsKi4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzIHRvIG1pbmltaXplIGZyYWdtZW50YXRpb24gYW5kIG1ha2Ugcm91dGluZyBlZmZlY3RpdmUsIHdoaWNoIEkgZmVlbCB3aWxsIGJlIG1vcmUgaW1wYWN0ZnVsIHRvIG15IGFyZWEuIFdoYXQgd2lsbCB0aGUgaW1wYWN0IGJlIHRvIGFsbCBvZiBvdXIgYXBwbGljYXRpb25zPyBIb3cgZG9lcyB0aGlzIGltcGFjdCBvdXIgZGF0YSBjZW50ZXJzLCBjbG91ZCBkZXBsb3ltZW50cywgYW5kIGV2ZW4gSW9UIGRldmljZXM/IEFyZSB3ZSBhY2NvdW50aW5nIGZvciBhbGwgdGhlIGVkZ2UgY2FzZXMgd2l0aCB0aGUgbmV3IHRlY2hub2xvZ3k/CgpUaGUgc2VjdXJpdHkgbGFuZHNjYXBlIHNoaWZ0cywgdG9vLiBXaGlsZSBJUHY2IHByb3ZpZGVzIG1vcmUgcm9idXN0IGF1dGhlbnRpY2F0aW9uIGFuZCBlbmNyeXB0aW9uIGNhcGFiaWxpdGllcywgaXQgYWxzbyBjcmVhdGVzIG5ldyBhdHRhY2sgdmVjdG9ycyB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIuIFdlIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IG5ldyBmaXJld2FsbCBjb25maWd1cmF0aW9ucywgYWRkcmVzcyBhc3NpZ25tZW50LCBhbmQgc2VjdXJpdHkgcG9saWNpZXMuCgpGaW5hbGx5LCB0aGUgbG9uZyB0YWlsIG9mIGNvbXBhdGliaWxpdHkuIEludGVyb3BlcmFiaWxpdHkgd2l0aCBsZWdhY3kgc3lzdGVtcyBhbmQgdGhlIGF2YWlsYWJpbGl0eSBvZiBJUHY2LWVuYWJsZWQgYXBwbGljYXRpb25zIGFyZSwgbmF0dXJhbGx5LCB0aGUgZWxlcGhhbnQgaW4gdGhlIHJvb20uIEFyZSB3ZSBnb2luZyB0byBzZWUgYW5vdGhlciAmIzM0O0lQdjQgdnMuIElQdjYmIzM0OyBzaXR1YXRpb24/IEl0JiMzOTtzIGNydWNpYWwgdG8gaGF2ZSBhIGNsZWFyIHJvYWRtYXAgZm9yIGdyYWR1YWwgYWRvcHRpb24sIHJpZ29yb3VzIHRlc3RpbmcsIGFuZCBwaGFzZWQgbWlncmF0aW9uIHRvIG1pbmltaXplIGRpc3J1cHRpb24uIFRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyBmYXN0IGNhbiB3ZSBkbyB0aGlzIHdoaWxlIG1pbmltaXppbmcgZGlzcnVwdGlvbiB0byB0aG9zZSB0aGF0IHJlbHkgb24gdGhpcyBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBHUkUgdHVubmVsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MjAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipHUkUgVHVubmVsIEltcGxlbWVudGF0aW9uOiBLZXkgRnVuY3Rpb25zIGFuZCBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIEdSRSB0dW5uZWwgaW1wbGVtZW50YXRpb24gaGVyZS4gVGhlIGZpcnN0IHRoaW5ncyB0aGF0IGp1bXAgb3V0IGFyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTkVUX0lQR1JFYCBhbmQgYElQVjZfR1JFYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpOb3csIHdoYXQgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gcGF5IGF0dGVudGlvbiB0bz8gV2VsbCwgbmF0dXJhbGx5LCBJJiMzOTttIHRoaW5raW5nIGluaXRpYWxpemF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgdHVubmVscyBhcmUgaW5pdGlhbGx5IHNldCB1cCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgX19ncmVfdHVubmVsX2luaXRgLCBgaXBncmVfdHVubmVsX2luaXRgLCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYCwgYW5kIGBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uYC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aG9zZSBhbmQgaG93IHRoZXkgaW50ZXJhY3QuCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSB0cmFuc21pc3Npb24gc2lkZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIG5ldHdvcmtpbmcgaW50ZXJuYWxzLCBJIGltbWVkaWF0ZWx5IGtub3cgYGxsdHhgIGlzIGdvaW5nIHRvIGltcGFjdCB0cmFuc21pdCBsb2NraW5nLiBTbywgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgR1JFIHRyYW5zbWl0IGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGUuIEl0JiMzOTtzIHRpbWUgdG8gaWRlbnRpZnkgdGhvc2UgdHJhbnNtaXNzaW9uIGVudHJ5IHBvaW50cyBhbmQgc2VlIGhvdyBsb2NraW5nIGlzIGhhbmRsZWQuIExldCYjMzk7cyBmaW5kIHRob3NlIHRyYW5zbWl0IGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRvX3N0YXJ0X3htaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYz05ODA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcGdyZV9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ni0jZW5kaWZcbm5ldC9pcHY0L2lwX2dyZS5jOjk4NzpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGlwZ3JlX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy05ODgtXHQubmRvX3Npb2NkZXZwcml2YXRlXHQ9IGlwX3R1bm5lbF9zaW9jZGV2cHJpdmF0ZSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDAtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzQxOlx0Lm5kb19zdGFydF94bWl0XHRcdD0gZ3JlX3RhcF94bWl0LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM0Mi1cdC5uZG9fc2V0X21hY19hZGRyZXNzIFx0PSBldGhfbWFjX2FkZHIsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTM3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzMtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc0Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gZXJzcGFuX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gZXRoX21hY19hZGRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjgyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKklQdjYgQ29uc2lkZXJhdGlvbnMgJmFtcDsgSW1wbGljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gSVB2Ni4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLCByaWdodD8gV2UmIzM5O3ZlIGdvdCB0aGlzIG1hc3NpdmUgYWRkcmVzcyBzcGFjZSwgd2hpY2ggaXMgZmFudGFzdGljLCBidXQgaXQgZm9yY2VzIGEgY29tcGxldGUgcmV0aGlua2luZyBvZiBuZXR3b3JrIGRlc2lnbiBhbmQgc2VjdXJpdHkuIEkmIzM5O20gbm90IGp1c3QgdGFsa2luZyBhYm91dCB0aGUgb2J2aW91cyBzdHVmZiDigJMgdGhlIGxhY2sgb2YgTkFULCB0aGUgc3RhdGVsZXNzIGF1dG8tY29uZmlndXJhdGlvbiwgYW5kIHRoZSBuZXcgaGVhZGVyIHN0cnVjdHVyZS4gSSYjMzk7bSBjb25zaWRlcmluZyB0aGUgbW9yZSBzdWJ0bGUgYXNwZWN0cyB0aGF0IGNhbiB0cmlwIHVzIHVwLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGFuYWx5emluZyB0aGUgdHJhbnNpdGlvbiBzdHJhdGVnaWVzLiBEdWFsLXN0YWNrIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgd2hhdCBhYm91dCBzY2VuYXJpb3Mgd2hlcmUgd2UmIzM5O3JlIHBoYXNpbmcgb3V0IElQdjQgZW50aXJlbHk/IEhvdyBkbyB3ZSBlbnN1cmUgc2VhbWxlc3MgY29ubmVjdGl2aXR5LCBwYXJ0aWN1bGFybHkgZm9yIGxlZ2FjeSBzeXN0ZW1zIG9yIHRoaXJkLXBhcnR5IGNvbXBvbmVudHM/IFRoZW4gdGhlcmUmIzM5O3MgdGhlIHR1bm5lbGluZyDigJMgNnRvNCwgVGVyZWRvLCBJU0FUQVAuIEVhY2ggaGFzIGl0cyBvd24gc3RyZW5ndGhzIGFuZCB3ZWFrbmVzc2VzLCBhbmQgdGhlIGNob2ljZSBkZXBlbmRzIGhlYXZpbHkgb24gdGhlIHNwZWNpZmljIG5ldHdvcmsgdG9wb2xvZ3kgYW5kIHRoZSBsZXZlbCBvZiBjb250cm9sIHdlIGhhdmUgb3ZlciB0aGUgaW5mcmFzdHJ1Y3R1cmUuIEkmIzM5O20gYWxzbyBhc3Nlc3NpbmcgaG93IHdlIGludGVncmF0ZSBJUHY2IGludG8gZXhpc3RpbmcgbW9uaXRvcmluZyBhbmQgbWFuYWdlbWVudCB0b29scy4gQ29tcGF0aWJpbGl0eSBpcyBrZXkuIFdlIGNhbiYjMzk7dCBsZXQgYSBwcm90b2NvbCBzaGlmdCBicmVhayBvdXIgdmlzaWJpbGl0eSBpbnRvIHRoZSBuZXR3b3JrLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBzZWN1cml0eSB0b28sIHRoZSBuZXcgaGVhZGVyIGV4dGVuc2lvbnMgYXJlIGNlcnRhaW5seSBhIHBvd2VyZnVsIHRvb2wgZm9yIGVuaGFuY2VkIHNlY3VyaXR5IGJ1dCBwb3RlbnRpYWxseSBjcmVhdGUgdnVsbmVyYWJpbGl0aWVzIGlmIG5vdCBoYW5kbGVkIHdpdGggcHJlY2lzZSBjYXJlLiBUaGUgaW5oZXJlbnQgc2VjdXJpdHkgYWR2YW50YWdlcyBJUHY2IG9mZmVycywgc3VjaCBhcyBJUFNlYyBieSBkZWZhdWx0LCBhcmUgc2lnbmlmaWNhbnQsIGJ1dCB0aGV5IGRvbiYjMzk7dCBzb2x2ZSBldmVyeXRoaW5nLiBQcm9wZXIgaW1wbGVtZW50YXRpb24sIGluY2x1ZGluZyB0aGUgcmlnaHQgY3J5cHRvZ3JhcGhpYyBhbGdvcml0aG1zIGFuZCBrZXkgbWFuYWdlbWVudCwgaXMgYWJzb2x1dGVseSBjcml0aWNhbC4gV2UgY2FuJiMzOTt0IGp1c3QgYXNzdW1lIHRoYXQgJiMzNDtpdCYjMzk7cyBJUHY2LCBzbyBpdCYjMzk7cyBzZWN1cmUuJiMzNDsKCkZ1cnRoZXJtb3JlLCBhbmQgcGVyaGFwcyBtb3N0IGltcG9ydGFudGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBvcGVyYXRpb25hbCBjaGFsbGVuZ2VzLiBUcmFpbmluZyBvdXIgdGVhbXMsIHVwZGF0aW5nIGRvY3VtZW50YXRpb24sIGFuZCBhZGFwdGluZyBvdXIgbmV0d29yayBtYW5hZ2VtZW50IHByb2NlZHVyZXMgaXMgZ29pbmcgdG8gYmUgYSBsYXJnZSBlZmZvcnQuIEl0JiMzOTtzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCBtb3JlIHRoYW4ganVzdCBmbGlwcGluZyBhIHN3aXRjaC4gSXQmIzM5O3MgYSBwYXJhZGlnbSBzaGlmdCwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhZHkgZm9yIGl0LiBTbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgdmVyeSBjYXJlZnVsbHkuCgpIb3cgZG8gd2UgYWN0dWFsbHkgcGxhbiB0aGlzIHRyYW5zaXRpb24/IExldCYjMzk7cyBnZXQgZG93biB0byB0aGUgbml0dHktZ3JpdHR5IGFuZCBhc3Nlc3MgYWxsIG9mIHRoZSByZWFsLXdvcmxkIGZhY3RvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19zdGFydF94bWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2dyZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9ncmUuYz0xNDEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXA2Z3JlX25ldGRldl9vcHMgPSB7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE0MTQtXHQubmRvX3VuaW5pdFx0XHQ9IGlwNmdyZV90dW5uZWxfdW5pbml0LFxubmV0L2lwdjYvaXA2X2dyZS5jOjE0MTU6XHQubmRvX3N0YXJ0X3htaXRcdFx0PSBpcDZncmVfdHVubmVsX3htaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTQxNi1cdC5uZG9fc2lvY2RldnByaXZhdGVcdD0gaXA2Z3JlX3R1bm5lbF9zaW9jZGV2cHJpdmF0ZSxcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTgyMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmdyZV90YXBfbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgyNS1cdC5uZG9fdW5pbml0ID0gaXA2Z3JlX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTgyNjpcdC5uZG9fc3RhcnRfeG1pdCA9IGlwNmdyZV90dW5uZWxfeG1pdCxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODI3LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPSBldGhfbWFjX2FkZHIsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTE4ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZlcnNwYW5fbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4Ni1cdC5uZG9fdW5pbml0ID1cdFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NzpcdC5uZG9fc3RhcnRfeG1pdCA9XHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4OC1cdC5uZG9fc2V0X21hY19hZGRyZXNzID1cdGV0aF9tYWNfYWRkcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY0MwoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiA0NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEdSRSBUdW5uZWwgSW5pdGlhbGl6YXRpb24gYW5kIFRyYW5zbWlzc2lvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBtYWluIGZvY3VzIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB0aGUgdHJhbnNtaXQgZnVuY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBmb3IgdGhlc2UgR1JFIHR1bm5lbHMuIEZyb20gYSBxdWljayBzY2FuLCBJJiMzOTttIGtleWluZyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcGdyZV94bWl0YCwgYGdyZV90YXBfeG1pdGAsIGBlcnNwYW5feG1pdGAsIGBpcDZncmVfdHVubmVsX3htaXRgLCBhbmQgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAuIFRoZXNlIGFyZSB0aGUgY29yZSB0cmFuc21pdCBwYXRocy4gSSYjMzk7bSBhbHNvIGluY2x1ZGluZyB0aGUgaW5pdCBmdW5jdGlvbnMgYXMgdGhleSYjMzk7cmUgZm91bmRhdGlvbmFsOiBgX19ncmVfdHVubmVsX2luaXRgLCBgaXBncmVfdHVubmVsX2luaXRgLCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYCwgYW5kIGBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uYC4KCk5leHQsIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7dmUgY292ZXJlZCBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgYmlnIG9uZXMgYXJlIGBORVRfSVBHUkVgIGFuZCBgSVBWNl9HUkVgLCBhbmQgYElQVjZgIGZvciB0aGUgSVB2NiB2YXJpYW50LiBgTkVUX0lQR1JFX0JST0FEQ0FTVGAgbWlnaHQgYmUgcmVsYXRlZCwgYnV0IGl0JiMzOTtzIG5vdCBzdHJpY3RseSBlc3NlbnRpYWwgdG8gdGhpcyBjb3JlIGZ1bmN0aW9uYWxpdHkuCgpOb3csIGxldCYjMzk7cyBhc3NlbWJsZSBhIGZpbmFsIGxpc3Qgb2YgdGhlIGZvY3VzIHN5bWJvbHMgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBpZGVudGlmaWVkIHNvIGZhci4gVGhhdCYjMzk7czoKYF9fZ3JlX3R1bm5lbF9pbml0YApgaXBncmVfdHVubmVsX2luaXRgCmBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgCmBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uYApgaXBncmVfeG1pdGAKYGdyZV90YXBfeG1pdGAKYGVyc3Bhbl94bWl0YApgaXA2Z3JlX3R1bm5lbF94bWl0YApgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YAoKV2FpdCwgb24gY2xvc2VyIGluc3BlY3Rpb24sIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCBhcmUgYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFNvIEkgc2hvdWxkIGRlZmluaXRlbHkga2VlcCB0aG9zZSB0d28uCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCYjMzk7cyBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgYGxsdHhgIGZsYWcsIHdoaWNoIGVuYWJsZXMgbG9ja2xlc3MgdHJhbnNtaXQgZm9yIEdSRSBkZXZpY2VzLCBpcyBjb25zaXN0ZW50bHkgc2V0IGR1cmluZyBpbml0aWFsaXphdGlvbi4gVGhlIGNvZGUgaXMgbW92ZWQgdG8gaGFwcGVuIGJlZm9yZSBhbnkgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgd2l0aGluIGBfX2dyZV90dW5uZWxfaW5pdGAgYW5kIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFzIGl0IG1vZGlmaWVzIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBHUkUgdHVubmVscyBhbmQgdGhpcyBtb2RpZmljYXRpb24gYWltcyB0byBtYWtlIGxvY2tsZXNzIHRyYW5zbWl0IGJlIHVzZWQgY29uc2lzdGVudGx5LgoKU28sIHRvIHN1bW1hcml6ZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgTkVUX0lQR1JFYCBhbmQgYElQVjZfR1JFYCwgYW5kIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgX19ncmVfdHVubmVsX2luaXRgLCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYCwgYGlwZ3JlX3htaXRgLCBgZ3JlX3RhcF94bWl0YCwgYGVyc3Bhbl94bWl0YCwgYGlwNmdyZV90dW5uZWxfeG1pdGAsIGFuZCBgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YC4KCkxvb2tzIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2dyZV90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OywKICAgICYjMzQ7aXA2Z3JlX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmVyc3Bhbl90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2dyZV90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OywKICAgICYjMzQ7aXA2Z3JlX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmVyc3Bhbl90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6MzMuNTA2NjU2NjI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNzUyNzAxODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNcIixcbiAgICBcImlwZ3JlX3htaXRcIixcbiAgICBcImdyZV90YXBfeG1pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIixcbiAgICBcImlwNmdyZV90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXA2ZXJzcGFuX3R1bm5lbF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGBkZXYtXFx1MDAzZWxsdHggPSB0cnVlYCBhc3NpZ25tZW50IGJlZm9yZSBwb3RlbnRpYWwgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGBsbHR4YCBmbGFnICh3aGljaCBpbmRpY2F0ZXMgbG9ja2xlc3MgdHJhbnNtaXQpIGlzIGFsd2F5cyBzZXQgZm9yIEdSRSBkZXZpY2VzLCBldmVuIGlmIHRoZXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB1bnN1cHBvcnRlZCBvZmZsb2FkIGZlYXR1cmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG92ZXIgR1JFIHR1bm5lbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjUyOjMzLjUwNjY2MzE5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MTEwNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzA1ZjYwNDlhMGY0ODI1NTk5Y2JlNmRmOWFiZjNjOTMyOTRkMzExNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxOTo1MjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTAxOCw2ICsxMDE4LDggQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFxuK1xcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuK1xcbiBcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4gXFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4gXFx0ICovXFxuQEAgLTEwMjksOCArMTAzMSw2IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRkZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbiBcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbi1cXG4tXFx0ZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZ3JlLmMgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uYjg0MzExNmU5YjcwM2MgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X2dyZS5jXFxuQEAgLTE0NTUsNiArMTQ1NSw4IEBAIHN0YXRpYyB2b2lkIGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkZXYtXFx1MDAzZWZlYXR1cmVzXFx0XFx0fD0gR1JFNl9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRTZfRkVBVFVSRVM7XFxuIFxcbitcXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbitcXG4gXFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXFxuIFxcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXFxuIFxcdCAqL1xcbkBAIC0xNDY2LDggKzE0NjgsNiBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuIFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuLVxcbi1cXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGlwNmdyZV90dW5uZWxfaW5pdF9jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6MzQuMDgxNjk0NTQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjgwMDIxODM4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfdHVubmVsX2luaXRcIixcbiAgICBcImlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc1wiLFxuICAgIFwiaXBncmVfeG1pdFwiLFxuICAgIFwiZ3JlX3RhcF94bWl0XCIsXG4gICAgXCJlcnNwYW5feG1pdFwiLFxuICAgIFwiaXA2Z3JlX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcDZlcnNwYW5fdHVubmVsX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB0aGUgYGRldi1cXHUwMDNlbGx0eCA9IHRydWVgIGFzc2lnbm1lbnQgYmVmb3JlIHBvdGVudGlhbCBlYXJseSByZXR1cm5zIGluIGBfX2dyZV90dW5uZWxfaW5pdGAgYW5kIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYGxsdHhgIGZsYWcgKHdoaWNoIGluZGljYXRlcyBsb2NrbGVzcyB0cmFuc21pdCkgaXMgYWx3YXlzIHNldCBmb3IgR1JFIGRldmljZXMsIGV2ZW4gaWYgdGhleSByZXR1cm4gZWFybHkgZHVlIHRvIHVuc3VwcG9ydGVkIG9mZmxvYWQgZmVhdHVyZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBHUkUgdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMDVmNjA0OWEwZjQ4MjU1OTljYmU2ZGY5YWJmM2M5MzI5NGQzMTE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTk6NTI6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXG5pbmRleCAzZWZkZmI0ZmZhMjExMi4uMGJhMWU5NGU5MDEyYzYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF9ncmUuY1xuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbkBAIC0xMDE4LDYgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzXHRcdHw9IEdSRV9GRUFUVVJFUztcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlc1x0fD0gR1JFX0ZFQVRVUkVTO1xuIFxuK1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuK1xuIFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXG4gXHQgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLlxuIFx0ICovXG5AQCAtMTAyOSw4ICsxMDMxLDYgQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbi1cbi1cdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9ncmUuYyBiL25ldC9pcHY2L2lwNl9ncmUuY1xuaW5kZXggN2MwOWEyNjliMzUyMTYuLmI4NDMxMTZlOWI3MDNjIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcbkBAIC0xNDU1LDYgKzE0NTUsOCBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFxuK1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuK1xuIFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXG4gXHQgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLlxuIFx0ICovXG5AQCAtMTQ2Niw4ICsxNDY4LDYgQEAgc3RhdGljIHZvaWQgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4gXHRkZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4tXG4tXHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6MzQuMDgxNjk2MzM0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMTgwMTkwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJlb3JkZXJpbmcgQnVnIGluIEdSRSBUdW5uZWwgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQganVzdCBzaHVmZmxlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2AgYSBmZXcgbGluZXMgdXAgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBmb3IgYm90aCBJUHY0IGFuZCBJUHY2IEdSRSB0dW5uZWxzLiAgRnVuY3Rpb25hbGx5LCBpdCdzIGp1c3QgYSByZW9yZGVyaW5nLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyZWF0IHRoaXMgYXMgYSBwb3RlbnRpYWxseSBtaW5vciwgcGVyaGFwcyBjb3NtZXRpYyBjaGFuZ2UuICBCdXQsIGFzIGEgc2Vhc29uZWQgZGV2ZWxvcGVyLCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzOiBkb2VzIHRoaXMgKmFjdHVhbGx5KiBjaGFuZ2UgYW55dGhpbmcgZnVuY3Rpb25hbGx5PyBFdmVuIHRoZSBzbWFsbGVzdCBjaGFuZ2UgY2FuIGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGtlcm5lbC5cblxuU28sIEkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBzbmlwcGV0OlxuXG5gYGBjXG5cdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkVfRkVBVFVSRVM7XG5cdGRldi1cdTAwM2Vod19mZWF0dXJlc1x0fD0gR1JFX0ZFQVRVUkVTO1xuXG5cdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcblxuXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcblx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cblx0ICovXG5cdGlmICghKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzIFx1MDAyNiBUVU5ORUxfU0VRKSkge1xuXHRcdC8qIGh3X2VuY19mZWF0dXJlcyBpcyBzZXQgaW4gZ3JlX3R1bm5lbF9pbml0KCkgKi9cblx0XHRkZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG5cdH1cblxuXHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG5cdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbmBgYFxuXG5QcmV2aW91c2x5LCBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2Agd2FzIGF0IHRoZSAqZW5kKiBvZiB0aGlzIGJsb2NrLiBOb3csIGl0J3MgbW92ZWQgKmJlZm9yZSogdGhlIGNvbmRpdGlvbmFsIGNoZWNrIHJlbGF0ZWQgdG8gYFRVTk5FTF9TRVFgLiAgTXkgZmlyc3QgdGhvdWdodCBpcywgZG9lcyBhbnl0aGluZyAqaW4gYmV0d2VlbiogcmVhZCBgZGV2LVx1MDAzZWxsdHhgPyBJZiBzb21ldGhpbmcgcmVsaWVzIG9uIHRoZSB2YWx1ZSBvZiBgZGV2LVx1MDAzZWxsdHhgIGJlZm9yZSBpdCdzIHNldCwgdGhpcyByZW9yZGVyaW5nIGNvdWxkIGJlIGRpc2FzdHJvdXMuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHJlYWRzIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2AgYW5kIGNvbmRpdGlvbmFsbHkgc2V0cyBgZGV2LVx1MDAzZWh3X2ZlYXR1cmVzYC4gIFRoZXJlJ3Mgbm8gZGlyZWN0IHJlYWQgb2YgYGRldi1cdTAwM2VsbHR4YCBpbiB0aGlzIHNlY3Rpb24uICBTbywgYXQgYSBnbGFuY2UsIEkgZG9uJ3Qgc2VlIGFuIG9idmlvdXMgcHJvYmxlbS4gIE5vIGludGVybWVkaWF0ZSBmdW5jdGlvbiBjYWxscywgbWFjcm9zLCBvciBiaXRmaWVsZCBtYW5pcHVsYXRpb25zIHRoYXQgd291bGQgYmUgYWZmZWN0ZWQuXG5cbk5vdywgbXkgbWluZCBzdGFydHMgdG8gd2FuZGVyOiB3aHkgZGlkIHRoZSBhdXRob3IgbWFrZSB0aGlzIGNoYW5nZT8gV2FzIGl0IGZvciBjbGFyaXR5PyBQZXJmb3JtYW5jZT8gRGlkIGl0IGZpeCBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbiBvciBhIHBvdGVudGlhbCBwYXRoIHdpdGggYW4gZWFybHkgcmV0dXJuLCB3aGVyZSBgZGV2LVx1MDAzZWxsdHhgIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQ/ICBJJ2QgbG92ZSB0byBzZWUgdGhlIGNvbW1pdCBtZXNzYWdlIHJpZ2h0IG5vdyEgV2l0aG91dCB0aGF0LCBJJ20gcmVkdWNlZCB0byBzcGVjdWxhdGluZy4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUncyBhbnkgbWFjcm8gdGhhdCByZWFkcyBgZGV2LVx1MDAzZWxsdHhgIG9yIGlmIHRoZSBhdXRob3IgbWVudGlvbmVkIHRoaXMgYW55d2hlcmUgZWxzZS5cblxuTGV0J3Mgc2VlLiBJcyBgZGV2LVx1MDAzZWxsdHhgIGEgYml0ZmllbGQ/ICBBaCwgaXQncyBhIGJvb2xlYW4gaW4gYHN0cnVjdCBuZXRfZGV2aWNlYC4gIEkgcmVjYWxsIGBORVRJRl9GX0xMVFhgLCBhIGRlcHJlY2F0ZWQgZmxhZy4gIElzIHRoaXMgcmVsYXRlZD8gIEFoLCBgZGV2LVx1MDAzZWxsdHhgIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgaXQuXG5cblNvLCBJJ20gc3R1Y2sgaGVyZS4gIEl0IHNlZW1zIHRoZSBjb3JlIGxvZ2ljICpzaG91bGRuJ3QqIGJlIGFmZmVjdGVkLCBidXQsIEkgYW0gbGVmdCB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZXJlJ3MgcHJvYmFibHkgYSBnb29kIHJlYXNvbiBmb3IgdGhpcyBjaGFuZ2UsIGFuZCBJIG5lZWQgdG8gZmluZCB0aGUgY29udGV4dCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gIEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgdGhlIGNvbnRleHQgaW4gYG5ldC9pcHY0L2lwX2dyZS5jYCBhcm91bmQgbGluZSAxMDE4IHRvIHNlZSB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1Mjo0NS4xOTk3MTg0MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvaXBfZ3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAxMDpcXHRcXG4xMDExOlxcdFxcdHR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuMTAxMjpcXHRcXHR0dW5uZWwtXFx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbjEwMTM6XFx0XFx0dHVubmVsLVxcdTAwM2VwYXJtcy5pcGgucHJvdG9jb2wgPSBJUFBST1RPX0dSRTtcXG4xMDE0OlxcdFxcbjEwMTU6XFx0XFx0dHVubmVsLVxcdTAwM2VobGVuID0gdHVubmVsLVxcdTAwM2V0dW5faGxlbiArIHR1bm5lbC1cXHUwMDNlZW5jYXBfaGxlbjtcXG4xMDE2OlxcdFxcdGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHR1bm5lbC1cXHUwMDNlcGFybXMuaXBoKTtcXG4xMDE3OlxcdFxcbjEwMTg6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4xMDE5OlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXNcXHR8PSBHUkVfRkVBVFVSRVM7XFxuMTAyMDpcXHRcXG4xMDIxOlxcdFxcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuMTAyMjpcXHRcXG4xMDIzOlxcdFxcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxcbjEwMjQ6XFx0XFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4xMDI1OlxcdFxcdCAqL1xcbjEwMjY6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxcbjEwMjc6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMjg6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbjEwMjk6XFx0XFx0ICAgIHR1bm5lbC1cXHUwMDNlZW5jYXAudHlwZSAhPSBUVU5ORUxfRU5DQVBfTk9ORSlcXG4xMDMwOlxcdFxcdFxcdHJldHVybjtcXG4xMDMxOlxcdFxcbjEwMzI6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcXG4xMDMzOlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTAzNDpcXHR9XFxuMTAzNTpcXHRcXG4xMDM2OlxcdHN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4xMDM3OlxcdHtcXG4xMDM4OlxcdFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuMTAzOTpcXHRcXHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaDtcXG4xMDQwOlxcdFxcbjEwNDE6XFx0XFx0X19ncmVfdHVubmVsX2luaXQoZGV2KTtcXG4xMDQyOlxcdFxcbjEwNDM6XFx0XFx0X19kZXZfYWRkcl9zZXQoZGV2LCBcXHUwMDI2aXBoLVxcdTAwM2VzYWRkciwgNCk7XFxuMTA0NDpcXHRcXHRtZW1jcHkoZGV2LVxcdTAwM2Vicm9hZGNhc3QsIFxcdTAwMjZpcGgtXFx1MDAzZWRhZGRyLCA0KTtcXG4xMDQ1OlxcdFxcbjEwNDY6XFx0XFx0ZGV2LVxcdTAwM2VmbGFnc1xcdFxcdD0gSUZGX05PQVJQO1xcbjEwNDc6XFx0XFx0bmV0aWZfa2VlcF9kc3QoZGV2KTtcXG4xMDQ4OlxcdFxcdGRldi1cXHUwMDNlYWRkcl9sZW5cXHRcXHQ9IDQ7XFxuMTA0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6NDUuMTk5ODcxODY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3MzA0Mjc0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTdWJ0bGUgR1JFIFR1bm5lbCBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgaGVyZSB3ZSBnby4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCwgYWhhISBUaGVyZSBhcmUgaW5kZWVkIGVhcmx5IHJldHVybiBwb2ludHMgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEkgZGlkbid0IGltbWVkaWF0ZWx5IHNlZSB0aGVtLiBTcGVjaWZpY2FsbHksIHRoZSBiaXQgdGVzdHMgZm9yIGBJUF9UVU5ORUxfU0VRX0JJVGAgYW5kIGBJUF9UVU5ORUxfQ1NVTV9CSVRgIGFyZSBzaG9ydC1jaXJjdWl0aW5nIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbi4gVGhpcyBpcyBzaWduaWZpY2FudC5cblxuSWYgZWl0aGVyIG9mIHRob3NlIGNvbmRpdGlvbnMgYXJlIG1ldCwgdGhlIGZ1bmN0aW9uIGV4aXRzIGVhcmx5LiBJJ20gcmVhbGl6aW5nIHRoYXQgdGhlIGxpbmUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgd2FzIHByZXZpb3VzbHkgc2tpcHBlZCB3aGVuIHRob3NlIGVhcmx5IHJldHVybnMgaGFwcGVuZWQuIFNvLCBpZiBJIG1vdmUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgKnVwKiBhYm92ZSB0aG9zZSByZXR1cm4gc3RhdGVtZW50cywgSSdtIGVmZmVjdGl2ZWx5IGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgZHJpdmVyLiBOb3csIGBkZXYtXHUwMDNlbGx0eGAgd2lsbCBiZSBzZXQgdG8gYHRydWVgIGV2ZW4gd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBlYXJseS5cblxuVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQncyBub3QganVzdCBjb3NtZXRpYy4gVGhlIHNldHRpbmcgb2YgYGRldi1cdTAwM2VsbHR4YCBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHdpbGwgdXNlIHRoZSBxZGlzYyBsb2NrIChgdHhxLVx1MDAzZV94bWl0X2xvY2tgKSBkdXJpbmcgdHJhbnNtaXQuIElmIGBkZXYtXHUwMDNlbGx0eGAgaXMgKm5vdCogc2V0LCB0aGUgbG9jayAqd2lsbCogYmUgdXNlZC4gSWYgaXQgKmlzKiBzZXQsIHRoZSBkZXZpY2Ugd2lsbCBiZSBsb2NrbGVzcy4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIGNvbmN1cnJlbmN5IGFuZCBsb2NraW5nIGJlaGF2aW9yIHdpdGhpbiB0aGUgR1JFIHR1bm5lbCBkcml2ZXIuIFRoaXMgd2FycmFudHMgY2FyZWZ1bCByZXZpZXcuXG5cbk9rYXksIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoaXMgY2hhbmdlIGludGVyYWN0cyB3aXRoIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb25zLCBwYXJ0aWN1bGFybHkgd2l0aGluIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIGxvY2tsZXNzL2xvY2tlZCBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGluIHRoZSBvdmVyYWxsIHR1bm5lbCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6NTAuNjcyOTE3MTU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L2lwNl9ncmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDUwOlxcdFxcbjE0NTE6XFx0c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTQ1MjpcXHR7XFxuMTQ1MzpcXHRcXHRzdHJ1Y3QgaXA2X3RubCAqbnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjE0NTQ6XFx0XFxuMTQ1NTpcXHRcXHRkZXYtXFx1MDAzZWZlYXR1cmVzXFx0XFx0fD0gR1JFNl9GRUFUVVJFUztcXG4xNDU2OlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXNcXHR8PSBHUkU2X0ZFQVRVUkVTO1xcbjE0NTc6XFx0XFxuMTQ1ODpcXHRcXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbjE0NTk6XFx0XFxuMTQ2MDpcXHRcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4xNDYxOlxcdFxcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXFxuMTQ2MjpcXHRcXHQgKi9cXG4xNDYzOlxcdFxcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgbnQtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxcbjE0NjQ6XFx0XFx0XFx0cmV0dXJuO1xcbjE0NjU6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgbnQtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuMTQ2NjpcXHRcXHQgICAgbnQtXFx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXFxuMTQ2NzpcXHRcXHRcXHRyZXR1cm47XFxuMTQ2ODpcXHRcXG4xNDY5OlxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTQ3MDpcXHRcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbjE0NzE6XFx0fVxcbjE0NzI6XFx0XFxuMTQ3MzpcXHRzdGF0aWMgaW50IGlwNmdyZV90dW5uZWxfaW5pdF9jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4xNDc0OlxcdHtcXG4xNDc1OlxcdFxcdHN0cnVjdCBpcDZfdG5sICp0dW5uZWw7XFxuMTQ3NjpcXHRcXHRpbnQgcmV0O1xcbjE0Nzc6XFx0XFx0aW50IHRfaGxlbjtcXG4xNDc4OlxcdFxcbjE0Nzk6XFx0XFx0dHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6NTAuNjczMTM3MjE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1NzE3ODYxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiBHUkUgVHVubmVsIExvY2tpbmcqKlxuXG5Pa2F5LCBJIHNlZSBpdC4gSXQncyB0aGUgc2FtZSBzaXR1YXRpb24gSSB3YXMgYW50aWNpcGF0aW5nLCBlYXJseSByZXR1cm5zLiBTbywgdGhpcyBib2lscyBkb3duIHRvIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKi4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseSwgeWVzLCBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBsb2NraW5nIHdpdGhpbiB0aGUgdHJhbnNtaXQgcGF0aCBvZiBHUkUgdHVubmVscy5cblxuTGV0IG1lIGJyZWFrIGl0IGRvd246IHdoZW4gYGRldi1cdTAwM2VsbHR4YCBpcyBzZXQgdG8gdHJ1ZSwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIGRyaXZlciBlaXRoZXIgaGFuZGxlcyBpdHMgb3duIGxvY2tpbmcgb3IgZG9lc24ndCByZXF1aXJlIGl0LiBQcmV2aW91c2x5LCBpZiB0aGF0IGNvbmRpdGlvbiB3YXNuJ3QgbWV0IGR1ZSB0byB0aGF0IGVhcmx5IHJldHVybiwgdGhlIGdlbmVyaWMgbmV0d29ya2luZyBjb2RlIHdvdWxkIHN0ZXAgaW4gYW5kIHRha2UgYSBsb2NrLiBOb3csIGl0IHdvbid0LlxuXG5UaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoaXMgY2hhbmdlIGNvdWxkIHJldmVhbCBleGlzdGluZyByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIEdSRSB0cmFuc21pdCBwYXRoIGlmIHRoZSBsb2NrbGVzcyBhcHByb2FjaCB3YXNuJ3QgYWN0dWFsbHkgc2FmZS4gT3IsIGl0IG1pZ2h0IGZpeCBhIGxhdGVudCBidWcgd2hlcmUgdGhlIHN5c3RlbSB3YXMgKnN1cHBvc2VkKiB0byBiZSBsb2NrbGVzcyBidXQgd2Fzbid0LCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGRlYWRsb2NrcyBvciBoaW5kZXJpbmcgcGVyZm9ybWFuY2UuIEhhbmcgb24gYSBtaW51dGUsIEdSRSB0dW5uZWxzIGFyZSBpbmhlcmVudGx5IGRlc2lnbmVkIHRvIGJlIGxvY2tsZXNzIChgbGx0eCA9IHRydWVgKS4gSWYgYGxsdHhgIHdhcyBmYWxzZSBiZWZvcmUgdGhlIHBhdGNoLCBwZXJoYXBzIHRha2luZyBhIGxvY2sgKndhcyogdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uIFRoYXQncyBnb29kLCBpZiB0aGF0J3MgdGhlIGNhc2UuIEl0J3MgcG9zc2libGUgdGhpbmdzIHdlcmUgdGVjaG5pY2FsbHkgZmluZSwgYnV0IHNsb3cgZHVlIHRvIHVubmVjZXNzYXJ5IGxvY2tpbmcuIEVpdGhlciB3YXksIHRoaXMgaXMgYSBkaXN0aW5jdCBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgYW5kIHR1bm5lbGluZyBjb2RlLlxuXG5Ob3csIGZvciB0aGUgY29uZmlndXJhdGlvbnM6IHdlJ2xsIG5lZWQgYENPTkZJR19ORVRfSVBHUkVgIGZvciBJUHY0IEdSRSBhbmQgYENPTkZJR19JUFY2X0dSRWAgZm9yIElQdjYgR1JFLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1Mjo1Ni44MzAzMTgyNDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMjAyNjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjUyOjU3LjI3MzUzMDI1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTcxNDM4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSVB2NiBDb25zaWRlcmF0aW9ucyBcdTAwMjYgSW1wbGljYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZHJpbGwgZG93biBpbnRvIElQdjYuIEkndmUgYmVlbiBtdWxsaW5nIG92ZXIgdGhlIGltcGxpY2F0aW9ucyBhbmQgY2hhbGxlbmdlcy4gVGhlIHdob2xlIHRyYW5zaXRpb24gaXMgYSBjb21wbGV4IGRhbmNlLCBpc24ndCBpdD8gV2UncmUgbm90IGp1c3QgZmxpcHBpbmcgYSBzd2l0Y2g7IHdlJ3JlIGVzc2VudGlhbGx5IHJlLWFyY2hpdGVjdGluZyBzaWduaWZpY2FudCBwb3J0aW9ucyBvZiB0aGUgbmV0d29yayBpbmZyYXN0cnVjdHVyZS5cblxuTXkgaW1tZWRpYXRlIGNvbmNlcm5zIHJldm9sdmUgYXJvdW5kIHRoZSB0cmFuc2l0aW9uIG1lY2hhbmlzbXMuIFdlIG5lZWQgdG8gYmUganVkaWNpb3VzIGluIGNob29zaW5nIHRoZSByaWdodCBtZXRob2RzIOKAkyBEdWFsLVN0YWNrPyBOQVQ2ND8gNnRvND8gVGVyZWRvPyBFYWNoIGhhcyB0cmFkZS1vZmZzIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIGludGVyb3BlcmFiaWxpdHkuIFdlIGNhbuKAmXQganVzdCBkZWZhdWx0IHRvIHRoZSAnZWFzaWVzdCcgYXBwcm9hY2g7IGl0IGhhcyB0byBiZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb3IgdGhlIHNwZWNpZmljIG5ldHdvcmsgc2VnbWVudC5cblxuVGhlbiB0aGVyZSdzIHRoZSBvcGVyYXRpb25hbCBhc3BlY3QuIElQdjYgYWRkcmVzcyBwbGFubmluZyBpcyAqY3JpdGljYWwqLiBXZSBuZWVkIHRvIGJlIG1ldGljdWxvdXMgdG8gbWluaW1pemUgZnJhZ21lbnRhdGlvbiBhbmQgbWFrZSByb3V0aW5nIGVmZmVjdGl2ZSwgd2hpY2ggSSBmZWVsIHdpbGwgYmUgbW9yZSBpbXBhY3RmdWwgdG8gbXkgYXJlYS4gV2hhdCB3aWxsIHRoZSBpbXBhY3QgYmUgdG8gYWxsIG9mIG91ciBhcHBsaWNhdGlvbnM/IEhvdyBkb2VzIHRoaXMgaW1wYWN0IG91ciBkYXRhIGNlbnRlcnMsIGNsb3VkIGRlcGxveW1lbnRzLCBhbmQgZXZlbiBJb1QgZGV2aWNlcz8gQXJlIHdlIGFjY291bnRpbmcgZm9yIGFsbCB0aGUgZWRnZSBjYXNlcyB3aXRoIHRoZSBuZXcgdGVjaG5vbG9neT9cblxuVGhlIHNlY3VyaXR5IGxhbmRzY2FwZSBzaGlmdHMsIHRvby4gV2hpbGUgSVB2NiBwcm92aWRlcyBtb3JlIHJvYnVzdCBhdXRoZW50aWNhdGlvbiBhbmQgZW5jcnlwdGlvbiBjYXBhYmlsaXRpZXMsIGl0IGFsc28gY3JlYXRlcyBuZXcgYXR0YWNrIHZlY3RvcnMgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBXZSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBuZXcgZmlyZXdhbGwgY29uZmlndXJhdGlvbnMsIGFkZHJlc3MgYXNzaWdubWVudCwgYW5kIHNlY3VyaXR5IHBvbGljaWVzLlxuXG5GaW5hbGx5LCB0aGUgbG9uZyB0YWlsIG9mIGNvbXBhdGliaWxpdHkuIEludGVyb3BlcmFiaWxpdHkgd2l0aCBsZWdhY3kgc3lzdGVtcyBhbmQgdGhlIGF2YWlsYWJpbGl0eSBvZiBJUHY2LWVuYWJsZWQgYXBwbGljYXRpb25zIGFyZSwgbmF0dXJhbGx5LCB0aGUgZWxlcGhhbnQgaW4gdGhlIHJvb20uIEFyZSB3ZSBnb2luZyB0byBzZWUgYW5vdGhlciBcIklQdjQgdnMuIElQdjZcIiBzaXR1YXRpb24/IEl0J3MgY3J1Y2lhbCB0byBoYXZlIGEgY2xlYXIgcm9hZG1hcCBmb3IgZ3JhZHVhbCBhZG9wdGlvbiwgcmlnb3JvdXMgdGVzdGluZywgYW5kIHBoYXNlZCBtaWdyYXRpb24gdG8gbWluaW1pemUgZGlzcnVwdGlvbi4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IGZhc3QgY2FuIHdlIGRvIHRoaXMgd2hpbGUgbWluaW1pemluZyBkaXNydXB0aW9uIHRvIHRob3NlIHRoYXQgcmVseSBvbiB0aGlzIGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzowMS42NzA2NzY5MDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODMzMTU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9HUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjA5LVxcbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxcbm5ldC9pcHY2L0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBHUkUgdHVubmVsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzowMi4wMDkwMTQ1OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxNjM0MTQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipHUkUgVHVubmVsIEltcGxlbWVudGF0aW9uOiBLZXkgRnVuY3Rpb25zIGFuZCBDb25jZXJucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBHUkUgdHVubmVsIGltcGxlbWVudGF0aW9uIGhlcmUuIFRoZSBmaXJzdCB0aGluZ3MgdGhhdCBqdW1wIG91dCBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzLlxuXG5Ob3csIHdoYXQgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gcGF5IGF0dGVudGlvbiB0bz8gV2VsbCwgbmF0dXJhbGx5LCBJJ20gdGhpbmtpbmcgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSB0dW5uZWxzIGFyZSBpbml0aWFsbHkgc2V0IHVwLCBzbyBJJ20gZm9jdXNpbmcgb24gYF9fZ3JlX3R1bm5lbF9pbml0YCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AsIGFuZCBgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbmAuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aG9zZSBhbmQgaG93IHRoZXkgaW50ZXJhY3QuXG5cblRoZW4gdGhlcmUncyB0aGUgdHJhbnNtaXNzaW9uIHNpZGUuIEdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBuZXR3b3JraW5nIGludGVybmFscywgSSBpbW1lZGlhdGVseSBrbm93IGBsbHR4YCBpcyBnb2luZyB0byBpbXBhY3QgdHJhbnNtaXQgbG9ja2luZy4gU28sIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIEdSRSB0cmFuc21pdCBmdW5jdGlvbnMgaW4gdGhpcyBjb2RlLiBJdCdzIHRpbWUgdG8gaWRlbnRpZnkgdGhvc2UgdHJhbnNtaXNzaW9uIGVudHJ5IHBvaW50cyBhbmQgc2VlIGhvdyBsb2NraW5nIGlzIGhhbmRsZWQuIExldCdzIGZpbmQgdGhvc2UgdHJhbnNtaXQgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTIwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTM6MDUuNDI1MzU4Njc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg5NzQ2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmRvX3N0YXJ0X3htaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmM9OTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXBncmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ni0jZW5kaWZcXG5uZXQvaXB2NC9pcF9ncmUuYzo5ODc6XFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBpcGdyZV94bWl0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTk4OC1cXHQubmRvX3Npb2NkZXZwcml2YXRlXFx0PSBpcF90dW5uZWxfc2lvY2RldnByaXZhdGUsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM0MC1cXHQubmRvX3VuaW5pdFxcdFxcdD0gaXBfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzQxOlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gZ3JlX3RhcF94bWl0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDItXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgXFx0PSBldGhfbWFjX2FkZHIsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXJzcGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzczLVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpcF90dW5uZWxfdW5pbml0LFxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNzQ6XFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBlcnNwYW5feG1pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBldGhfbWFjX2FkZHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjUzOjA1LjY4NDMzOTUwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc0MTYwMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKklQdjYgQ29uc2lkZXJhdGlvbnMgXHUwMDI2IEltcGxpY2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRyaWxsIGRvd24gaW50byBJUHY2LiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucywgcmlnaHQ/IFdlJ3ZlIGdvdCB0aGlzIG1hc3NpdmUgYWRkcmVzcyBzcGFjZSwgd2hpY2ggaXMgZmFudGFzdGljLCBidXQgaXQgZm9yY2VzIGEgY29tcGxldGUgcmV0aGlua2luZyBvZiBuZXR3b3JrIGRlc2lnbiBhbmQgc2VjdXJpdHkuIEknbSBub3QganVzdCB0YWxraW5nIGFib3V0IHRoZSBvYnZpb3VzIHN0dWZmIOKAkyB0aGUgbGFjayBvZiBOQVQsIHRoZSBzdGF0ZWxlc3MgYXV0by1jb25maWd1cmF0aW9uLCBhbmQgdGhlIG5ldyBoZWFkZXIgc3RydWN0dXJlLiBJJ20gY29uc2lkZXJpbmcgdGhlIG1vcmUgc3VidGxlIGFzcGVjdHMgdGhhdCBjYW4gdHJpcCB1cyB1cC5cblxuU3BlY2lmaWNhbGx5LCBJJ20gYW5hbHl6aW5nIHRoZSB0cmFuc2l0aW9uIHN0cmF0ZWdpZXMuIER1YWwtc3RhY2sgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQsIGJ1dCB3aGF0IGFib3V0IHNjZW5hcmlvcyB3aGVyZSB3ZSdyZSBwaGFzaW5nIG91dCBJUHY0IGVudGlyZWx5PyBIb3cgZG8gd2UgZW5zdXJlIHNlYW1sZXNzIGNvbm5lY3Rpdml0eSwgcGFydGljdWxhcmx5IGZvciBsZWdhY3kgc3lzdGVtcyBvciB0aGlyZC1wYXJ0eSBjb21wb25lbnRzPyBUaGVuIHRoZXJlJ3MgdGhlIHR1bm5lbGluZyDigJMgNnRvNCwgVGVyZWRvLCBJU0FUQVAuIEVhY2ggaGFzIGl0cyBvd24gc3RyZW5ndGhzIGFuZCB3ZWFrbmVzc2VzLCBhbmQgdGhlIGNob2ljZSBkZXBlbmRzIGhlYXZpbHkgb24gdGhlIHNwZWNpZmljIG5ldHdvcmsgdG9wb2xvZ3kgYW5kIHRoZSBsZXZlbCBvZiBjb250cm9sIHdlIGhhdmUgb3ZlciB0aGUgaW5mcmFzdHJ1Y3R1cmUuIEknbSBhbHNvIGFzc2Vzc2luZyBob3cgd2UgaW50ZWdyYXRlIElQdjYgaW50byBleGlzdGluZyBtb25pdG9yaW5nIGFuZCBtYW5hZ2VtZW50IHRvb2xzLiBDb21wYXRpYmlsaXR5IGlzIGtleS4gV2UgY2FuJ3QgbGV0IGEgcHJvdG9jb2wgc2hpZnQgYnJlYWsgb3VyIHZpc2liaWxpdHkgaW50byB0aGUgbmV0d29yay5cblxuSSdtIHRoaW5raW5nIGFib3V0IHNlY3VyaXR5IHRvbywgdGhlIG5ldyBoZWFkZXIgZXh0ZW5zaW9ucyBhcmUgY2VydGFpbmx5IGEgcG93ZXJmdWwgdG9vbCBmb3IgZW5oYW5jZWQgc2VjdXJpdHkgYnV0IHBvdGVudGlhbGx5IGNyZWF0ZSB2dWxuZXJhYmlsaXRpZXMgaWYgbm90IGhhbmRsZWQgd2l0aCBwcmVjaXNlIGNhcmUuIFRoZSBpbmhlcmVudCBzZWN1cml0eSBhZHZhbnRhZ2VzIElQdjYgb2ZmZXJzLCBzdWNoIGFzIElQU2VjIGJ5IGRlZmF1bHQsIGFyZSBzaWduaWZpY2FudCwgYnV0IHRoZXkgZG9uJ3Qgc29sdmUgZXZlcnl0aGluZy4gUHJvcGVyIGltcGxlbWVudGF0aW9uLCBpbmNsdWRpbmcgdGhlIHJpZ2h0IGNyeXB0b2dyYXBoaWMgYWxnb3JpdGhtcyBhbmQga2V5IG1hbmFnZW1lbnQsIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIFdlIGNhbid0IGp1c3QgYXNzdW1lIHRoYXQgXCJpdCdzIElQdjYsIHNvIGl0J3Mgc2VjdXJlLlwiXG5cbkZ1cnRoZXJtb3JlLCBhbmQgcGVyaGFwcyBtb3N0IGltcG9ydGFudGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wZXJhdGlvbmFsIGNoYWxsZW5nZXMuIFRyYWluaW5nIG91ciB0ZWFtcywgdXBkYXRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIGFkYXB0aW5nIG91ciBuZXR3b3JrIG1hbmFnZW1lbnQgcHJvY2VkdXJlcyBpcyBnb2luZyB0byBiZSBhIGxhcmdlIGVmZm9ydC4gSXQncyBhIHNpZ25pZmljYW50IGNoYW5nZSwgbW9yZSB0aGFuIGp1c3QgZmxpcHBpbmcgYSBzd2l0Y2guIEl0J3MgYSBwYXJhZGlnbSBzaGlmdCwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhZHkgZm9yIGl0LiBTbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgdmVyeSBjYXJlZnVsbHkuXG5cbkhvdyBkbyB3ZSBhY3R1YWxseSBwbGFuIHRoaXMgdHJhbnNpdGlvbj8gTGV0J3MgZ2V0IGRvd24gdG8gdGhlIG5pdHR5LWdyaXR0eSBhbmQgYXNzZXNzIGFsbCBvZiB0aGUgcmVhbC13b3JsZCBmYWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjgyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzoxMC4zNTg1MDMxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2ODg2ODUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZG9fc3RhcnRfeG1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9pcDZfZ3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvaXA2X2dyZS5jPTE0MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZncmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNDE0LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpcDZncmVfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTQxNTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGlwNmdyZV90dW5uZWxfeG1pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTQxNi1cXHQubmRvX3Npb2NkZXZwcml2YXRlXFx0PSBpcDZncmVfdHVubmVsX3Npb2NkZXZwcml2YXRlLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTE4MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZncmVfdGFwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgyNS1cXHQubmRvX3VuaW5pdCA9IGlwNmdyZV90dW5uZWxfdW5pbml0LFxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODI2OlxcdC5uZG9fc3RhcnRfeG1pdCA9IGlwNmdyZV90dW5uZWxfeG1pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgyNy1cXHQubmRvX3NldF9tYWNfYWRkcmVzcyA9IGV0aF9tYWNfYWRkcixcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0xODg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXA2ZXJzcGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4Ni1cXHQubmRvX3VuaW5pdCA9XFx0XFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODc6XFx0Lm5kb19zdGFydF94bWl0ID1cXHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODgtXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPVxcdGV0aF9tYWNfYWRkcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTM6MTIuMDI3Mzc4OTk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2MjA2NTY3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEdSRSBUdW5uZWwgSW5pdGlhbGl6YXRpb24gYW5kIFRyYW5zbWlzc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgbWFpbiBmb2N1cyBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIHRyYW5zbWl0IGZ1bmN0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgZm9yIHRoZXNlIEdSRSB0dW5uZWxzLiBGcm9tIGEgcXVpY2sgc2NhbiwgSSdtIGtleWluZyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcGdyZV94bWl0YCwgYGdyZV90YXBfeG1pdGAsIGBlcnNwYW5feG1pdGAsIGBpcDZncmVfdHVubmVsX3htaXRgLCBhbmQgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAuIFRoZXNlIGFyZSB0aGUgY29yZSB0cmFuc21pdCBwYXRocy4gSSdtIGFsc28gaW5jbHVkaW5nIHRoZSBpbml0IGZ1bmN0aW9ucyBhcyB0aGV5J3JlIGZvdW5kYXRpb25hbDogYF9fZ3JlX3R1bm5lbF9pbml0YCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AsIGFuZCBgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbmAuXG5cbk5leHQsIEkgbmVlZCB0byBlbnN1cmUgSSd2ZSBjb3ZlcmVkIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFRoZSBiaWcgb25lcyBhcmUgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAsIGFuZCBgSVBWNmAgZm9yIHRoZSBJUHY2IHZhcmlhbnQuIGBORVRfSVBHUkVfQlJPQURDQVNUYCBtaWdodCBiZSByZWxhdGVkLCBidXQgaXQncyBub3Qgc3RyaWN0bHkgZXNzZW50aWFsIHRvIHRoaXMgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGxldCdzIGFzc2VtYmxlIGEgZmluYWwgbGlzdCBvZiB0aGUgZm9jdXMgc3ltYm9scyBiYXNlZCBvbiB3aGF0IEkndmUgaWRlbnRpZmllZCBzbyBmYXIuIFRoYXQnczpcbmBfX2dyZV90dW5uZWxfaW5pdGBcbmBpcGdyZV90dW5uZWxfaW5pdGBcbmBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgXG5gaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbmBcbmBpcGdyZV94bWl0YFxuYGdyZV90YXBfeG1pdGBcbmBlcnNwYW5feG1pdGBcbmBpcDZncmVfdHVubmVsX3htaXRgXG5gaXA2ZXJzcGFuX3R1bm5lbF94bWl0YFxuXG5XYWl0LCBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgdGhlIGNyaXRpY2FsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoIGFyZSBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gU28gSSBzaG91bGQgZGVmaW5pdGVseSBrZWVwIHRob3NlIHR3by5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2gncyBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgYGxsdHhgIGZsYWcsIHdoaWNoIGVuYWJsZXMgbG9ja2xlc3MgdHJhbnNtaXQgZm9yIEdSRSBkZXZpY2VzLCBpcyBjb25zaXN0ZW50bHkgc2V0IGR1cmluZyBpbml0aWFsaXphdGlvbi4gVGhlIGNvZGUgaXMgbW92ZWQgdG8gaGFwcGVuIGJlZm9yZSBhbnkgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgd2l0aGluIGBfX2dyZV90dW5uZWxfaW5pdGAgYW5kIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFzIGl0IG1vZGlmaWVzIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBHUkUgdHVubmVscyBhbmQgdGhpcyBtb2RpZmljYXRpb24gYWltcyB0byBtYWtlIGxvY2tsZXNzIHRyYW5zbWl0IGJlIHVzZWQgY29uc2lzdGVudGx5LlxuXG5TbywgdG8gc3VtbWFyaXplLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBORVRfSVBHUkVgIGFuZCBgSVBWNl9HUkVgLCBhbmQgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgYXJlIGBfX2dyZV90dW5uZWxfaW5pdGAsIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLCBgaXBncmVfeG1pdGAsIGBncmVfdGFwX3htaXRgLCBgZXJzcGFuX3htaXRgLCBgaXA2Z3JlX3R1bm5lbF94bWl0YCwgYW5kIGBpcDZlcnNwYW5fdHVubmVsX3htaXRgLlxuXG5Mb29rcyBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjQzLCJPdXRwdXRUb2tlbnMiOjIwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzoyMC42NDgwNDA0OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM4NjUzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzXCIsXG4gICAgXCJpcGdyZV94bWl0XCIsXG4gICAgXCJncmVfdGFwX3htaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCIsXG4gICAgXCJpcDZncmVfdHVubmVsX3htaXRcIixcbiAgICBcImlwNmVyc3Bhbl90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzXCIsXG4gICAgXCJpcGdyZV94bWl0XCIsXG4gICAgXCJncmVfdGFwX3htaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCIsXG4gICAgXCJpcDZncmVfdHVubmVsX3htaXRcIixcbiAgICBcImlwNmVyc3Bhbl90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow95kwf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-13 19:39:52 +0000 UTC FinishedAt: 2026-07-13 19:53:22 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "3f1f755366687d051174739fb99f7d560202f60b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_IPGRE", "IPV6_GRE" ], "series_id": "546800ac-b045-43da-8a3c-281433429d20" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "__gre_tunnel_init", "ip6gre_tnl_init_features", "ipgre_xmit", "gre_tap_xmit", "erspan_xmit", "ip6gre_tunnel_xmit", "ip6erspan_tunnel_xmit" ], "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+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyYjMzQ7LAogICAgJiMzNDtpcGdyZV94bWl0JiMzNDssCiAgICAmIzM0O2dyZV90YXBfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVx1MDAzZWxsdHggPSB0cnVlYCBhc3NpZ25tZW50IGJlZm9yZSBwb3RlbnRpYWwgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGBsbHR4YCBmbGFnICh3aGljaCBpbmRpY2F0ZXMgbG9ja2xlc3MgdHJhbnNtaXQpIGlzIGFsd2F5cyBzZXQgZm9yIEdSRSBkZXZpY2VzLCBldmVuIGlmIHRoZXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB1bnN1cHBvcnRlZCBvZmZsb2FkIGZlYXR1cmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG92ZXIgR1JFIHR1bm5lbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzMDVmNjA0OWEwZjQ4MjU1OTljYmU2ZGY5YWJmM2M5MzI5NGQzMTE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTk6NTI6MzEgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvaXBfZ3JlLmMgYi9uZXQvaXB2NC9pcF9ncmUuY1xuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvaXBfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2lwX2dyZS5jXG5AQCAtMTAxOCw2ICYjNDM7MTAxOCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4gXG4mIzQzO1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuJiM0MztcbiBcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxuIFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cbiBcdCAqL1xuQEAgLTEwMjksOCAmIzQzOzEwMzEsNiBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xuLVxuLVx0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uYjg0MzExNmU5YjcwM2MgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9pcDZfZ3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9ncmUuY1xuQEAgLTE0NTUsNiAmIzQzOzE0NTUsOCBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFxuJiM0MztcdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiYjNDM7XG4gXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbiBcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4gXHQgKi9cbkBAIC0xNDY2LDggJiM0MzsxNDY4LDYgQEAgc3RhdGljIHZvaWQgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4gXHRkZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4tXG4tXHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9JUEdSRSYjMzQ7LAogICAgJiMzNDtJUFY2X0dSRSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O19fZ3JlX3R1bm5lbF9pbml0JiMzNDssCiAgICAmIzM0O2lwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyYjMzQ7LAogICAgJiMzNDtpcGdyZV94bWl0JiMzNDssCiAgICAmIzM0O2dyZV90YXBfeG1pdCYjMzQ7LAogICAgJiMzNDtlcnNwYW5feG1pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdHVubmVsX3htaXQmIzM0OywKICAgICYjMzQ7aXA2ZXJzcGFuX3R1bm5lbF94bWl0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVx1MDAzZWxsdHggPSB0cnVlYCBhc3NpZ25tZW50IGJlZm9yZSBwb3RlbnRpYWwgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGBsbHR4YCBmbGFnICh3aGljaCBpbmRpY2F0ZXMgbG9ja2xlc3MgdHJhbnNtaXQpIGlzIGFsd2F5cyBzZXQgZm9yIEdSRSBkZXZpY2VzLCBldmVuIGlmIHRoZXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB1bnN1cHBvcnRlZCBvZmZsb2FkIGZlYXR1cmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG92ZXIgR1JFIHR1bm5lbHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDMwNWY2MDQ5YTBmNDgyNTU5OWNiZTZkZjlhYmYzYzkzMjk0ZDMxMTYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAxMyAxOTo1MjozMSAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY0L2lwX2dyZS5jIGIvbmV0L2lwdjQvaXBfZ3JlLmMKaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NAotLS0gYS9uZXQvaXB2NC9pcF9ncmUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2NC9pcF9ncmUuYwpAQCAtMTAxOCw2ICYjNDM7MTAxOCw4IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpCiAJZGV2LSZndDtmZWF0dXJlcwkJfD0gR1JFX0ZFQVRVUkVTOwogCWRldi0mZ3Q7aHdfZmVhdHVyZXMJfD0gR1JFX0ZFQVRVUkVTOwogCiYjNDM7CWRldi0mZ3Q7bGx0eCA9IHRydWU7CiYjNDM7CiAJLyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyCiAJICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS4KIAkgKi8KQEAgLTEwMjksOCAmIzQzOzEwMzEsNiBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCiAJZGV2LSZndDtmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTsKIAlkZXYtJmd0O2h3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwotCi0JZGV2LSZndDtsbHR4ID0gdHJ1ZTsKIH0KIAogc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvaXA2X2dyZS5jIGIvbmV0L2lwdjYvaXA2X2dyZS5jCmluZGV4IDdjMDlhMjY5YjM1MjE2Li5iODQzMTE2ZTliNzAzYyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY2L2lwNl9ncmUuYwpAQCAtMTQ1NSw2ICYjNDM7MTQ1NSw4IEBAIHN0YXRpYyB2b2lkIGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQogCWRldi0mZ3Q7ZmVhdHVyZXMJCXw9IEdSRTZfRkVBVFVSRVM7CiAJZGV2LSZndDtod19mZWF0dXJlcwl8PSBHUkU2X0ZFQVRVUkVTOwogCiYjNDM7CWRldi0mZ3Q7bGx0eCA9IHRydWU7CiYjNDM7CiAJLyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyCiAJICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS4KIAkgKi8KQEAgLTE0NjYsOCAmIzQzOzE0NjgsNiBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldikKIAogCWRldi0mZ3Q7ZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7CiAJZGV2LSZndDtod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTsKLQotCWRldi0mZ3Q7bGx0eCA9IHRydWU7CiB9CiAKIHN0YXRpYyBpbnQgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjUzCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNzg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBSZW9yZGVyaW5nIEJ1ZyBpbiBHUkUgVHVubmVsIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQganVzdCBzaHVmZmxlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LSZndDtsbHR4ID0gdHJ1ZTtgIGEgZmV3IGxpbmVzIHVwIGluIGBfX2dyZV90dW5uZWxfaW5pdGAgZm9yIGJvdGggSVB2NCBhbmQgSVB2NiBHUkUgdHVubmVscy4gIEZ1bmN0aW9uYWxseSwgaXQmIzM5O3MganVzdCBhIHJlb3JkZXJpbmcuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gdHJlYXQgdGhpcyBhcyBhIHBvdGVudGlhbGx5IG1pbm9yLCBwZXJoYXBzIGNvc21ldGljIGNoYW5nZS4gIEJ1dCwgYXMgYSBzZWFzb25lZCBkZXZlbG9wZXIsIG15IGltbWVkaWF0ZSBxdWVzdGlvbiBpcyBhbHdheXM6IGRvZXMgdGhpcyAqYWN0dWFsbHkqIGNoYW5nZSBhbnl0aGluZyBmdW5jdGlvbmFsbHk/IEV2ZW4gdGhlIHNtYWxsZXN0IGNoYW5nZSBjYW4gaGF2ZSB1bmludGVuZGVkIGNvbnNlcXVlbmNlcywgZXNwZWNpYWxseSBpbiB0aGUga2VybmVsLgoKU28sIEkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBzbmlwcGV0OgoKYGBgYwoJZGV2LSZndDtmZWF0dXJlcwkJfD0gR1JFX0ZFQVRVUkVTOwoJZGV2LSZndDtod19mZWF0dXJlcwl8PSBHUkVfRkVBVFVSRVM7CgoJZGV2LSZndDtsbHR4ID0gdHJ1ZTsKCgkvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDIKCSAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuCgkgKi8KCWlmICghKHR1bm5lbC0mZ3Q7cGFybXMub19mbGFncyAmYW1wOyBUVU5ORUxfU0VRKSkgewoJCS8qIGh3X2VuY19mZWF0dXJlcyBpcyBzZXQgaW4gZ3JlX3R1bm5lbF9pbml0KCkgKi8KCQlkZXYtJmd0O2h3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwoJfQoKCWRldi0mZ3Q7ZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7CglkZXYtJmd0O2h3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFOwpgYGAKClByZXZpb3VzbHksIGBkZXYtJmd0O2xsdHggPSB0cnVlO2Agd2FzIGF0IHRoZSAqZW5kKiBvZiB0aGlzIGJsb2NrLiBOb3csIGl0JiMzOTtzIG1vdmVkICpiZWZvcmUqIHRoZSBjb25kaXRpb25hbCBjaGVjayByZWxhdGVkIHRvIGBUVU5ORUxfU0VRYC4gIE15IGZpcnN0IHRob3VnaHQgaXMsIGRvZXMgYW55dGhpbmcgKmluIGJldHdlZW4qIHJlYWQgYGRldi0mZ3Q7bGx0eGA/IElmIHNvbWV0aGluZyByZWxpZXMgb24gdGhlIHZhbHVlIG9mIGBkZXYtJmd0O2xsdHhgIGJlZm9yZSBpdCYjMzk7cyBzZXQsIHRoaXMgcmVvcmRlcmluZyBjb3VsZCBiZSBkaXNhc3Ryb3VzLgoKTG9va2luZyBhdCB0aGUgY29kZSwgaXQgcmVhZHMgYHR1bm5lbC0mZ3Q7cGFybXMub19mbGFnc2AgYW5kIGNvbmRpdGlvbmFsbHkgc2V0cyBgZGV2LSZndDtod19mZWF0dXJlc2AuICBUaGVyZSYjMzk7cyBubyBkaXJlY3QgcmVhZCBvZiBgZGV2LSZndDtsbHR4YCBpbiB0aGlzIHNlY3Rpb24uICBTbywgYXQgYSBnbGFuY2UsIEkgZG9uJiMzOTt0IHNlZSBhbiBvYnZpb3VzIHByb2JsZW0uICBObyBpbnRlcm1lZGlhdGUgZnVuY3Rpb24gY2FsbHMsIG1hY3Jvcywgb3IgYml0ZmllbGQgbWFuaXB1bGF0aW9ucyB0aGF0IHdvdWxkIGJlIGFmZmVjdGVkLgoKTm93LCBteSBtaW5kIHN0YXJ0cyB0byB3YW5kZXI6IHdoeSBkaWQgdGhlIGF1dGhvciBtYWtlIHRoaXMgY2hhbmdlPyBXYXMgaXQgZm9yIGNsYXJpdHk/IFBlcmZvcm1hbmNlPyBEaWQgaXQgZml4IGEgc3VidGxlIHJhY2UgY29uZGl0aW9uIG9yIGEgcG90ZW50aWFsIHBhdGggd2l0aCBhbiBlYXJseSByZXR1cm4sIHdoZXJlIGBkZXYtJmd0O2xsdHhgIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQ/ICBJJiMzOTtkIGxvdmUgdG8gc2VlIHRoZSBjb21taXQgbWVzc2FnZSByaWdodCBub3chIFdpdGhvdXQgdGhhdCwgSSYjMzk7bSByZWR1Y2VkIHRvIHNwZWN1bGF0aW5nLiBJIHNob3VsZCBjaGVjayBpZiB0aGVyZSYjMzk7cyBhbnkgbWFjcm8gdGhhdCByZWFkcyBgZGV2LSZndDtsbHR4YCBvciBpZiB0aGUgYXV0aG9yIG1lbnRpb25lZCB0aGlzIGFueXdoZXJlIGVsc2UuCgpMZXQmIzM5O3Mgc2VlLiBJcyBgZGV2LSZndDtsbHR4YCBhIGJpdGZpZWxkPyAgQWgsIGl0JiMzOTtzIGEgYm9vbGVhbiBpbiBgc3RydWN0IG5ldF9kZXZpY2VgLiAgSSByZWNhbGwgYE5FVElGX0ZfTExUWGAsIGEgZGVwcmVjYXRlZCBmbGFnLiAgSXMgdGhpcyByZWxhdGVkPyAgQWgsIGBkZXYtJmd0O2xsdHhgIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgaXQuCgpTbywgSSYjMzk7bSBzdHVjayBoZXJlLiAgSXQgc2VlbXMgdGhlIGNvcmUgbG9naWMgKnNob3VsZG4mIzM5O3QqIGJlIGFmZmVjdGVkLCBidXQsIEkgYW0gbGVmdCB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZXJlJiMzOTtzIHByb2JhYmx5IGEgZ29vZCByZWFzb24gZm9yIHRoaXMgY2hhbmdlLCBhbmQgSSBuZWVkIHRvIGZpbmQgdGhlIGNvbnRleHQgdG8gdW5kZXJzdGFuZCBpdCBiZXR0ZXIuICBJIHNob3VsZCBwcm9iYWJseSBsb29rIGF0IHRoZSBjb250ZXh0IGluIGBuZXQvaXB2NC9pcF9ncmUuY2AgYXJvdW5kIGxpbmUgMTAxOCB0byBzZWUgd2hhdCYjMzk7cyByZWFsbHkgZ29pbmcgb24gaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2lwX2dyZS5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTAxMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA0MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsxMDEwOlx0XG4xMDExOlx0XHR0dW5uZWwgPSBuZXRkZXZfcHJpdihkZXYpO1xuMTAxMjpcdFx0dHVubmVsLVx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncyk7XG4xMDEzOlx0XHR0dW5uZWwtXHUwMDNlcGFybXMuaXBoLnByb3RvY29sID0gSVBQUk9UT19HUkU7XG4xMDE0Olx0XG4xMDE1Olx0XHR0dW5uZWwtXHUwMDNlaGxlbiA9IHR1bm5lbC1cdTAwM2V0dW5faGxlbiAmIzQzOyB0dW5uZWwtXHUwMDNlZW5jYXBfaGxlbjtcbjEwMTY6XHRcdGRldi1cdTAwM2VuZWVkZWRfaGVhZHJvb20gPSB0dW5uZWwtXHUwMDNlaGxlbiAmIzQzOyBzaXplb2YodHVubmVsLVx1MDAzZXBhcm1zLmlwaCk7XG4xMDE3Olx0XG4xMDE4Olx0XHRkZXYtXHUwMDNlZmVhdHVyZXNcdFx0fD0gR1JFX0ZFQVRVUkVTO1xuMTAxOTpcdFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkVfRkVBVFVSRVM7XG4xMDIwOlx0XG4xMDIxOlx0XHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4xMDIyOlx0XG4xMDIzOlx0XHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbjEwMjQ6XHRcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4xMDI1Olx0XHQgKi9cbjEwMjY6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgdHVubmVsLVx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxuMTAyNzpcdFx0XHRyZXR1cm47XG4xMDI4Olx0XHRpZiAodGVzdF9iaXQoSVBfVFVOTkVMX0NTVU1fQklULCB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFncykgXHUwMDI2XHUwMDI2XG4xMDI5Olx0XHQgICAgdHVubmVsLVx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXG4xMDMwOlx0XHRcdHJldHVybjtcbjEwMzE6XHRcbjEwMzI6XHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzM6XHRcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjEwMzQ6XHR9XG4xMDM1Olx0XG4xMDM2Olx0c3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuMTAzNzpcdHtcbjEwMzg6XHRcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XG4xMDM5Olx0XHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IFx1MDAyNnR1bm5lbC1cdTAwM2VwYXJtcy5pcGg7XG4xMDQwOlx0XG4xMDQxOlx0XHRfX2dyZV90dW5uZWxfaW5pdChkZXYpO1xuMTA0MjpcdFxuMTA0MzpcdFx0X19kZXZfYWRkcl9zZXQoZGV2LCBcdTAwMjZpcGgtXHUwMDNlc2FkZHIsIDQpO1xuMTA0NDpcdFx0bWVtY3B5KGRldi1cdTAwM2Vicm9hZGNhc3QsIFx1MDAyNmlwaC1cdTAwM2VkYWRkciwgNCk7XG4xMDQ1Olx0XG4xMDQ2Olx0XHRkZXYtXHUwMDNlZmxhZ3NcdFx0PSBJRkZfTk9BUlA7XG4xMDQ3Olx0XHRuZXRpZl9rZWVwX2RzdChkZXYpO1xuMTA0ODpcdFx0ZGV2LVx1MDAzZWFkZHJfbGVuXHRcdD0gNDtcbjEwNDk6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0NDYyCgkJCQkJCQlvdXRwdXQ6IDQwCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFN1YnRsZSBHUkUgVHVubmVsIERyaXZlciBDaGFuZ2UqKgoKT2theSwgaGVyZSB3ZSBnby4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQsIGFoYSEgVGhlcmUgYXJlIGluZGVlZCBlYXJseSByZXR1cm4gcG9pbnRzIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJIGRpZG4mIzM5O3QgaW1tZWRpYXRlbHkgc2VlIHRoZW0uIFNwZWNpZmljYWxseSwgdGhlIGJpdCB0ZXN0cyBmb3IgYElQX1RVTk5FTF9TRVFfQklUYCBhbmQgYElQX1RVTk5FTF9DU1VNX0JJVGAgYXJlIHNob3J0LWNpcmN1aXRpbmcgdGhlIHJlc3Qgb2YgdGhlIGZ1bmN0aW9uLiBUaGlzIGlzIHNpZ25pZmljYW50LgoKSWYgZWl0aGVyIG9mIHRob3NlIGNvbmRpdGlvbnMgYXJlIG1ldCwgdGhlIGZ1bmN0aW9uIGV4aXRzIGVhcmx5LiBJJiMzOTttIHJlYWxpemluZyB0aGF0IHRoZSBsaW5lIGBkZXYtJmd0O2xsdHggPSB0cnVlYCB3YXMgcHJldmlvdXNseSBza2lwcGVkIHdoZW4gdGhvc2UgZWFybHkgcmV0dXJucyBoYXBwZW5lZC4gU28sIGlmIEkgbW92ZSBgZGV2LSZndDtsbHR4ID0gdHJ1ZWAgKnVwKiBhYm92ZSB0aG9zZSByZXR1cm4gc3RhdGVtZW50cywgSSYjMzk7bSBlZmZlY3RpdmVseSBjaGFuZ2luZyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRyaXZlci4gTm93LCBgZGV2LSZndDtsbHR4YCB3aWxsIGJlIHNldCB0byBgdHJ1ZWAgZXZlbiB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIGVhcmx5LgoKVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQmIzM5O3Mgbm90IGp1c3QgY29zbWV0aWMuIFRoZSBzZXR0aW5nIG9mIGBkZXYtJmd0O2xsdHhgIGNvbnRyb2xzIHdoZXRoZXIgb3Igbm90IHRoZSBkZXZpY2Ugd2lsbCB1c2UgdGhlIHFkaXNjIGxvY2sgKGB0eHEtJmd0O194bWl0X2xvY2tgKSBkdXJpbmcgdHJhbnNtaXQuIElmIGBkZXYtJmd0O2xsdHhgIGlzICpub3QqIHNldCwgdGhlIGxvY2sgKndpbGwqIGJlIHVzZWQuIElmIGl0ICppcyogc2V0LCB0aGUgZGV2aWNlIHdpbGwgYmUgbG9ja2xlc3MuIFRoaXMgZGlyZWN0bHkgaW1wYWN0cyBjb25jdXJyZW5jeSBhbmQgbG9ja2luZyBiZWhhdmlvciB3aXRoaW4gdGhlIEdSRSB0dW5uZWwgZHJpdmVyLiBUaGlzIHdhcnJhbnRzIGNhcmVmdWwgcmV2aWV3LgoKT2theSwgSSBuZWVkIHRvIHZlcmlmeSBob3cgdGhpcyBjaGFuZ2UgaW50ZXJhY3RzIHdpdGggcmVsYXRlZCBpbml0aWFsaXphdGlvbnMsIHBhcnRpY3VsYXJseSB3aXRoaW4gYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AsIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gdW5mb3Jlc2VlbiBjb25zZXF1ZW5jZXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb21wbGV0ZSBwaWN0dXJlIG9mIGhvdyB0aGUgbG9ja2xlc3MvbG9ja2VkIGJlaGF2aW9yIGlzIGRldGVybWluZWQgaW4gdGhlIG92ZXJhbGwgdHVubmVsIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZ3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxNDUwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzE0NTA6XHRcbjE0NTE6XHRzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbjE0NTI6XHR7XG4xNDUzOlx0XHRzdHJ1Y3QgaXA2X3RubCAqbnQgPSBuZXRkZXZfcHJpdihkZXYpO1xuMTQ1NDpcdFxuMTQ1NTpcdFx0ZGV2LVx1MDAzZWZlYXR1cmVzXHRcdHw9IEdSRTZfRkVBVFVSRVM7XG4xNDU2Olx0XHRkZXYtXHUwMDNlaHdfZmVhdHVyZXNcdHw9IEdSRTZfRkVBVFVSRVM7XG4xNDU3Olx0XG4xNDU4Olx0XHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4xNDU5Olx0XG4xNDYwOlx0XHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcbjE0NjE6XHRcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXG4xNDYyOlx0XHQgKi9cbjE0NjM6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgbnQtXHUwMDNlcGFybXMub19mbGFncykpXG4xNDY0Olx0XHRcdHJldHVybjtcbjE0NjU6XHRcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfQ1NVTV9CSVQsIG50LVx1MDAzZXBhcm1zLm9fZmxhZ3MpIFx1MDAyNlx1MDAyNlxuMTQ2NjpcdFx0ICAgIG50LVx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXG4xNDY3Olx0XHRcdHJldHVybjtcbjE0Njg6XHRcbjE0Njk6XHRcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjE0NzA6XHRcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbjE0NzE6XHR9XG4xNDcyOlx0XG4xNDczOlx0c3RhdGljIGludCBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4xNDc0Olx0e1xuMTQ3NTpcdFx0c3RydWN0IGlwNl90bmwgKnR1bm5lbDtcbjE0NzY6XHRcdGludCByZXQ7XG4xNDc3Olx0XHRpbnQgdF9obGVuO1xuMTQ3ODpcdFxuMTQ3OTpcdFx0dHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1NTM3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEZ1bmN0aW9uYWwgQ2hhbmdlIGluIEdSRSBUdW5uZWwgTG9ja2luZyoqCgpPa2F5LCBJIHNlZSBpdC4gSXQmIzM5O3MgdGhlIHNhbWUgc2l0dWF0aW9uIEkgd2FzIGFudGljaXBhdGluZywgZWFybHkgcmV0dXJucy4gU28sIHRoaXMgYm9pbHMgZG93biB0byBhICpmdW5jdGlvbmFsIGNoYW5nZSouIFRoZSBxdWVzdGlvbiBpcywgZG9lcyBpdCB3YXJyYW50IGZ1enppbmc/IEFic29sdXRlbHksIHllcywgYmVjYXVzZSB0aGlzIGRpcmVjdGx5IGltcGFjdHMgbG9ja2luZyB3aXRoaW4gdGhlIHRyYW5zbWl0IHBhdGggb2YgR1JFIHR1bm5lbHMuCgpMZXQgbWUgYnJlYWsgaXQgZG93bjogd2hlbiBgZGV2LSZndDtsbHR4YCBpcyBzZXQgdG8gdHJ1ZSwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIGRyaXZlciBlaXRoZXIgaGFuZGxlcyBpdHMgb3duIGxvY2tpbmcgb3IgZG9lc24mIzM5O3QgcmVxdWlyZSBpdC4gUHJldmlvdXNseSwgaWYgdGhhdCBjb25kaXRpb24gd2FzbiYjMzk7dCBtZXQgZHVlIHRvIHRoYXQgZWFybHkgcmV0dXJuLCB0aGUgZ2VuZXJpYyBuZXR3b3JraW5nIGNvZGUgd291bGQgc3RlcCBpbiBhbmQgdGFrZSBhIGxvY2suIE5vdywgaXQgd29uJiMzOTt0LgoKVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBUaGlzIGNoYW5nZSBjb3VsZCByZXZlYWwgZXhpc3RpbmcgcmFjZSBjb25kaXRpb25zIGluIHRoZSBHUkUgdHJhbnNtaXQgcGF0aCBpZiB0aGUgbG9ja2xlc3MgYXBwcm9hY2ggd2FzbiYjMzk7dCBhY3R1YWxseSBzYWZlLiBPciwgaXQgbWlnaHQgZml4IGEgbGF0ZW50IGJ1ZyB3aGVyZSB0aGUgc3lzdGVtIHdhcyAqc3VwcG9zZWQqIHRvIGJlIGxvY2tsZXNzIGJ1dCB3YXNuJiMzOTt0LCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGRlYWRsb2NrcyBvciBoaW5kZXJpbmcgcGVyZm9ybWFuY2UuIEhhbmcgb24gYSBtaW51dGUsIEdSRSB0dW5uZWxzIGFyZSBpbmhlcmVudGx5IGRlc2lnbmVkIHRvIGJlIGxvY2tsZXNzIChgbGx0eCA9IHRydWVgKS4gSWYgYGxsdHhgIHdhcyBmYWxzZSBiZWZvcmUgdGhlIHBhdGNoLCBwZXJoYXBzIHRha2luZyBhIGxvY2sgKndhcyogdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uIFRoYXQmIzM5O3MgZ29vZCwgaWYgdGhhdCYjMzk7cyB0aGUgY2FzZS4gSXQmIzM5O3MgcG9zc2libGUgdGhpbmdzIHdlcmUgdGVjaG5pY2FsbHkgZmluZSwgYnV0IHNsb3cgZHVlIHRvIHVubmVjZXNzYXJ5IGxvY2tpbmcuIEVpdGhlciB3YXksIHRoaXMgaXMgYSBkaXN0aW5jdCBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgYW5kIHR1bm5lbGluZyBjb2RlLgoKTm93LCBmb3IgdGhlIGNvbmZpZ3VyYXRpb25zOiB3ZSYjMzk7bGwgbmVlZCBgQ09ORklHX05FVF9JUEdSRWAgZm9yIElQdjQgR1JFIGFuZCBgQ09ORklHX0lQVjZfR1JFYCBmb3IgSVB2NiBHUkUuIFRpbWUgdG8gZGVsdmUgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY29uZmlybS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTkVUX0lQR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE3OS1cbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcbm5ldC9pcHY0L0tjb25maWctMTgxLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSBkZW11bHRpcGxleGVyXCYjMzQ7XG4tLVxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTE5MS1cbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcbm5ldC9pcHY0L0tjb25maWctMTkzLVx0dHJpc3RhdGUgXCYjMzQ7SVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcJiMzNDtcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cbm5ldC9pcHY0L0tjb25maWc6MjA3OmNvbmZpZyBORVRfSVBHUkVfQlJPQURDQVNUXG5uZXQvaXB2NC9LY29uZmlnLTIwOC1cdGJvb2wgXCYjMzQ7SVA6IGJyb2FkY2FzdCBHUkUgb3ZlciBJUFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzOTEKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqSVB2NiBDb25zaWRlcmF0aW9ucyAmYW1wOyBJbXBsaWNhdGlvbnMqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGRyaWxsIGRvd24gaW50byBJUHY2LiBJJiMzOTt2ZSBiZWVuIG11bGxpbmcgb3ZlciB0aGUgaW1wbGljYXRpb25zIGFuZCBjaGFsbGVuZ2VzLiBUaGUgd2hvbGUgdHJhbnNpdGlvbiBpcyBhIGNvbXBsZXggZGFuY2UsIGlzbiYjMzk7dCBpdD8gV2UmIzM5O3JlIG5vdCBqdXN0IGZsaXBwaW5nIGEgc3dpdGNoOyB3ZSYjMzk7cmUgZXNzZW50aWFsbHkgcmUtYXJjaGl0ZWN0aW5nIHNpZ25pZmljYW50IHBvcnRpb25zIG9mIHRoZSBuZXR3b3JrIGluZnJhc3RydWN0dXJlLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm5zIHJldm9sdmUgYXJvdW5kIHRoZSB0cmFuc2l0aW9uIG1lY2hhbmlzbXMuIFdlIG5lZWQgdG8gYmUganVkaWNpb3VzIGluIGNob29zaW5nIHRoZSByaWdodCBtZXRob2RzIOKAkyBEdWFsLVN0YWNrPyBOQVQ2ND8gNnRvND8gVGVyZWRvPyBFYWNoIGhhcyB0cmFkZS1vZmZzIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIGludGVyb3BlcmFiaWxpdHkuIFdlIGNhbuKAmXQganVzdCBkZWZhdWx0IHRvIHRoZSAmIzM5O2Vhc2llc3QmIzM5OyBhcHByb2FjaDsgaXQgaGFzIHRvIGJlIHRoZSBtb3N0IGFwcHJvcHJpYXRlIGZvciB0aGUgc3BlY2lmaWMgbmV0d29yayBzZWdtZW50LgoKVGhlbiB0aGVyZSYjMzk7cyB0aGUgb3BlcmF0aW9uYWwgYXNwZWN0LiBJUHY2IGFkZHJlc3MgcGxhbm5pbmcgaXMgKmNyaXRpY2FsKi4gV2UgbmVlZCB0byBiZSBtZXRpY3Vsb3VzIHRvIG1pbmltaXplIGZyYWdtZW50YXRpb24gYW5kIG1ha2Ugcm91dGluZyBlZmZlY3RpdmUsIHdoaWNoIEkgZmVlbCB3aWxsIGJlIG1vcmUgaW1wYWN0ZnVsIHRvIG15IGFyZWEuIFdoYXQgd2lsbCB0aGUgaW1wYWN0IGJlIHRvIGFsbCBvZiBvdXIgYXBwbGljYXRpb25zPyBIb3cgZG9lcyB0aGlzIGltcGFjdCBvdXIgZGF0YSBjZW50ZXJzLCBjbG91ZCBkZXBsb3ltZW50cywgYW5kIGV2ZW4gSW9UIGRldmljZXM/IEFyZSB3ZSBhY2NvdW50aW5nIGZvciBhbGwgdGhlIGVkZ2UgY2FzZXMgd2l0aCB0aGUgbmV3IHRlY2hub2xvZ3k/CgpUaGUgc2VjdXJpdHkgbGFuZHNjYXBlIHNoaWZ0cywgdG9vLiBXaGlsZSBJUHY2IHByb3ZpZGVzIG1vcmUgcm9idXN0IGF1dGhlbnRpY2F0aW9uIGFuZCBlbmNyeXB0aW9uIGNhcGFiaWxpdGllcywgaXQgYWxzbyBjcmVhdGVzIG5ldyBhdHRhY2sgdmVjdG9ycyB0aGF0IHdlIG5lZWQgdG8gY29uc2lkZXIuIFdlIG5lZWQgdG8gbG9vayBjbG9zZWx5IGF0IG5ldyBmaXJld2FsbCBjb25maWd1cmF0aW9ucywgYWRkcmVzcyBhc3NpZ25tZW50LCBhbmQgc2VjdXJpdHkgcG9saWNpZXMuCgpGaW5hbGx5LCB0aGUgbG9uZyB0YWlsIG9mIGNvbXBhdGliaWxpdHkuIEludGVyb3BlcmFiaWxpdHkgd2l0aCBsZWdhY3kgc3lzdGVtcyBhbmQgdGhlIGF2YWlsYWJpbGl0eSBvZiBJUHY2LWVuYWJsZWQgYXBwbGljYXRpb25zIGFyZSwgbmF0dXJhbGx5LCB0aGUgZWxlcGhhbnQgaW4gdGhlIHJvb20uIEFyZSB3ZSBnb2luZyB0byBzZWUgYW5vdGhlciAmIzM0O0lQdjQgdnMuIElQdjYmIzM0OyBzaXR1YXRpb24/IEl0JiMzOTtzIGNydWNpYWwgdG8gaGF2ZSBhIGNsZWFyIHJvYWRtYXAgZm9yIGdyYWR1YWwgYWRvcHRpb24sIHJpZ29yb3VzIHRlc3RpbmcsIGFuZCBwaGFzZWQgbWlncmF0aW9uIHRvIG1pbmltaXplIGRpc3J1cHRpb24uIFRoZSByZWFsIHF1ZXN0aW9uIGlzIGhvdyBmYXN0IGNhbiB3ZSBkbyB0aGlzIHdoaWxlIG1pbmltaXppbmcgZGlzcnVwdGlvbiB0byB0aG9zZSB0aGF0IHJlbHkgb24gdGhpcyBpbmZyYXN0cnVjdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQVjZfR1JFJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTIwOS1cbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBHUkUgdHVubmVsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MjAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA5NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipHUkUgVHVubmVsIEltcGxlbWVudGF0aW9uOiBLZXkgRnVuY3Rpb25zIGFuZCBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhlIEdSRSB0dW5uZWwgaW1wbGVtZW50YXRpb24gaGVyZS4gVGhlIGZpcnN0IHRoaW5ncyB0aGF0IGp1bXAgb3V0IGFyZSB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zOiBgTkVUX0lQR1JFYCBhbmQgYElQVjZfR1JFYC4gVGhvc2UgYXJlIHRoZSBlbnRyeSBwb2ludHMuCgpOb3csIHdoYXQgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gcGF5IGF0dGVudGlvbiB0bz8gV2VsbCwgbmF0dXJhbGx5LCBJJiMzOTttIHRoaW5raW5nIGluaXRpYWxpemF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlc2UgdHVubmVscyBhcmUgaW5pdGlhbGx5IHNldCB1cCwgc28gSSYjMzk7bSBmb2N1c2luZyBvbiBgX19ncmVfdHVubmVsX2luaXRgLCBgaXBncmVfdHVubmVsX2luaXRgLCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYCwgYW5kIGBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uYC4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aG9zZSBhbmQgaG93IHRoZXkgaW50ZXJhY3QuCgpUaGVuIHRoZXJlJiMzOTtzIHRoZSB0cmFuc21pc3Npb24gc2lkZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSB3aXRoIG5ldHdvcmtpbmcgaW50ZXJuYWxzLCBJIGltbWVkaWF0ZWx5IGtub3cgYGxsdHhgIGlzIGdvaW5nIHRvIGltcGFjdCB0cmFuc21pdCBsb2NraW5nLiBTbywgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgR1JFIHRyYW5zbWl0IGZ1bmN0aW9ucyBpbiB0aGlzIGNvZGUuIEl0JiMzOTtzIHRpbWUgdG8gaWRlbnRpZnkgdGhvc2UgdHJhbnNtaXNzaW9uIGVudHJ5IHBvaW50cyBhbmQgc2VlIGhvdyBsb2NraW5nIGlzIGhhbmRsZWQuIExldCYjMzk7cyBmaW5kIHRob3NlIHRyYW5zbWl0IGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmRvX3N0YXJ0X3htaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9ncmUuYz05ODA9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcGdyZV9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ni0jZW5kaWZcbm5ldC9pcHY0L2lwX2dyZS5jOjk4NzpcdC5uZG9fc3RhcnRfeG1pdFx0XHQ9IGlwZ3JlX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy05ODgtXHQubmRvX3Npb2NkZXZwcml2YXRlXHQ9IGlwX3R1bm5lbF9zaW9jZGV2cHJpdmF0ZSxcbi0tXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDAtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzQxOlx0Lm5kb19zdGFydF94bWl0XHRcdD0gZ3JlX3RhcF94bWl0LFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM0Mi1cdC5uZG9fc2V0X21hY19hZGRyZXNzIFx0PSBldGhfbWFjX2FkZHIsXG4tLVxubmV0L2lwdjQvaXBfZ3JlLmM9MTM3MT1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGVyc3Bhbl9uZXRkZXZfb3BzID0ge1xuLS1cbm5ldC9pcHY0L2lwX2dyZS5jLTEzNzMtXHQubmRvX3VuaW5pdFx0XHQ9IGlwX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzc0Olx0Lm5kb19zdGFydF94bWl0XHRcdD0gZXJzcGFuX3htaXQsXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3NcdD0gZXRoX21hY19hZGRyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMyAxOTo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NjgyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKklQdjYgQ29uc2lkZXJhdGlvbnMgJmFtcDsgSW1wbGljYXRpb25zKioKCkFscmlnaHQsIGxldCYjMzk7cyBkcmlsbCBkb3duIGludG8gSVB2Ni4gSSYjMzk7bSB0aGlua2luZyBhYm91dCB0aGUgaW1wbGljYXRpb25zLCByaWdodD8gV2UmIzM5O3ZlIGdvdCB0aGlzIG1hc3NpdmUgYWRkcmVzcyBzcGFjZSwgd2hpY2ggaXMgZmFudGFzdGljLCBidXQgaXQgZm9yY2VzIGEgY29tcGxldGUgcmV0aGlua2luZyBvZiBuZXR3b3JrIGRlc2lnbiBhbmQgc2VjdXJpdHkuIEkmIzM5O20gbm90IGp1c3QgdGFsa2luZyBhYm91dCB0aGUgb2J2aW91cyBzdHVmZiDigJMgdGhlIGxhY2sgb2YgTkFULCB0aGUgc3RhdGVsZXNzIGF1dG8tY29uZmlndXJhdGlvbiwgYW5kIHRoZSBuZXcgaGVhZGVyIHN0cnVjdHVyZS4gSSYjMzk7bSBjb25zaWRlcmluZyB0aGUgbW9yZSBzdWJ0bGUgYXNwZWN0cyB0aGF0IGNhbiB0cmlwIHVzIHVwLgoKU3BlY2lmaWNhbGx5LCBJJiMzOTttIGFuYWx5emluZyB0aGUgdHJhbnNpdGlvbiBzdHJhdGVnaWVzLiBEdWFsLXN0YWNrIGlzIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkLCBidXQgd2hhdCBhYm91dCBzY2VuYXJpb3Mgd2hlcmUgd2UmIzM5O3JlIHBoYXNpbmcgb3V0IElQdjQgZW50aXJlbHk/IEhvdyBkbyB3ZSBlbnN1cmUgc2VhbWxlc3MgY29ubmVjdGl2aXR5LCBwYXJ0aWN1bGFybHkgZm9yIGxlZ2FjeSBzeXN0ZW1zIG9yIHRoaXJkLXBhcnR5IGNvbXBvbmVudHM/IFRoZW4gdGhlcmUmIzM5O3MgdGhlIHR1bm5lbGluZyDigJMgNnRvNCwgVGVyZWRvLCBJU0FUQVAuIEVhY2ggaGFzIGl0cyBvd24gc3RyZW5ndGhzIGFuZCB3ZWFrbmVzc2VzLCBhbmQgdGhlIGNob2ljZSBkZXBlbmRzIGhlYXZpbHkgb24gdGhlIHNwZWNpZmljIG5ldHdvcmsgdG9wb2xvZ3kgYW5kIHRoZSBsZXZlbCBvZiBjb250cm9sIHdlIGhhdmUgb3ZlciB0aGUgaW5mcmFzdHJ1Y3R1cmUuIEkmIzM5O20gYWxzbyBhc3Nlc3NpbmcgaG93IHdlIGludGVncmF0ZSBJUHY2IGludG8gZXhpc3RpbmcgbW9uaXRvcmluZyBhbmQgbWFuYWdlbWVudCB0b29scy4gQ29tcGF0aWJpbGl0eSBpcyBrZXkuIFdlIGNhbiYjMzk7dCBsZXQgYSBwcm90b2NvbCBzaGlmdCBicmVhayBvdXIgdmlzaWJpbGl0eSBpbnRvIHRoZSBuZXR3b3JrLgoKSSYjMzk7bSB0aGlua2luZyBhYm91dCBzZWN1cml0eSB0b28sIHRoZSBuZXcgaGVhZGVyIGV4dGVuc2lvbnMgYXJlIGNlcnRhaW5seSBhIHBvd2VyZnVsIHRvb2wgZm9yIGVuaGFuY2VkIHNlY3VyaXR5IGJ1dCBwb3RlbnRpYWxseSBjcmVhdGUgdnVsbmVyYWJpbGl0aWVzIGlmIG5vdCBoYW5kbGVkIHdpdGggcHJlY2lzZSBjYXJlLiBUaGUgaW5oZXJlbnQgc2VjdXJpdHkgYWR2YW50YWdlcyBJUHY2IG9mZmVycywgc3VjaCBhcyBJUFNlYyBieSBkZWZhdWx0LCBhcmUgc2lnbmlmaWNhbnQsIGJ1dCB0aGV5IGRvbiYjMzk7dCBzb2x2ZSBldmVyeXRoaW5nLiBQcm9wZXIgaW1wbGVtZW50YXRpb24sIGluY2x1ZGluZyB0aGUgcmlnaHQgY3J5cHRvZ3JhcGhpYyBhbGdvcml0aG1zIGFuZCBrZXkgbWFuYWdlbWVudCwgaXMgYWJzb2x1dGVseSBjcml0aWNhbC4gV2UgY2FuJiMzOTt0IGp1c3QgYXNzdW1lIHRoYXQgJiMzNDtpdCYjMzk7cyBJUHY2LCBzbyBpdCYjMzk7cyBzZWN1cmUuJiMzNDsKCkZ1cnRoZXJtb3JlLCBhbmQgcGVyaGFwcyBtb3N0IGltcG9ydGFudGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBvcGVyYXRpb25hbCBjaGFsbGVuZ2VzLiBUcmFpbmluZyBvdXIgdGVhbXMsIHVwZGF0aW5nIGRvY3VtZW50YXRpb24sIGFuZCBhZGFwdGluZyBvdXIgbmV0d29yayBtYW5hZ2VtZW50IHByb2NlZHVyZXMgaXMgZ29pbmcgdG8gYmUgYSBsYXJnZSBlZmZvcnQuIEl0JiMzOTtzIGEgc2lnbmlmaWNhbnQgY2hhbmdlLCBtb3JlIHRoYW4ganVzdCBmbGlwcGluZyBhIHN3aXRjaC4gSXQmIzM5O3MgYSBwYXJhZGlnbSBzaGlmdCwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhZHkgZm9yIGl0LiBTbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgdmVyeSBjYXJlZnVsbHkuCgpIb3cgZG8gd2UgYWN0dWFsbHkgcGxhbiB0aGlzIHRyYW5zaXRpb24/IExldCYjMzk7cyBnZXQgZG93biB0byB0aGUgbml0dHktZ3JpdHR5IGFuZCBhc3Nlc3MgYWxsIG9mIHRoZSByZWFsLXdvcmxkIGZhY3RvcnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O25kb19zdGFydF94bWl0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2dyZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9ncmUuYz0xNDEyPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXA2Z3JlX25ldGRldl9vcHMgPSB7XG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jLTE0MTQtXHQubmRvX3VuaW5pdFx0XHQ9IGlwNmdyZV90dW5uZWxfdW5pbml0LFxubmV0L2lwdjYvaXA2X2dyZS5jOjE0MTU6XHQubmRvX3N0YXJ0X3htaXRcdFx0PSBpcDZncmVfdHVubmVsX3htaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTQxNi1cdC5uZG9fc2lvY2RldnByaXZhdGVcdD0gaXA2Z3JlX3R1bm5lbF9zaW9jZGV2cHJpdmF0ZSxcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmM9MTgyMz1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIGlwNmdyZV90YXBfbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgyNS1cdC5uZG9fdW5pbml0ID0gaXA2Z3JlX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTgyNjpcdC5uZG9fc3RhcnRfeG1pdCA9IGlwNmdyZV90dW5uZWxfeG1pdCxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xODI3LVx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPSBldGhfbWFjX2FkZHIsXG4tLVxubmV0L2lwdjYvaXA2X2dyZS5jPTE4ODQ9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZlcnNwYW5fbmV0ZGV2X29wcyA9IHtcbi0tXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4Ni1cdC5uZG9fdW5pbml0ID1cdFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTg4NzpcdC5uZG9fc3RhcnRfeG1pdCA9XHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4OC1cdC5uZG9fc2V0X21hY19hZGRyZXNzID1cdGV0aF9tYWNfYWRkcixcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTMgMTk6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY0MwoJCQkJCQkJb3V0cHV0OiAyMDMKCQkJCQkJCXRob3VnaHRzOiA0NTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEdSRSBUdW5uZWwgSW5pdGlhbGl6YXRpb24gYW5kIFRyYW5zbWlzc2lvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBtYWluIGZvY3VzIGhlcmUgaXMgdW5kZXJzdGFuZGluZyB0aGUgdHJhbnNtaXQgZnVuY3Rpb25zIGFuZCBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBmb3IgdGhlc2UgR1JFIHR1bm5lbHMuIEZyb20gYSBxdWljayBzY2FuLCBJJiMzOTttIGtleWluZyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcGdyZV94bWl0YCwgYGdyZV90YXBfeG1pdGAsIGBlcnNwYW5feG1pdGAsIGBpcDZncmVfdHVubmVsX3htaXRgLCBhbmQgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAuIFRoZXNlIGFyZSB0aGUgY29yZSB0cmFuc21pdCBwYXRocy4gSSYjMzk7bSBhbHNvIGluY2x1ZGluZyB0aGUgaW5pdCBmdW5jdGlvbnMgYXMgdGhleSYjMzk7cmUgZm91bmRhdGlvbmFsOiBgX19ncmVfdHVubmVsX2luaXRgLCBgaXBncmVfdHVubmVsX2luaXRgLCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYCwgYW5kIGBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uYC4KCk5leHQsIEkgbmVlZCB0byBlbnN1cmUgSSYjMzk7dmUgY292ZXJlZCBhbGwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBUaGUgYmlnIG9uZXMgYXJlIGBORVRfSVBHUkVgIGFuZCBgSVBWNl9HUkVgLCBhbmQgYElQVjZgIGZvciB0aGUgSVB2NiB2YXJpYW50LiBgTkVUX0lQR1JFX0JST0FEQ0FTVGAgbWlnaHQgYmUgcmVsYXRlZCwgYnV0IGl0JiMzOTtzIG5vdCBzdHJpY3RseSBlc3NlbnRpYWwgdG8gdGhpcyBjb3JlIGZ1bmN0aW9uYWxpdHkuCgpOb3csIGxldCYjMzk7cyBhc3NlbWJsZSBhIGZpbmFsIGxpc3Qgb2YgdGhlIGZvY3VzIHN5bWJvbHMgYmFzZWQgb24gd2hhdCBJJiMzOTt2ZSBpZGVudGlmaWVkIHNvIGZhci4gVGhhdCYjMzk7czoKYF9fZ3JlX3R1bm5lbF9pbml0YApgaXBncmVfdHVubmVsX2luaXRgCmBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgCmBpcDZncmVfdHVubmVsX2luaXRfY29tbW9uYApgaXBncmVfeG1pdGAKYGdyZV90YXBfeG1pdGAKYGVyc3Bhbl94bWl0YApgaXA2Z3JlX3R1bm5lbF94bWl0YApgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YAoKV2FpdCwgb24gY2xvc2VyIGluc3BlY3Rpb24sIHRoZSBjcml0aWNhbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgbW9kaWZpZWQgaW4gdGhpcyBwYXRjaCBhcmUgYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFNvIEkgc2hvdWxkIGRlZmluaXRlbHkga2VlcCB0aG9zZSB0d28uCgpFc3NlbnRpYWxseSwgdGhpcyBwYXRjaCYjMzk7cyBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgYGxsdHhgIGZsYWcsIHdoaWNoIGVuYWJsZXMgbG9ja2xlc3MgdHJhbnNtaXQgZm9yIEdSRSBkZXZpY2VzLCBpcyBjb25zaXN0ZW50bHkgc2V0IGR1cmluZyBpbml0aWFsaXphdGlvbi4gVGhlIGNvZGUgaXMgbW92ZWQgdG8gaGFwcGVuIGJlZm9yZSBhbnkgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgd2l0aGluIGBfX2dyZV90dW5uZWxfaW5pdGAgYW5kIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFzIGl0IG1vZGlmaWVzIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBHUkUgdHVubmVscyBhbmQgdGhpcyBtb2RpZmljYXRpb24gYWltcyB0byBtYWtlIGxvY2tsZXNzIHRyYW5zbWl0IGJlIHVzZWQgY29uc2lzdGVudGx5LgoKU28sIHRvIHN1bW1hcml6ZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIGFyZSBgTkVUX0lQR1JFYCBhbmQgYElQVjZfR1JFYCwgYW5kIHRoZSBpbXBvcnRhbnQgZnVuY3Rpb25zIGFyZSBgX19ncmVfdHVubmVsX2luaXRgLCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYCwgYGlwZ3JlX3htaXRgLCBgZ3JlX3RhcF94bWl0YCwgYGVyc3Bhbl94bWl0YCwgYGlwNmdyZV90dW5uZWxfeG1pdGAsIGFuZCBgaXA2ZXJzcGFuX3R1bm5lbF94bWl0YC4KCkxvb2tzIGdvb2QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzEzIDE5OjUzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2dyZV90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OywKICAgICYjMzQ7aXA2Z3JlX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmVyc3Bhbl90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfSVBHUkUmIzM0OywKICAgICYjMzQ7SVBWNl9HUkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtfX2dyZV90dW5uZWxfaW5pdCYjMzQ7LAogICAgJiMzNDtpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMmIzM0OywKICAgICYjMzQ7aXBncmVfeG1pdCYjMzQ7LAogICAgJiMzNDtncmVfdGFwX3htaXQmIzM0OywKICAgICYjMzQ7ZXJzcGFuX3htaXQmIzM0OywKICAgICYjMzQ7aXA2Z3JlX3R1bm5lbF94bWl0JiMzNDssCiAgICAmIzM0O2lwNmVyc3Bhbl90dW5uZWxfeG1pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb3ZlcyB0aGUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6MzMuNTA2NjU2NjI3WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDczNzUyNzAxODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0lQR1JFXCIsXG4gICAgXCJJUFY2X0dSRVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIl9fZ3JlX3R1bm5lbF9pbml0XCIsXG4gICAgXCJpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNcIixcbiAgICBcImlwZ3JlX3htaXRcIixcbiAgICBcImdyZV90YXBfeG1pdFwiLFxuICAgIFwiZXJzcGFuX3htaXRcIixcbiAgICBcImlwNmdyZV90dW5uZWxfeG1pdFwiLFxuICAgIFwiaXA2ZXJzcGFuX3R1bm5lbF94bWl0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW92ZXMgdGhlIGBkZXYtXFx1MDAzZWxsdHggPSB0cnVlYCBhc3NpZ25tZW50IGJlZm9yZSBwb3RlbnRpYWwgZWFybHkgcmV0dXJucyBpbiBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGBsbHR4YCBmbGFnICh3aGljaCBpbmRpY2F0ZXMgbG9ja2xlc3MgdHJhbnNtaXQpIGlzIGFsd2F5cyBzZXQgZm9yIEdSRSBkZXZpY2VzLCBldmVuIGlmIHRoZXkgcmV0dXJuIGVhcmx5IGR1ZSB0byB1bnN1cHBvcnRlZCBvZmZsb2FkIGZlYXR1cmVzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgYWZmZWN0aW5nIHRoZSBsb2NraW5nIGJlaGF2aW9yIGR1cmluZyBwYWNrZXQgdHJhbnNtaXNzaW9uIG92ZXIgR1JFIHR1bm5lbHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjUyOjMzLjUwNjY2MzE5N1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0MTEwNzI3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMzA1ZjYwNDlhMGY0ODI1NTk5Y2JlNmRmOWFiZjNjOTMyOTRkMzExNlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAxMyAxOTo1MjozMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXFxuaW5kZXggM2VmZGZiNGZmYTIxMTIuLjBiYTFlOTRlOTAxMmM2IDEwMDY0NFxcbi0tLSBhL25ldC9pcHY0L2lwX2dyZS5jXFxuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcXG5AQCAtMTAxOCw2ICsxMDE4LDggQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRV9GRUFUVVJFUztcXG4gXFxuK1xcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuK1xcbiBcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4gXFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4gXFx0ICovXFxuQEAgLTEwMjksOCArMTAzMSw2IEBAIHN0YXRpYyB2b2lkIF9fZ3JlX3R1bm5lbF9pbml0KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuIFxcbiBcXHRkZXYtXFx1MDAzZWZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbiBcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbi1cXG4tXFx0ZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZTtcXG4gfVxcbiBcXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9pcDZfZ3JlLmMgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcXG5pbmRleCA3YzA5YTI2OWIzNTIxNi4uYjg0MzExNmU5YjcwM2MgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jXFxuKysrIGIvbmV0L2lwdjYvaXA2X2dyZS5jXFxuQEAgLTE0NTUsNiArMTQ1NSw4IEBAIHN0YXRpYyB2b2lkIGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxcbiBcXHRkZXYtXFx1MDAzZWZlYXR1cmVzXFx0XFx0fD0gR1JFNl9GRUFUVVJFUztcXG4gXFx0ZGV2LVxcdTAwM2Vod19mZWF0dXJlc1xcdHw9IEdSRTZfRkVBVFVSRVM7XFxuIFxcbitcXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbitcXG4gXFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXFxuIFxcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXFxuIFxcdCAqL1xcbkBAIC0xNDY2LDggKzE0NjgsNiBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4gXFxuIFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuIFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuLVxcbi1cXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGlwNmdyZV90dW5uZWxfaW5pdF9jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6MzQuMDgxNjk0NTQ0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjgwMDIxODM4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfSVBHUkVcIixcbiAgICBcIklQVjZfR1JFXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiX19ncmVfdHVubmVsX2luaXRcIixcbiAgICBcImlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc1wiLFxuICAgIFwiaXBncmVfeG1pdFwiLFxuICAgIFwiZ3JlX3RhcF94bWl0XCIsXG4gICAgXCJlcnNwYW5feG1pdFwiLFxuICAgIFwiaXA2Z3JlX3R1bm5lbF94bWl0XCIsXG4gICAgXCJpcDZlcnNwYW5fdHVubmVsX3htaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb3ZlcyB0aGUgYGRldi1cXHUwMDNlbGx0eCA9IHRydWVgIGFzc2lnbm1lbnQgYmVmb3JlIHBvdGVudGlhbCBlYXJseSByZXR1cm5zIGluIGBfX2dyZV90dW5uZWxfaW5pdGAgYW5kIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGUgYGxsdHhgIGZsYWcgKHdoaWNoIGluZGljYXRlcyBsb2NrbGVzcyB0cmFuc21pdCkgaXMgYWx3YXlzIHNldCBmb3IgR1JFIGRldmljZXMsIGV2ZW4gaWYgdGhleSByZXR1cm4gZWFybHkgZHVlIHRvIHVuc3VwcG9ydGVkIG9mZmxvYWQgZmVhdHVyZXMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBhZmZlY3RpbmcgdGhlIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBHUkUgdHVubmVscy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzMDVmNjA0OWEwZjQ4MjU1OTljYmU2ZGY5YWJmM2M5MzI5NGQzMTE2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMTMgMTk6NTI6MzEgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9pcF9ncmUuYyBiL25ldC9pcHY0L2lwX2dyZS5jXG5pbmRleCAzZWZkZmI0ZmZhMjExMi4uMGJhMWU5NGU5MDEyYzYgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2NC9pcF9ncmUuY1xuKysrIGIvbmV0L2lwdjQvaXBfZ3JlLmNcbkBAIC0xMDE4LDYgKzEwMTgsOCBAQCBzdGF0aWMgdm9pZCBfX2dyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIFx0ZGV2LVx1MDAzZWZlYXR1cmVzXHRcdHw9IEdSRV9GRUFUVVJFUztcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlc1x0fD0gR1JFX0ZFQVRVUkVTO1xuIFxuK1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuK1xuIFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXG4gXHQgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLlxuIFx0ICovXG5AQCAtMTAyOSw4ICsxMDMxLDYgQEAgc3RhdGljIHZvaWQgX19ncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcbiBcdGRldi1cdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbiBcdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbi1cbi1cdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcbiB9XG4gXG4gc3RhdGljIGludCBpcGdyZV90dW5uZWxfaW5pdChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2lwNl9ncmUuYyBiL25ldC9pcHY2L2lwNl9ncmUuY1xuaW5kZXggN2MwOWEyNjliMzUyMTYuLmI4NDMxMTZlOWI3MDNjIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvaXA2X2dyZS5jXG4rKysgYi9uZXQvaXB2Ni9pcDZfZ3JlLmNcbkBAIC0xNDU1LDYgKzE0NTUsOCBAQCBzdGF0aWMgdm9pZCBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcbiBcdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFx0ZGV2LVx1MDAzZWh3X2ZlYXR1cmVzXHR8PSBHUkU2X0ZFQVRVUkVTO1xuIFxuK1x0ZGV2LVx1MDAzZWxsdHggPSB0cnVlO1xuK1xuIFx0LyogVENQIG9mZmxvYWQgd2l0aCBHUkUgU0VRIGlzIG5vdCBzdXBwb3J0ZWQsIG5vciBjYW4gd2Ugc3VwcG9ydCAyXG4gXHQgKiBsZXZlbHMgb2Ygb3V0ZXIgaGVhZGVycyByZXF1aXJpbmcgYW4gdXBkYXRlLlxuIFx0ICovXG5AQCAtMTQ2Niw4ICsxNDY4LDYgQEAgc3RhdGljIHZvaWQgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXG4gXG4gXHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4gXHRkZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG4tXG4tXHRkZXYtXHUwMDNlbGx0eCA9IHRydWU7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbihzdHJ1Y3QgbmV0X2RldmljZSAqZGV2KVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6MzQuMDgxNjk2MzM0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTExMTgwMTkwMjIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIFJlb3JkZXJpbmcgQnVnIGluIEdSRSBUdW5uZWwgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQganVzdCBzaHVmZmxlcyB0aGUgYXNzaWdubWVudCBvZiBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2AgYSBmZXcgbGluZXMgdXAgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBmb3IgYm90aCBJUHY0IGFuZCBJUHY2IEdSRSB0dW5uZWxzLiAgRnVuY3Rpb25hbGx5LCBpdCdzIGp1c3QgYSByZW9yZGVyaW5nLiBNeSBpbml0aWFsIGluc3RpbmN0IGlzIHRvIHRyZWF0IHRoaXMgYXMgYSBwb3RlbnRpYWxseSBtaW5vciwgcGVyaGFwcyBjb3NtZXRpYyBjaGFuZ2UuICBCdXQsIGFzIGEgc2Vhc29uZWQgZGV2ZWxvcGVyLCBteSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgYWx3YXlzOiBkb2VzIHRoaXMgKmFjdHVhbGx5KiBjaGFuZ2UgYW55dGhpbmcgZnVuY3Rpb25hbGx5PyBFdmVuIHRoZSBzbWFsbGVzdCBjaGFuZ2UgY2FuIGhhdmUgdW5pbnRlbmRlZCBjb25zZXF1ZW5jZXMsIGVzcGVjaWFsbHkgaW4gdGhlIGtlcm5lbC5cblxuU28sIEkgc3RhcnQgYnkgbG9va2luZyBhdCB0aGUgc3Vycm91bmRpbmcgY29kZSBzbmlwcGV0OlxuXG5gYGBjXG5cdGRldi1cdTAwM2VmZWF0dXJlc1x0XHR8PSBHUkVfRkVBVFVSRVM7XG5cdGRldi1cdTAwM2Vod19mZWF0dXJlc1x0fD0gR1JFX0ZFQVRVUkVTO1xuXG5cdGRldi1cdTAwM2VsbHR4ID0gdHJ1ZTtcblxuXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcblx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cblx0ICovXG5cdGlmICghKHR1bm5lbC1cdTAwM2VwYXJtcy5vX2ZsYWdzIFx1MDAyNiBUVU5ORUxfU0VRKSkge1xuXHRcdC8qIGh3X2VuY19mZWF0dXJlcyBpcyBzZXQgaW4gZ3JlX3R1bm5lbF9pbml0KCkgKi9cblx0XHRkZXYtXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG5cdH1cblxuXHRkZXYtXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XG5cdGRldi1cdTAwM2Vod19mZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcbmBgYFxuXG5QcmV2aW91c2x5LCBgZGV2LVx1MDAzZWxsdHggPSB0cnVlO2Agd2FzIGF0IHRoZSAqZW5kKiBvZiB0aGlzIGJsb2NrLiBOb3csIGl0J3MgbW92ZWQgKmJlZm9yZSogdGhlIGNvbmRpdGlvbmFsIGNoZWNrIHJlbGF0ZWQgdG8gYFRVTk5FTF9TRVFgLiAgTXkgZmlyc3QgdGhvdWdodCBpcywgZG9lcyBhbnl0aGluZyAqaW4gYmV0d2VlbiogcmVhZCBgZGV2LVx1MDAzZWxsdHhgPyBJZiBzb21ldGhpbmcgcmVsaWVzIG9uIHRoZSB2YWx1ZSBvZiBgZGV2LVx1MDAzZWxsdHhgIGJlZm9yZSBpdCdzIHNldCwgdGhpcyByZW9yZGVyaW5nIGNvdWxkIGJlIGRpc2FzdHJvdXMuXG5cbkxvb2tpbmcgYXQgdGhlIGNvZGUsIGl0IHJlYWRzIGB0dW5uZWwtXHUwMDNlcGFybXMub19mbGFnc2AgYW5kIGNvbmRpdGlvbmFsbHkgc2V0cyBgZGV2LVx1MDAzZWh3X2ZlYXR1cmVzYC4gIFRoZXJlJ3Mgbm8gZGlyZWN0IHJlYWQgb2YgYGRldi1cdTAwM2VsbHR4YCBpbiB0aGlzIHNlY3Rpb24uICBTbywgYXQgYSBnbGFuY2UsIEkgZG9uJ3Qgc2VlIGFuIG9idmlvdXMgcHJvYmxlbS4gIE5vIGludGVybWVkaWF0ZSBmdW5jdGlvbiBjYWxscywgbWFjcm9zLCBvciBiaXRmaWVsZCBtYW5pcHVsYXRpb25zIHRoYXQgd291bGQgYmUgYWZmZWN0ZWQuXG5cbk5vdywgbXkgbWluZCBzdGFydHMgdG8gd2FuZGVyOiB3aHkgZGlkIHRoZSBhdXRob3IgbWFrZSB0aGlzIGNoYW5nZT8gV2FzIGl0IGZvciBjbGFyaXR5PyBQZXJmb3JtYW5jZT8gRGlkIGl0IGZpeCBhIHN1YnRsZSByYWNlIGNvbmRpdGlvbiBvciBhIHBvdGVudGlhbCBwYXRoIHdpdGggYW4gZWFybHkgcmV0dXJuLCB3aGVyZSBgZGV2LVx1MDAzZWxsdHhgIG1pZ2h0IG5vdCBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQ/ICBJJ2QgbG92ZSB0byBzZWUgdGhlIGNvbW1pdCBtZXNzYWdlIHJpZ2h0IG5vdyEgV2l0aG91dCB0aGF0LCBJJ20gcmVkdWNlZCB0byBzcGVjdWxhdGluZy4gSSBzaG91bGQgY2hlY2sgaWYgdGhlcmUncyBhbnkgbWFjcm8gdGhhdCByZWFkcyBgZGV2LVx1MDAzZWxsdHhgIG9yIGlmIHRoZSBhdXRob3IgbWVudGlvbmVkIHRoaXMgYW55d2hlcmUgZWxzZS5cblxuTGV0J3Mgc2VlLiBJcyBgZGV2LVx1MDAzZWxsdHhgIGEgYml0ZmllbGQ/ICBBaCwgaXQncyBhIGJvb2xlYW4gaW4gYHN0cnVjdCBuZXRfZGV2aWNlYC4gIEkgcmVjYWxsIGBORVRJRl9GX0xMVFhgLCBhIGRlcHJlY2F0ZWQgZmxhZy4gIElzIHRoaXMgcmVsYXRlZD8gIEFoLCBgZGV2LVx1MDAzZWxsdHhgIGlzIHRoZSByZXBsYWNlbWVudCBmb3IgaXQuXG5cblNvLCBJJ20gc3R1Y2sgaGVyZS4gIEl0IHNlZW1zIHRoZSBjb3JlIGxvZ2ljICpzaG91bGRuJ3QqIGJlIGFmZmVjdGVkLCBidXQsIEkgYW0gbGVmdCB3b25kZXJpbmcgaWYgdGhpcyBpcyBhIHJlYWwgZnVuY3Rpb25hbCBjaGFuZ2UuIFRoZXJlJ3MgcHJvYmFibHkgYSBnb29kIHJlYXNvbiBmb3IgdGhpcyBjaGFuZ2UsIGFuZCBJIG5lZWQgdG8gZmluZCB0aGUgY29udGV4dCB0byB1bmRlcnN0YW5kIGl0IGJldHRlci4gIEkgc2hvdWxkIHByb2JhYmx5IGxvb2sgYXQgdGhlIGNvbnRleHQgaW4gYG5ldC9pcHY0L2lwX2dyZS5jYCBhcm91bmQgbGluZSAxMDE4IHRvIHNlZSB3aGF0J3MgcmVhbGx5IGdvaW5nIG9uIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTMsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3ODUsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1Mjo0NS4xOTk3MTg0MjZaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTEyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvaXBfZ3JlLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMTAxMCxcbiAgXCJMaW5lQ291bnRcIjogNDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMTAxMDpcXHRcXG4xMDExOlxcdFxcdHR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuMTAxMjpcXHRcXHR0dW5uZWwtXFx1MDAzZXR1bl9obGVuID0gZ3JlX2NhbGNfaGxlbih0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpO1xcbjEwMTM6XFx0XFx0dHVubmVsLVxcdTAwM2VwYXJtcy5pcGgucHJvdG9jb2wgPSBJUFBST1RPX0dSRTtcXG4xMDE0OlxcdFxcbjEwMTU6XFx0XFx0dHVubmVsLVxcdTAwM2VobGVuID0gdHVubmVsLVxcdTAwM2V0dW5faGxlbiArIHR1bm5lbC1cXHUwMDNlZW5jYXBfaGxlbjtcXG4xMDE2OlxcdFxcdGRldi1cXHUwMDNlbmVlZGVkX2hlYWRyb29tID0gdHVubmVsLVxcdTAwM2VobGVuICsgc2l6ZW9mKHR1bm5lbC1cXHUwMDNlcGFybXMuaXBoKTtcXG4xMDE3OlxcdFxcbjEwMTg6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlc1xcdFxcdHw9IEdSRV9GRUFUVVJFUztcXG4xMDE5OlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXNcXHR8PSBHUkVfRkVBVFVSRVM7XFxuMTAyMDpcXHRcXG4xMDIxOlxcdFxcdGRldi1cXHUwMDNlbGx0eCA9IHRydWU7XFxuMTAyMjpcXHRcXG4xMDIzOlxcdFxcdC8qIFRDUCBvZmZsb2FkIHdpdGggR1JFIFNFUSBpcyBub3Qgc3VwcG9ydGVkLCBub3IgY2FuIHdlIHN1cHBvcnQgMlxcbjEwMjQ6XFx0XFx0ICogbGV2ZWxzIG9mIG91dGVyIGhlYWRlcnMgcmVxdWlyaW5nIGFuIHVwZGF0ZS5cXG4xMDI1OlxcdFxcdCAqL1xcbjEwMjY6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9TRVFfQklULCB0dW5uZWwtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxcbjEwMjc6XFx0XFx0XFx0cmV0dXJuO1xcbjEwMjg6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgdHVubmVsLVxcdTAwM2VwYXJtcy5vX2ZsYWdzKSBcXHUwMDI2XFx1MDAyNlxcbjEwMjk6XFx0XFx0ICAgIHR1bm5lbC1cXHUwMDNlZW5jYXAudHlwZSAhPSBUVU5ORUxfRU5DQVBfTk9ORSlcXG4xMDMwOlxcdFxcdFxcdHJldHVybjtcXG4xMDMxOlxcdFxcbjEwMzI6XFx0XFx0ZGV2LVxcdTAwM2VmZWF0dXJlcyB8PSBORVRJRl9GX0dTT19TT0ZUV0FSRTtcXG4xMDMzOlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTAzNDpcXHR9XFxuMTAzNTpcXHRcXG4xMDM2OlxcdHN0YXRpYyBpbnQgaXBncmVfdHVubmVsX2luaXQoc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4xMDM3OlxcdHtcXG4xMDM4OlxcdFxcdHN0cnVjdCBpcF90dW5uZWwgKnR1bm5lbCA9IG5ldGRldl9wcml2KGRldik7XFxuMTAzOTpcXHRcXHRzdHJ1Y3QgaXBoZHIgKmlwaCA9IFxcdTAwMjZ0dW5uZWwtXFx1MDAzZXBhcm1zLmlwaDtcXG4xMDQwOlxcdFxcbjEwNDE6XFx0XFx0X19ncmVfdHVubmVsX2luaXQoZGV2KTtcXG4xMDQyOlxcdFxcbjEwNDM6XFx0XFx0X19kZXZfYWRkcl9zZXQoZGV2LCBcXHUwMDI2aXBoLVxcdTAwM2VzYWRkciwgNCk7XFxuMTA0NDpcXHRcXHRtZW1jcHkoZGV2LVxcdTAwM2Vicm9hZGNhc3QsIFxcdTAwMjZpcGgtXFx1MDAzZWRhZGRyLCA0KTtcXG4xMDQ1OlxcdFxcbjEwNDY6XFx0XFx0ZGV2LVxcdTAwM2VmbGFnc1xcdFxcdD0gSUZGX05PQVJQO1xcbjEwNDc6XFx0XFx0bmV0aWZfa2VlcF9kc3QoZGV2KTtcXG4xMDQ4OlxcdFxcdGRldi1cXHUwMDNlYWRkcl9sZW5cXHRcXHQ9IDQ7XFxuMTA0OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6NDUuMTk5ODcxODY2WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ3MzA0Mjc0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTdWJ0bGUgR1JFIFR1bm5lbCBEcml2ZXIgQ2hhbmdlKipcblxuT2theSwgaGVyZSB3ZSBnby4gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCwgYWhhISBUaGVyZSBhcmUgaW5kZWVkIGVhcmx5IHJldHVybiBwb2ludHMgd2l0aGluIHRoaXMgZnVuY3Rpb24uIEkgZGlkbid0IGltbWVkaWF0ZWx5IHNlZSB0aGVtLiBTcGVjaWZpY2FsbHksIHRoZSBiaXQgdGVzdHMgZm9yIGBJUF9UVU5ORUxfU0VRX0JJVGAgYW5kIGBJUF9UVU5ORUxfQ1NVTV9CSVRgIGFyZSBzaG9ydC1jaXJjdWl0aW5nIHRoZSByZXN0IG9mIHRoZSBmdW5jdGlvbi4gVGhpcyBpcyBzaWduaWZpY2FudC5cblxuSWYgZWl0aGVyIG9mIHRob3NlIGNvbmRpdGlvbnMgYXJlIG1ldCwgdGhlIGZ1bmN0aW9uIGV4aXRzIGVhcmx5LiBJJ20gcmVhbGl6aW5nIHRoYXQgdGhlIGxpbmUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgd2FzIHByZXZpb3VzbHkgc2tpcHBlZCB3aGVuIHRob3NlIGVhcmx5IHJldHVybnMgaGFwcGVuZWQuIFNvLCBpZiBJIG1vdmUgYGRldi1cdTAwM2VsbHR4ID0gdHJ1ZWAgKnVwKiBhYm92ZSB0aG9zZSByZXR1cm4gc3RhdGVtZW50cywgSSdtIGVmZmVjdGl2ZWx5IGNoYW5naW5nIHRoZSBiZWhhdmlvciBvZiB0aGUgZHJpdmVyLiBOb3csIGBkZXYtXHUwMDNlbGx0eGAgd2lsbCBiZSBzZXQgdG8gYHRydWVgIGV2ZW4gd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBlYXJseS5cblxuVGhpcyBpcyBhICoqZnVuY3Rpb25hbCBjaGFuZ2UqKi4gSXQncyBub3QganVzdCBjb3NtZXRpYy4gVGhlIHNldHRpbmcgb2YgYGRldi1cdTAwM2VsbHR4YCBjb250cm9scyB3aGV0aGVyIG9yIG5vdCB0aGUgZGV2aWNlIHdpbGwgdXNlIHRoZSBxZGlzYyBsb2NrIChgdHhxLVx1MDAzZV94bWl0X2xvY2tgKSBkdXJpbmcgdHJhbnNtaXQuIElmIGBkZXYtXHUwMDNlbGx0eGAgaXMgKm5vdCogc2V0LCB0aGUgbG9jayAqd2lsbCogYmUgdXNlZC4gSWYgaXQgKmlzKiBzZXQsIHRoZSBkZXZpY2Ugd2lsbCBiZSBsb2NrbGVzcy4gVGhpcyBkaXJlY3RseSBpbXBhY3RzIGNvbmN1cnJlbmN5IGFuZCBsb2NraW5nIGJlaGF2aW9yIHdpdGhpbiB0aGUgR1JFIHR1bm5lbCBkcml2ZXIuIFRoaXMgd2FycmFudHMgY2FyZWZ1bCByZXZpZXcuXG5cbk9rYXksIEkgbmVlZCB0byB2ZXJpZnkgaG93IHRoaXMgY2hhbmdlIGludGVyYWN0cyB3aXRoIHJlbGF0ZWQgaW5pdGlhbGl6YXRpb25zLCBwYXJ0aWN1bGFybHkgd2l0aGluIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLCB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIHVuZm9yZXNlZW4gY29uc2VxdWVuY2VzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29tcGxldGUgcGljdHVyZSBvZiBob3cgdGhlIGxvY2tsZXNzL2xvY2tlZCBiZWhhdmlvciBpcyBkZXRlcm1pbmVkIGluIHRoZSBvdmVyYWxsIHR1bm5lbCBpbml0aWFsaXphdGlvbiBwcm9jZXNzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NDYyLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6NTAuNjcyOTE3MTU4WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE3MjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9pcHY2L2lwNl9ncmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNDUwLFxuICBcIkxpbmVDb3VudFwiOiAzMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIxNDUwOlxcdFxcbjE0NTE6XFx0c3RhdGljIHZvaWQgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYpXFxuMTQ1MjpcXHR7XFxuMTQ1MzpcXHRcXHRzdHJ1Y3QgaXA2X3RubCAqbnQgPSBuZXRkZXZfcHJpdihkZXYpO1xcbjE0NTQ6XFx0XFxuMTQ1NTpcXHRcXHRkZXYtXFx1MDAzZWZlYXR1cmVzXFx0XFx0fD0gR1JFNl9GRUFUVVJFUztcXG4xNDU2OlxcdFxcdGRldi1cXHUwMDNlaHdfZmVhdHVyZXNcXHR8PSBHUkU2X0ZFQVRVUkVTO1xcbjE0NTc6XFx0XFxuMTQ1ODpcXHRcXHRkZXYtXFx1MDAzZWxsdHggPSB0cnVlO1xcbjE0NTk6XFx0XFxuMTQ2MDpcXHRcXHQvKiBUQ1Agb2ZmbG9hZCB3aXRoIEdSRSBTRVEgaXMgbm90IHN1cHBvcnRlZCwgbm9yIGNhbiB3ZSBzdXBwb3J0IDJcXG4xNDYxOlxcdFxcdCAqIGxldmVscyBvZiBvdXRlciBoZWFkZXJzIHJlcXVpcmluZyBhbiB1cGRhdGUuXFxuMTQ2MjpcXHRcXHQgKi9cXG4xNDYzOlxcdFxcdGlmICh0ZXN0X2JpdChJUF9UVU5ORUxfU0VRX0JJVCwgbnQtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpKVxcbjE0NjQ6XFx0XFx0XFx0cmV0dXJuO1xcbjE0NjU6XFx0XFx0aWYgKHRlc3RfYml0KElQX1RVTk5FTF9DU1VNX0JJVCwgbnQtXFx1MDAzZXBhcm1zLm9fZmxhZ3MpIFxcdTAwMjZcXHUwMDI2XFxuMTQ2NjpcXHRcXHQgICAgbnQtXFx1MDAzZWVuY2FwLnR5cGUgIT0gVFVOTkVMX0VOQ0FQX05PTkUpXFxuMTQ2NzpcXHRcXHRcXHRyZXR1cm47XFxuMTQ2ODpcXHRcXG4xNDY5OlxcdFxcdGRldi1cXHUwMDNlZmVhdHVyZXMgfD0gTkVUSUZfRl9HU09fU09GVFdBUkU7XFxuMTQ3MDpcXHRcXHRkZXYtXFx1MDAzZWh3X2ZlYXR1cmVzIHw9IE5FVElGX0ZfR1NPX1NPRlRXQVJFO1xcbjE0NzE6XFx0fVxcbjE0NzI6XFx0XFxuMTQ3MzpcXHRzdGF0aWMgaW50IGlwNmdyZV90dW5uZWxfaW5pdF9jb21tb24oc3RydWN0IG5ldF9kZXZpY2UgKmRldilcXG4xNDc0OlxcdHtcXG4xNDc1OlxcdFxcdHN0cnVjdCBpcDZfdG5sICp0dW5uZWw7XFxuMTQ3NjpcXHRcXHRpbnQgcmV0O1xcbjE0Nzc6XFx0XFx0aW50IHRfaGxlbjtcXG4xNDc4OlxcdFxcbjE0Nzk6XFx0XFx0dHVubmVsID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTI6NTAuNjczMTM3MjE4WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjE1NzE3ODYxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBGdW5jdGlvbmFsIENoYW5nZSBpbiBHUkUgVHVubmVsIExvY2tpbmcqKlxuXG5Pa2F5LCBJIHNlZSBpdC4gSXQncyB0aGUgc2FtZSBzaXR1YXRpb24gSSB3YXMgYW50aWNpcGF0aW5nLCBlYXJseSByZXR1cm5zLiBTbywgdGhpcyBib2lscyBkb3duIHRvIGEgKmZ1bmN0aW9uYWwgY2hhbmdlKi4gVGhlIHF1ZXN0aW9uIGlzLCBkb2VzIGl0IHdhcnJhbnQgZnV6emluZz8gQWJzb2x1dGVseSwgeWVzLCBiZWNhdXNlIHRoaXMgZGlyZWN0bHkgaW1wYWN0cyBsb2NraW5nIHdpdGhpbiB0aGUgdHJhbnNtaXQgcGF0aCBvZiBHUkUgdHVubmVscy5cblxuTGV0IG1lIGJyZWFrIGl0IGRvd246IHdoZW4gYGRldi1cdTAwM2VsbHR4YCBpcyBzZXQgdG8gdHJ1ZSwgaXQgaW5kaWNhdGVzIHRoYXQgdGhlIGRyaXZlciBlaXRoZXIgaGFuZGxlcyBpdHMgb3duIGxvY2tpbmcgb3IgZG9lc24ndCByZXF1aXJlIGl0LiBQcmV2aW91c2x5LCBpZiB0aGF0IGNvbmRpdGlvbiB3YXNuJ3QgbWV0IGR1ZSB0byB0aGF0IGVhcmx5IHJldHVybiwgdGhlIGdlbmVyaWMgbmV0d29ya2luZyBjb2RlIHdvdWxkIHN0ZXAgaW4gYW5kIHRha2UgYSBsb2NrLiBOb3csIGl0IHdvbid0LlxuXG5UaGlzIGlzIHdoZXJlIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIFRoaXMgY2hhbmdlIGNvdWxkIHJldmVhbCBleGlzdGluZyByYWNlIGNvbmRpdGlvbnMgaW4gdGhlIEdSRSB0cmFuc21pdCBwYXRoIGlmIHRoZSBsb2NrbGVzcyBhcHByb2FjaCB3YXNuJ3QgYWN0dWFsbHkgc2FmZS4gT3IsIGl0IG1pZ2h0IGZpeCBhIGxhdGVudCBidWcgd2hlcmUgdGhlIHN5c3RlbSB3YXMgKnN1cHBvc2VkKiB0byBiZSBsb2NrbGVzcyBidXQgd2Fzbid0LCBwb3RlbnRpYWxseSBsZWFkaW5nIHRvIGRlYWRsb2NrcyBvciBoaW5kZXJpbmcgcGVyZm9ybWFuY2UuIEhhbmcgb24gYSBtaW51dGUsIEdSRSB0dW5uZWxzIGFyZSBpbmhlcmVudGx5IGRlc2lnbmVkIHRvIGJlIGxvY2tsZXNzIChgbGx0eCA9IHRydWVgKS4gSWYgYGxsdHhgIHdhcyBmYWxzZSBiZWZvcmUgdGhlIHBhdGNoLCBwZXJoYXBzIHRha2luZyBhIGxvY2sgKndhcyogdGhlIHJvb3Qgb2YgdGhlIHByb2JsZW0uIFRoYXQncyBnb29kLCBpZiB0aGF0J3MgdGhlIGNhc2UuIEl0J3MgcG9zc2libGUgdGhpbmdzIHdlcmUgdGVjaG5pY2FsbHkgZmluZSwgYnV0IHNsb3cgZHVlIHRvIHVubmVjZXNzYXJ5IGxvY2tpbmcuIEVpdGhlciB3YXksIHRoaXMgaXMgYSBkaXN0aW5jdCBmdW5jdGlvbmFsIGFsdGVyYXRpb24gd2l0aGluIHRoZSBjb3JlIG5ldHdvcmtpbmcgYW5kIHR1bm5lbGluZyBjb2RlLlxuXG5Ob3csIGZvciB0aGUgY29uZmlndXJhdGlvbnM6IHdlJ2xsIG5lZWQgYENPTkZJR19ORVRfSVBHUkVgIGZvciBJUHY0IEdSRSBhbmQgYENPTkZJR19JUFY2X0dSRWAgZm9yIElQdjYgR1JFLiBUaW1lIHRvIGRlbHZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNvbmZpcm0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU1MzcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1Mjo1Ni44MzAzMTgyNDlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQzMjAyNjY3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRfSVBHUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9LY29uZmlnPTE2Mj1jb25maWcgTkVUX0lQSVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTc5LVxcbm5ldC9pcHY0L0tjb25maWc6MTgwOmNvbmZpZyBORVRfSVBHUkVfREVNVVhcXG5uZXQvaXB2NC9LY29uZmlnLTE4MS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSBkZW11bHRpcGxleGVyXFxcIlxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0xODY9Y29uZmlnIE5FVF9JUF9UVU5ORUxcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMTkxLVxcbm5ldC9pcHY0L0tjb25maWc6MTkyOmNvbmZpZyBORVRfSVBHUkVcXG5uZXQvaXB2NC9LY29uZmlnLTE5My1cXHR0cmlzdGF0ZSBcXFwiSVA6IEdSRSB0dW5uZWxzIG92ZXIgSVBcXFwiXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTIwNi1cXG5uZXQvaXB2NC9LY29uZmlnOjIwNzpjb25maWcgTkVUX0lQR1JFX0JST0FEQ0FTVFxcbm5ldC9pcHY0L0tjb25maWctMjA4LVxcdGJvb2wgXFxcIklQOiBicm9hZGNhc3QgR1JFIG92ZXIgSVBcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjUyOjU3LjI3MzUzMDI1NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTcxNDM4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqSVB2NiBDb25zaWRlcmF0aW9ucyBcdTAwMjYgSW1wbGljYXRpb25zKipcblxuQWxyaWdodCwgbGV0J3MgZHJpbGwgZG93biBpbnRvIElQdjYuIEkndmUgYmVlbiBtdWxsaW5nIG92ZXIgdGhlIGltcGxpY2F0aW9ucyBhbmQgY2hhbGxlbmdlcy4gVGhlIHdob2xlIHRyYW5zaXRpb24gaXMgYSBjb21wbGV4IGRhbmNlLCBpc24ndCBpdD8gV2UncmUgbm90IGp1c3QgZmxpcHBpbmcgYSBzd2l0Y2g7IHdlJ3JlIGVzc2VudGlhbGx5IHJlLWFyY2hpdGVjdGluZyBzaWduaWZpY2FudCBwb3J0aW9ucyBvZiB0aGUgbmV0d29yayBpbmZyYXN0cnVjdHVyZS5cblxuTXkgaW1tZWRpYXRlIGNvbmNlcm5zIHJldm9sdmUgYXJvdW5kIHRoZSB0cmFuc2l0aW9uIG1lY2hhbmlzbXMuIFdlIG5lZWQgdG8gYmUganVkaWNpb3VzIGluIGNob29zaW5nIHRoZSByaWdodCBtZXRob2RzIOKAkyBEdWFsLVN0YWNrPyBOQVQ2ND8gNnRvND8gVGVyZWRvPyBFYWNoIGhhcyB0cmFkZS1vZmZzIGluIHRlcm1zIG9mIHBlcmZvcm1hbmNlLCBzZWN1cml0eSwgYW5kIGludGVyb3BlcmFiaWxpdHkuIFdlIGNhbuKAmXQganVzdCBkZWZhdWx0IHRvIHRoZSAnZWFzaWVzdCcgYXBwcm9hY2g7IGl0IGhhcyB0byBiZSB0aGUgbW9zdCBhcHByb3ByaWF0ZSBmb3IgdGhlIHNwZWNpZmljIG5ldHdvcmsgc2VnbWVudC5cblxuVGhlbiB0aGVyZSdzIHRoZSBvcGVyYXRpb25hbCBhc3BlY3QuIElQdjYgYWRkcmVzcyBwbGFubmluZyBpcyAqY3JpdGljYWwqLiBXZSBuZWVkIHRvIGJlIG1ldGljdWxvdXMgdG8gbWluaW1pemUgZnJhZ21lbnRhdGlvbiBhbmQgbWFrZSByb3V0aW5nIGVmZmVjdGl2ZSwgd2hpY2ggSSBmZWVsIHdpbGwgYmUgbW9yZSBpbXBhY3RmdWwgdG8gbXkgYXJlYS4gV2hhdCB3aWxsIHRoZSBpbXBhY3QgYmUgdG8gYWxsIG9mIG91ciBhcHBsaWNhdGlvbnM/IEhvdyBkb2VzIHRoaXMgaW1wYWN0IG91ciBkYXRhIGNlbnRlcnMsIGNsb3VkIGRlcGxveW1lbnRzLCBhbmQgZXZlbiBJb1QgZGV2aWNlcz8gQXJlIHdlIGFjY291bnRpbmcgZm9yIGFsbCB0aGUgZWRnZSBjYXNlcyB3aXRoIHRoZSBuZXcgdGVjaG5vbG9neT9cblxuVGhlIHNlY3VyaXR5IGxhbmRzY2FwZSBzaGlmdHMsIHRvby4gV2hpbGUgSVB2NiBwcm92aWRlcyBtb3JlIHJvYnVzdCBhdXRoZW50aWNhdGlvbiBhbmQgZW5jcnlwdGlvbiBjYXBhYmlsaXRpZXMsIGl0IGFsc28gY3JlYXRlcyBuZXcgYXR0YWNrIHZlY3RvcnMgdGhhdCB3ZSBuZWVkIHRvIGNvbnNpZGVyLiBXZSBuZWVkIHRvIGxvb2sgY2xvc2VseSBhdCBuZXcgZmlyZXdhbGwgY29uZmlndXJhdGlvbnMsIGFkZHJlc3MgYXNzaWdubWVudCwgYW5kIHNlY3VyaXR5IHBvbGljaWVzLlxuXG5GaW5hbGx5LCB0aGUgbG9uZyB0YWlsIG9mIGNvbXBhdGliaWxpdHkuIEludGVyb3BlcmFiaWxpdHkgd2l0aCBsZWdhY3kgc3lzdGVtcyBhbmQgdGhlIGF2YWlsYWJpbGl0eSBvZiBJUHY2LWVuYWJsZWQgYXBwbGljYXRpb25zIGFyZSwgbmF0dXJhbGx5LCB0aGUgZWxlcGhhbnQgaW4gdGhlIHJvb20uIEFyZSB3ZSBnb2luZyB0byBzZWUgYW5vdGhlciBcIklQdjQgdnMuIElQdjZcIiBzaXR1YXRpb24/IEl0J3MgY3J1Y2lhbCB0byBoYXZlIGEgY2xlYXIgcm9hZG1hcCBmb3IgZ3JhZHVhbCBhZG9wdGlvbiwgcmlnb3JvdXMgdGVzdGluZywgYW5kIHBoYXNlZCBtaWdyYXRpb24gdG8gbWluaW1pemUgZGlzcnVwdGlvbi4gVGhlIHJlYWwgcXVlc3Rpb24gaXMgaG93IGZhc3QgY2FuIHdlIGRvIHRoaXMgd2hpbGUgbWluaW1pemluZyBkaXNydXB0aW9uIHRvIHRob3NlIHRoYXQgcmVseSBvbiB0aGlzIGluZnJhc3RydWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MzkxLCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzowMS42NzA2NzY5MDhaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMzODMzMTU1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgSVBWNl9HUkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnPTE5OT1jb25maWcgSVBWNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjA5LVxcbm5ldC9pcHY2L0tjb25maWc6MjEwOmNvbmZpZyBJUFY2X0dSRVxcbm5ldC9pcHY2L0tjb25maWctMjExLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBHUkUgdHVubmVsXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzowMi4wMDkwMTQ1OTNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQxNjM0MTQ3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipHUkUgVHVubmVsIEltcGxlbWVudGF0aW9uOiBLZXkgRnVuY3Rpb25zIGFuZCBDb25jZXJucyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZSBHUkUgdHVubmVsIGltcGxlbWVudGF0aW9uIGhlcmUuIFRoZSBmaXJzdCB0aGluZ3MgdGhhdCBqdW1wIG91dCBhcmUgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAuIFRob3NlIGFyZSB0aGUgZW50cnkgcG9pbnRzLlxuXG5Ob3csIHdoYXQgYXJlIHRoZSBjcml0aWNhbCBmdW5jdGlvbnMgdG8gcGF5IGF0dGVudGlvbiB0bz8gV2VsbCwgbmF0dXJhbGx5LCBJJ20gdGhpbmtpbmcgaW5pdGlhbGl6YXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSB0dW5uZWxzIGFyZSBpbml0aWFsbHkgc2V0IHVwLCBzbyBJJ20gZm9jdXNpbmcgb24gYF9fZ3JlX3R1bm5lbF9pbml0YCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AsIGFuZCBgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbmAuIEknbGwgbmVlZCB0byBkaWcgaW50byB0aG9zZSBhbmQgaG93IHRoZXkgaW50ZXJhY3QuXG5cblRoZW4gdGhlcmUncyB0aGUgdHJhbnNtaXNzaW9uIHNpZGUuIEdpdmVuIG15IGV4cGVyaWVuY2Ugd2l0aCBuZXR3b3JraW5nIGludGVybmFscywgSSBpbW1lZGlhdGVseSBrbm93IGBsbHR4YCBpcyBnb2luZyB0byBpbXBhY3QgdHJhbnNtaXQgbG9ja2luZy4gU28sIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIEdSRSB0cmFuc21pdCBmdW5jdGlvbnMgaW4gdGhpcyBjb2RlLiBJdCdzIHRpbWUgdG8gaWRlbnRpZnkgdGhvc2UgdHJhbnNtaXNzaW9uIGVudHJ5IHBvaW50cyBhbmQgc2VlIGhvdyBsb2NraW5nIGlzIGhhbmRsZWQuIExldCdzIGZpbmQgdGhvc2UgdHJhbnNtaXQgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2OTIwLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTM6MDUuNDI1MzU4Njc4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNTg5NzQ2MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmRvX3N0YXJ0X3htaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfZ3JlLmM9OTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXBncmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY0L2lwX2dyZS5jLTk4Ni0jZW5kaWZcXG5uZXQvaXB2NC9pcF9ncmUuYzo5ODc6XFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBpcGdyZV94bWl0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTk4OC1cXHQubmRvX3Npb2NkZXZwcml2YXRlXFx0PSBpcF90dW5uZWxfc2lvY2RldnByaXZhdGUsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzM4PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZ3JlX3RhcF9uZXRkZXZfb3BzID0ge1xcbi0tXFxubmV0L2lwdjQvaXBfZ3JlLmMtMTM0MC1cXHQubmRvX3VuaW5pdFxcdFxcdD0gaXBfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYzoxMzQxOlxcdC5uZG9fc3RhcnRfeG1pdFxcdFxcdD0gZ3JlX3RhcF94bWl0LFxcbm5ldC9pcHY0L2lwX2dyZS5jLTEzNDItXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgXFx0PSBldGhfbWFjX2FkZHIsXFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYz0xMzcxPXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgZXJzcGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzczLVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpcF90dW5uZWxfdW5pbml0LFxcbm5ldC9pcHY0L2lwX2dyZS5jOjEzNzQ6XFx0Lm5kb19zdGFydF94bWl0XFx0XFx0PSBlcnNwYW5feG1pdCxcXG5uZXQvaXB2NC9pcF9ncmUuYy0xMzc1LVxcdC5uZG9fc2V0X21hY19hZGRyZXNzXFx0PSBldGhfbWFjX2FkZHIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTEzVDE5OjUzOjA1LjY4NDMzOTUwOVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Njc0MTYwMzExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKklQdjYgQ29uc2lkZXJhdGlvbnMgXHUwMDI2IEltcGxpY2F0aW9ucyoqXG5cbkFscmlnaHQsIGxldCdzIGRyaWxsIGRvd24gaW50byBJUHY2LiBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGltcGxpY2F0aW9ucywgcmlnaHQ/IFdlJ3ZlIGdvdCB0aGlzIG1hc3NpdmUgYWRkcmVzcyBzcGFjZSwgd2hpY2ggaXMgZmFudGFzdGljLCBidXQgaXQgZm9yY2VzIGEgY29tcGxldGUgcmV0aGlua2luZyBvZiBuZXR3b3JrIGRlc2lnbiBhbmQgc2VjdXJpdHkuIEknbSBub3QganVzdCB0YWxraW5nIGFib3V0IHRoZSBvYnZpb3VzIHN0dWZmIOKAkyB0aGUgbGFjayBvZiBOQVQsIHRoZSBzdGF0ZWxlc3MgYXV0by1jb25maWd1cmF0aW9uLCBhbmQgdGhlIG5ldyBoZWFkZXIgc3RydWN0dXJlLiBJJ20gY29uc2lkZXJpbmcgdGhlIG1vcmUgc3VidGxlIGFzcGVjdHMgdGhhdCBjYW4gdHJpcCB1cyB1cC5cblxuU3BlY2lmaWNhbGx5LCBJJ20gYW5hbHl6aW5nIHRoZSB0cmFuc2l0aW9uIHN0cmF0ZWdpZXMuIER1YWwtc3RhY2sgaXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQsIGJ1dCB3aGF0IGFib3V0IHNjZW5hcmlvcyB3aGVyZSB3ZSdyZSBwaGFzaW5nIG91dCBJUHY0IGVudGlyZWx5PyBIb3cgZG8gd2UgZW5zdXJlIHNlYW1sZXNzIGNvbm5lY3Rpdml0eSwgcGFydGljdWxhcmx5IGZvciBsZWdhY3kgc3lzdGVtcyBvciB0aGlyZC1wYXJ0eSBjb21wb25lbnRzPyBUaGVuIHRoZXJlJ3MgdGhlIHR1bm5lbGluZyDigJMgNnRvNCwgVGVyZWRvLCBJU0FUQVAuIEVhY2ggaGFzIGl0cyBvd24gc3RyZW5ndGhzIGFuZCB3ZWFrbmVzc2VzLCBhbmQgdGhlIGNob2ljZSBkZXBlbmRzIGhlYXZpbHkgb24gdGhlIHNwZWNpZmljIG5ldHdvcmsgdG9wb2xvZ3kgYW5kIHRoZSBsZXZlbCBvZiBjb250cm9sIHdlIGhhdmUgb3ZlciB0aGUgaW5mcmFzdHJ1Y3R1cmUuIEknbSBhbHNvIGFzc2Vzc2luZyBob3cgd2UgaW50ZWdyYXRlIElQdjYgaW50byBleGlzdGluZyBtb25pdG9yaW5nIGFuZCBtYW5hZ2VtZW50IHRvb2xzLiBDb21wYXRpYmlsaXR5IGlzIGtleS4gV2UgY2FuJ3QgbGV0IGEgcHJvdG9jb2wgc2hpZnQgYnJlYWsgb3VyIHZpc2liaWxpdHkgaW50byB0aGUgbmV0d29yay5cblxuSSdtIHRoaW5raW5nIGFib3V0IHNlY3VyaXR5IHRvbywgdGhlIG5ldyBoZWFkZXIgZXh0ZW5zaW9ucyBhcmUgY2VydGFpbmx5IGEgcG93ZXJmdWwgdG9vbCBmb3IgZW5oYW5jZWQgc2VjdXJpdHkgYnV0IHBvdGVudGlhbGx5IGNyZWF0ZSB2dWxuZXJhYmlsaXRpZXMgaWYgbm90IGhhbmRsZWQgd2l0aCBwcmVjaXNlIGNhcmUuIFRoZSBpbmhlcmVudCBzZWN1cml0eSBhZHZhbnRhZ2VzIElQdjYgb2ZmZXJzLCBzdWNoIGFzIElQU2VjIGJ5IGRlZmF1bHQsIGFyZSBzaWduaWZpY2FudCwgYnV0IHRoZXkgZG9uJ3Qgc29sdmUgZXZlcnl0aGluZy4gUHJvcGVyIGltcGxlbWVudGF0aW9uLCBpbmNsdWRpbmcgdGhlIHJpZ2h0IGNyeXB0b2dyYXBoaWMgYWxnb3JpdGhtcyBhbmQga2V5IG1hbmFnZW1lbnQsIGlzIGFic29sdXRlbHkgY3JpdGljYWwuIFdlIGNhbid0IGp1c3QgYXNzdW1lIHRoYXQgXCJpdCdzIElQdjYsIHNvIGl0J3Mgc2VjdXJlLlwiXG5cbkZ1cnRoZXJtb3JlLCBhbmQgcGVyaGFwcyBtb3N0IGltcG9ydGFudGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wZXJhdGlvbmFsIGNoYWxsZW5nZXMuIFRyYWluaW5nIG91ciB0ZWFtcywgdXBkYXRpbmcgZG9jdW1lbnRhdGlvbiwgYW5kIGFkYXB0aW5nIG91ciBuZXR3b3JrIG1hbmFnZW1lbnQgcHJvY2VkdXJlcyBpcyBnb2luZyB0byBiZSBhIGxhcmdlIGVmZm9ydC4gSXQncyBhIHNpZ25pZmljYW50IGNoYW5nZSwgbW9yZSB0aGFuIGp1c3QgZmxpcHBpbmcgYSBzd2l0Y2guIEl0J3MgYSBwYXJhZGlnbSBzaGlmdCwgYW5kIHdlIG5lZWQgdG8gYmUgcmVhZHkgZm9yIGl0LiBTbywgSSBuZWVkIHRvIGV2YWx1YXRlIHRoZSBpbXBsaWNhdGlvbnMgdmVyeSBjYXJlZnVsbHkuXG5cbkhvdyBkbyB3ZSBhY3R1YWxseSBwbGFuIHRoaXMgdHJhbnNpdGlvbj8gTGV0J3MgZ2V0IGRvd24gdG8gdGhlIG5pdHR5LWdyaXR0eSBhbmQgYXNzZXNzIGFsbCBvZiB0aGUgcmVhbC13b3JsZCBmYWN0b3JzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjgyLCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzoxMC4zNTg1MDMxNFoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2ODg2ODUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuZG9fc3RhcnRfeG1pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9pcDZfZ3JlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvaXA2X2dyZS5jPTE0MTI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZncmVfbmV0ZGV2X29wcyA9IHtcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYy0xNDE0LVxcdC5uZG9fdW5pbml0XFx0XFx0PSBpcDZncmVfdHVubmVsX3VuaW5pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmM6MTQxNTpcXHQubmRvX3N0YXJ0X3htaXRcXHRcXHQ9IGlwNmdyZV90dW5uZWxfeG1pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTQxNi1cXHQubmRvX3Npb2NkZXZwcml2YXRlXFx0PSBpcDZncmVfdHVubmVsX3Npb2NkZXZwcml2YXRlLFxcbi0tXFxubmV0L2lwdjYvaXA2X2dyZS5jPTE4MjM9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyBpcDZncmVfdGFwX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgyNS1cXHQubmRvX3VuaW5pdCA9IGlwNmdyZV90dW5uZWxfdW5pbml0LFxcbm5ldC9pcHY2L2lwNl9ncmUuYzoxODI2OlxcdC5uZG9fc3RhcnRfeG1pdCA9IGlwNmdyZV90dW5uZWxfeG1pdCxcXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTgyNy1cXHQubmRvX3NldF9tYWNfYWRkcmVzcyA9IGV0aF9tYWNfYWRkcixcXG4tLVxcbm5ldC9pcHY2L2lwNl9ncmUuYz0xODg0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgbmV0X2RldmljZV9vcHMgaXA2ZXJzcGFuX25ldGRldl9vcHMgPSB7XFxuLS1cXG5uZXQvaXB2Ni9pcDZfZ3JlLmMtMTg4Ni1cXHQubmRvX3VuaW5pdCA9XFx0XFx0aXA2ZXJzcGFuX3R1bm5lbF91bmluaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jOjE4ODc6XFx0Lm5kb19zdGFydF94bWl0ID1cXHRpcDZlcnNwYW5fdHVubmVsX3htaXQsXFxubmV0L2lwdjYvaXA2X2dyZS5jLTE4ODgtXFx0Lm5kb19zZXRfbWFjX2FkZHJlc3MgPVxcdGV0aF9tYWNfYWRkcixcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTNUMTk6NTM6MTIuMDI3Mzc4OTk2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg2MjA2NTY3NDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEdSRSBUdW5uZWwgSW5pdGlhbGl6YXRpb24gYW5kIFRyYW5zbWlzc2lvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgbWFpbiBmb2N1cyBoZXJlIGlzIHVuZGVyc3RhbmRpbmcgdGhlIHRyYW5zbWl0IGZ1bmN0aW9ucyBhbmQgaW5pdGlhbGl6YXRpb24gcm91dGluZXMgZm9yIHRoZXNlIEdSRSB0dW5uZWxzLiBGcm9tIGEgcXVpY2sgc2NhbiwgSSdtIGtleWluZyBpbiBvbiB0aGVzZSBmdW5jdGlvbnM6IGBpcGdyZV94bWl0YCwgYGdyZV90YXBfeG1pdGAsIGBlcnNwYW5feG1pdGAsIGBpcDZncmVfdHVubmVsX3htaXRgLCBhbmQgYGlwNmVyc3Bhbl90dW5uZWxfeG1pdGAuIFRoZXNlIGFyZSB0aGUgY29yZSB0cmFuc21pdCBwYXRocy4gSSdtIGFsc28gaW5jbHVkaW5nIHRoZSBpbml0IGZ1bmN0aW9ucyBhcyB0aGV5J3JlIGZvdW5kYXRpb25hbDogYF9fZ3JlX3R1bm5lbF9pbml0YCwgYGlwZ3JlX3R1bm5lbF9pbml0YCwgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AsIGFuZCBgaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbmAuXG5cbk5leHQsIEkgbmVlZCB0byBlbnN1cmUgSSd2ZSBjb3ZlcmVkIGFsbCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMuIFRoZSBiaWcgb25lcyBhcmUgYE5FVF9JUEdSRWAgYW5kIGBJUFY2X0dSRWAsIGFuZCBgSVBWNmAgZm9yIHRoZSBJUHY2IHZhcmlhbnQuIGBORVRfSVBHUkVfQlJPQURDQVNUYCBtaWdodCBiZSByZWxhdGVkLCBidXQgaXQncyBub3Qgc3RyaWN0bHkgZXNzZW50aWFsIHRvIHRoaXMgY29yZSBmdW5jdGlvbmFsaXR5LlxuXG5Ob3csIGxldCdzIGFzc2VtYmxlIGEgZmluYWwgbGlzdCBvZiB0aGUgZm9jdXMgc3ltYm9scyBiYXNlZCBvbiB3aGF0IEkndmUgaWRlbnRpZmllZCBzbyBmYXIuIFRoYXQnczpcbmBfX2dyZV90dW5uZWxfaW5pdGBcbmBpcGdyZV90dW5uZWxfaW5pdGBcbmBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgXG5gaXA2Z3JlX3R1bm5lbF9pbml0X2NvbW1vbmBcbmBpcGdyZV94bWl0YFxuYGdyZV90YXBfeG1pdGBcbmBlcnNwYW5feG1pdGBcbmBpcDZncmVfdHVubmVsX3htaXRgXG5gaXA2ZXJzcGFuX3R1bm5lbF94bWl0YFxuXG5XYWl0LCBvbiBjbG9zZXIgaW5zcGVjdGlvbiwgdGhlIGNyaXRpY2FsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9ucyBtb2RpZmllZCBpbiB0aGlzIHBhdGNoIGFyZSBgX19ncmVfdHVubmVsX2luaXRgIGFuZCBgaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzYC4gU28gSSBzaG91bGQgZGVmaW5pdGVseSBrZWVwIHRob3NlIHR3by5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2gncyBnb2FsIGlzIHRvIGVuc3VyZSB0aGUgYGxsdHhgIGZsYWcsIHdoaWNoIGVuYWJsZXMgbG9ja2xlc3MgdHJhbnNtaXQgZm9yIEdSRSBkZXZpY2VzLCBpcyBjb25zaXN0ZW50bHkgc2V0IGR1cmluZyBpbml0aWFsaXphdGlvbi4gVGhlIGNvZGUgaXMgbW92ZWQgdG8gaGFwcGVuIGJlZm9yZSBhbnkgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgd2l0aGluIGBfX2dyZV90dW5uZWxfaW5pdGAgYW5kIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFzIGl0IG1vZGlmaWVzIGxvY2tpbmcgYmVoYXZpb3IgZHVyaW5nIHBhY2tldCB0cmFuc21pc3Npb24gb3ZlciBHUkUgdHVubmVscyBhbmQgdGhpcyBtb2RpZmljYXRpb24gYWltcyB0byBtYWtlIGxvY2tsZXNzIHRyYW5zbWl0IGJlIHVzZWQgY29uc2lzdGVudGx5LlxuXG5TbywgdG8gc3VtbWFyaXplLCB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgYXJlIGBORVRfSVBHUkVgIGFuZCBgSVBWNl9HUkVgLCBhbmQgdGhlIGltcG9ydGFudCBmdW5jdGlvbnMgYXJlIGBfX2dyZV90dW5uZWxfaW5pdGAsIGBpcDZncmVfdG5sX2luaXRfZmVhdHVyZXNgLCBgaXBncmVfeG1pdGAsIGBncmVfdGFwX3htaXRgLCBgZXJzcGFuX3htaXRgLCBgaXA2Z3JlX3R1bm5lbF94bWl0YCwgYW5kIGBpcDZlcnNwYW5fdHVubmVsX3htaXRgLlxuXG5Mb29rcyBnb29kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjQzLCJPdXRwdXRUb2tlbnMiOjIwMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xM1QxOTo1MzoyMC42NDgwNDA0OTRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzM4NjUzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzXCIsXG4gICAgXCJpcGdyZV94bWl0XCIsXG4gICAgXCJncmVfdGFwX3htaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCIsXG4gICAgXCJpcDZncmVfdHVubmVsX3htaXRcIixcbiAgICBcImlwNmVyc3Bhbl90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9JUEdSRVwiLFxuICAgIFwiSVBWNl9HUkVcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJfX2dyZV90dW5uZWxfaW5pdFwiLFxuICAgIFwiaXA2Z3JlX3RubF9pbml0X2ZlYXR1cmVzXCIsXG4gICAgXCJpcGdyZV94bWl0XCIsXG4gICAgXCJncmVfdGFwX3htaXRcIixcbiAgICBcImVyc3Bhbl94bWl0XCIsXG4gICAgXCJpcDZncmVfdHVubmVsX3htaXRcIixcbiAgICBcImlwNmVyc3Bhbl90dW5uZWxfeG1pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vdmVzIHRoZSBgZGV2LVxcdTAwM2VsbHR4ID0gdHJ1ZWAgYXNzaWdubWVudCBiZWZvcmUgcG90ZW50aWFsIGVhcmx5IHJldHVybnMgaW4gYF9fZ3JlX3R1bm5lbF9pbml0YCBhbmQgYGlwNmdyZV90bmxfaW5pdF9mZWF0dXJlc2AuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZSBgbGx0eGAgZmxhZyAod2hpY2ggaW5kaWNhdGVzIGxvY2tsZXNzIHRyYW5zbWl0KSBpcyBhbHdheXMgc2V0IGZvciBHUkUgZGV2aWNlcywgZXZlbiBpZiB0aGV5IHJldHVybiBlYXJseSBkdWUgdG8gdW5zdXBwb3J0ZWQgb2ZmbG9hZCBmZWF0dXJlcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGFmZmVjdGluZyB0aGUgbG9ja2luZyBiZWhhdmlvciBkdXJpbmcgcGFja2V0IHRyYW5zbWlzc2lvbiBvdmVyIEdSRSB0dW5uZWxzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+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-workflow95kwf[1] Phase: Succeeded StartedAt: 2026-07-13 19:53:33 +0000 UTC FinishedAt: 2026-07-13 19:53:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-13 19:53:33 +0000 UTC FinishedAt: 2026-07-13 19:53:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2] Phase: Succeeded StartedAt: 2026-07-13 19:53:33 +0000 UTC FinishedAt: 2026-07-14 00:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-13 19:53:34 +0000 UTC FinishedAt: 2026-07-14 00:08:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-13 19:53:34 +0000 UTC FinishedAt: 2026-07-13 19:54:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-13 19:53:34 +0000 UTC FinishedAt: 2026-07-13 19:53:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow95kwf/series-workflow95kwf-convert-artifact-2480415777/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-13 19:54:09 +0000 UTC FinishedAt: 2026-07-13 20:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-13 19:54:09 +0000 UTC FinishedAt: 2026-07-13 20:24:18 +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:*efb6009c-67fb-4a47-97bf-6ebd5c1bfb9b,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-workflow95kwf/series-workflow95kwf-convert-artifact-2480415777/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": "52414761-980a-4b3a-a84a-e97dec274f84", "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-workflow95kwf/series-workflow95kwf-build-action-1951988559/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-13 19:54:09 +0000 UTC FinishedAt: 2026-07-13 20:23:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*efb6009c-67fb-4a47-97bf-6ebd5c1bfb9b,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-workflow95kwf/series-workflow95kwf-convert-artifact-2480415777/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": "52414761-980a-4b3a-a84a-e97dec274f84", "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-workflow95kwf/series-workflow95kwf-build-action-1951988559/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-13 20:24:18 +0000 UTC FinishedAt: 2026-07-13 20:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-13 20:24:18 +0000 UTC FinishedAt: 2026-07-13 20:24:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-13 20:24:18 +0000 UTC FinishedAt: 2026-07-13 20:24:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-13 20:24:18 +0000 UTC FinishedAt: 2026-07-13 20:24:25 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.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-workflow95kwf/series-workflow95kwf-convert-artifact-3304241524/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-13 20:24:28 +0000 UTC FinishedAt: 2026-07-13 20:26:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-13 20:24:28 +0000 UTC FinishedAt: 2026-07-13 20:26:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52414761-980a-4b3a-a84a-e97dec274f84,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-workflow95kwf/series-workflow95kwf-build-action-1951988559/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-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-13 20:26:39 +0000 UTC FinishedAt: 2026-07-13 20:26:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-13 20:26:39 +0000 UTC FinishedAt: 2026-07-13 20:26:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-13 20:26:39 +0000 UTC FinishedAt: 2026-07-13 21:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-13 20:26:39 +0000 UTC FinishedAt: 2026-07-13 21:01:36 +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:*efb6009c-67fb-4a47-97bf-6ebd5c1bfb9b,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-workflow95kwf/series-workflow95kwf-convert-artifact-3304241524/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": "4172fbb9-f52e-4dbf-ad6c-64d705f87b04", "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-workflow95kwf/series-workflow95kwf-build-action-2033315392/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-13 20:26:39 +0000 UTC FinishedAt: 2026-07-13 21:00:25 +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:*efb6009c-67fb-4a47-97bf-6ebd5c1bfb9b,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-workflow95kwf/series-workflow95kwf-convert-artifact-3304241524/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": "4172fbb9-f52e-4dbf-ad6c-64d705f87b04", "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-workflow95kwf/series-workflow95kwf-build-action-2033315392/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-13 21:01:36 +0000 UTC FinishedAt: 2026-07-13 21:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-13 21:01:36 +0000 UTC FinishedAt: 2026-07-13 21:01:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-13 21:01:36 +0000 UTC FinishedAt: 2026-07-13 21:03:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-13 21:01:36 +0000 UTC FinishedAt: 2026-07-13 21:03:28 +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:*4172fbb9-f52e-4dbf-ad6c-64d705f87b04,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-workflow95kwf/series-workflow95kwf-build-action-2033315392/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-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-14 00:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-14 00:08:27 +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":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"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:*52414761-980a-4b3a-a84a-e97dec274f84,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4172fbb9-f52e-4dbf-ad6c-64d705f87b04,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-workflow95kwf/series-workflow95kwf-build-action-1951988559/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-workflow95kwf/series-workflow95kwf-build-action-2033315392/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-13 21:04:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-13 21:04:04 +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":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"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-workflow95kwf/series-workflow95kwf-convert-artifact-2520883357/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-13 21:03:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-13 21:03:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-13 21:03:39 +0000 UTC FinishedAt: 2026-07-13 21:03:39 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-13 21:04:13 +0000 UTC FinishedAt: 2026-07-14 00:08:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflow95kwf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["__gre_tunnel_init","ip6gre_tnl_init_features","ipgre_xmit","gre_tap_xmit","erspan_xmit","ip6gre_tunnel_xmit","ip6erspan_tunnel_xmit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3f1f755366687d051174739fb99f7d560202f60b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_IPGRE","IPV6_GRE"],"series_id":"546800ac-b045-43da-8a3c-281433429d20","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-13 21:04:13 +0000 UTC FinishedAt: 2026-07-14 00:08:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*52414761-980a-4b3a-a84a-e97dec274f84,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*4172fbb9-f52e-4dbf-ad6c-64d705f87b04,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-workflow95kwf/series-workflow95kwf-build-action-1951988559/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-workflow95kwf/series-workflow95kwf-build-action-2033315392/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-workflow95kwf/series-workflow95kwf-convert-artifact-2520883357/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,}