Name: series-workflowg6pb8 Phase: Succeeded StartedAt: 2026-08-04 08:07:07 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[0] Phase: Succeeded StartedAt: 2026-08-04 08:07:07 +0000 UTC FinishedAt: 2026-08-04 08:25:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[0].run-triage Phase: Succeeded StartedAt: 2026-08-04 08:07:07 +0000 UTC FinishedAt: 2026-08-04 08:25:56 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_NET" ], "series_id": "90b3f612-40e5-46a3-b1f8-7fa096a9f8ab" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "virtnet_set_hashflow", "virtnet_set_rxfh", "virtnet_set_features" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0bmV0X3NldF9oYXNoZmxvdyYjMzQ7LAogICAgJiMzNDt2aXJ0bmV0X3NldF9yeGZoJiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2ZlYXR1cmVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGVycm9yIGhhbmRsaW5nIGFuZCBzdGF0ZSByZXN0b3JhdGlvbiBsb2dpYyBpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIgd2hlbiBzZXR0aW5nIFJTUyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgdmlhIGV0aHRvb2wgYW5kIG5ldGRldiBvcHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgYW5kIHZpcnRpb19uZXQgaXMgaGVhdmlseSB1c2VkIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNWI3ODc1ODZkOThjMTJhOTZhYTQ4OGViY2Y5NzM0NjRkNmU3YTQxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwODoyNTowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbmluZGV4IDNlMmE1ODc2YzZjOGMuLmNjZDk2MzE1YTE0NTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xuQEAgLTQyOTUsNiAmIzQzOzQyOTUsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpO1xuJiM0MztcdHUzMiBvbGRfaGFzaHR5cGVzID0gdmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQ7XG4gXHR1MzIgbmV3X2hhc2h0eXBlcyA9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkO1xuIFx0Ym9vbCBpc19kaXNhYmxlID0gaW5mby1cdTAwM2VkYXRhIFx1MDAyNiBSWEhfRElTQ0FSRDtcbiBcdGJvb2wgaXNfbDQgPSBpbmZvLVx1MDAzZWRhdGEgPT0gKFJYSF9JUF9TUkMgfCBSWEhfSVBfRFNUIHwgUlhIX0w0X0JfMF8xIHwgUlhIX0w0X0JfMl8zKTtcbkBAIC00MzUwLDkgJiM0Mzs0MzUxLDEzIEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChuZXdfaGFzaHR5cGVzICE9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkKSB7XG4gXHRcdHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkID0gbmV3X2hhc2h0eXBlcztcbiBcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xuLVx0XHRpZiAodmktXHUwMDNlZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbi1cdFx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbiYjNDM7XHRcdGlmICh2aS1cdTAwM2VkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XG4mIzQzO1x0XHRcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG4mIzQzO1x0XHRcdFx0dmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xuJiM0MztcdFx0XHRcdHZpLVx1MDAzZXJzc19oZHItXHUwMDNlaGFzaF90eXBlcyA9IGNwdV90b19sZTMyKG9sZF9oYXNodHlwZXMpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTU1NDYsNiAmIzQzOzU1NTEsOCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgdmlydGlvX25ldF9yc3NfY29uZmlnX2hkciAqb2xkX3Jzc19oZHIgPSBOVUxMO1xuJiM0MztcdHU4IG9sZF9yc3Nfa2V5W05FVERFVl9SU1NfS0VZX0xFTl07XG4gXHRib29sIHVwZGF0ZSA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG5AQCAtNTU1MywxNCAmIzQzOzU1NjAsOCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdCAgICByeGZoLVx1MDAzZWhmdW5jICE9IEVUSF9SU1NfSEFTSF9UT1ApXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGlmIChyeGZoLVx1MDAzZWluZGlyKSB7XG4tXHRcdGlmICghdmktXHUwMDNlaGFzX3Jzcylcbi1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZXJzc19pbmRpcl90YWJsZV9zaXplOyAmIzQzOyYjNDM7aSlcbi1cdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWluZGlyZWN0aW9uX3RhYmxlW2ldID0gY3B1X3RvX2xlMTYocnhmaC1cdTAwM2VpbmRpcltpXSk7XG4tXHRcdHVwZGF0ZSA9IHRydWU7XG4tXHR9XG4mIzQzO1x0aWYgKHJ4ZmgtXHUwMDNlaW5kaXIgXHUwMDI2XHUwMDI2ICF2aS1cdTAwM2VoYXNfcnNzKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKHJ4ZmgtXHUwMDNla2V5KSB7XG4gXHRcdC8qIElmIGVpdGhlciBfRl9IQVNIX1JFUE9SVCBvciBfRl9SU1MgYXJlIG5lZ290aWF0ZWQsIHRoZVxuQEAgLTU1NjksMTMgJiM0Mzs1NTcwLDM2IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgKi9cbiBcdFx0aWYgKCF2aS1cdTAwM2VoYXNfcnNzIFx1MDAyNlx1MDAyNiAhdmktXHUwMDNlaGFzX3Jzc19oYXNoX3JlcG9ydClcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocnhmaC1cdTAwM2VpbmRpcikge1xuJiM0MztcdFx0b2xkX3Jzc19oZHIgPSBrbWVtZHVwKHZpLVx1MDAzZXJzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSxcbiYjNDM7XHRcdFx0XHQgICAgICBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghb2xkX3Jzc19oZHIpXG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZXJzc19pbmRpcl90YWJsZV9zaXplOyAmIzQzOyYjNDM7aSlcbiYjNDM7XHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VpbmRpcmVjdGlvbl90YWJsZVtpXSA9XG4mIzQzO1x0XHRcdFx0Y3B1X3RvX2xlMTYocnhmaC1cdTAwM2VpbmRpcltpXSk7XG4mIzQzO1x0XHR1cGRhdGUgPSB0cnVlO1xuJiM0MztcdH1cbiBcbiYjNDM7XHRpZiAocnhmaC1cdTAwM2VrZXkpIHtcbiYjNDM7XHRcdG1lbWNweShvbGRfcnNzX2tleSwgdmktXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIHZpLVx1MDAzZXJzc19rZXlfc2l6ZSk7XG4gXHRcdG1lbWNweSh2aS1cdTAwM2Vyc3NfaGFzaF9rZXlfZGF0YSwgcnhmaC1cdTAwM2VrZXksIHZpLVx1MDAzZXJzc19rZXlfc2l6ZSk7XG4gXHRcdHVwZGF0ZSA9IHRydWU7XG4gXHR9XG4gXG4tXHRpZiAodXBkYXRlKVxuLVx0XHR2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSk7XG4mIzQzO1x0aWYgKHVwZGF0ZSBcdTAwMjZcdTAwMjYgIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuJiM0MztcdFx0aWYgKG9sZF9yc3NfaGRyKVxuJiM0MztcdFx0XHRtZW1jcHkodmktXHUwMDNlcnNzX2hkciwgb2xkX3Jzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSk7XG4mIzQzO1x0XHRpZiAocnhmaC1cdTAwM2VrZXkpXG4mIzQzO1x0XHRcdG1lbWNweSh2aS1cdTAwM2Vyc3NfaGFzaF9rZXlfZGF0YSwgb2xkX3Jzc19rZXksIHZpLVx1MDAzZXJzc19rZXlfc2l6ZSk7XG4mIzQzO1x0XHRrZnJlZShvbGRfcnNzX2hkcik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGtmcmVlKG9sZF9yc3NfaGRyKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC02MTcxLDEzICYjNDM7NjE5NSwxNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gXG4gXHRpZiAoKGRldi1cdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzKSBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpIHtcbiYjNDM7XHRcdF9fbGUzMiBoYXNoX3R5cGVzID0gdmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzO1xuJiM0MztcbiBcdFx0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZCk7XG4gXHRcdGVsc2VcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMihWSVJUSU9fTkVUX0hBU0hfUkVQT1JUX05PTkUpO1xuIFxuLVx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbiYjNDM7XHRcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG4mIzQzO1x0XHRcdHZpLVx1MDAzZXJzc19oZHItXHUwMDNlaGFzaF90eXBlcyA9IGhhc2hfdHlwZXM7XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVElPX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAgICYjMzQ7dmlydG5ldF9zZXRfZmVhdHVyZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ1Yjc4NzU4NmQ5OGMxMmE5NmFhNDg4ZWJjZjk3MzQ2NGQ2ZTdhNDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA4OjI1OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCmluZGV4IDNlMmE1ODc2YzZjOGMuLmNjZDk2MzE1YTE0NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKQEAgLTQyOTUsNiAmIzQzOzQyOTUsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewogCXN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJdTMyIG9sZF9oYXNodHlwZXMgPSB2aS0mZ3Q7cnNzX2hhc2hfdHlwZXNfc2F2ZWQ7CiAJdTMyIG5ld19oYXNodHlwZXMgPSB2aS0mZ3Q7cnNzX2hhc2hfdHlwZXNfc2F2ZWQ7CiAJYm9vbCBpc19kaXNhYmxlID0gaW5mby0mZ3Q7ZGF0YSAmYW1wOyBSWEhfRElTQ0FSRDsKIAlib29sIGlzX2w0ID0gaW5mby0mZ3Q7ZGF0YSA9PSAoUlhIX0lQX1NSQyB8IFJYSF9JUF9EU1QgfCBSWEhfTDRfQl8wXzEgfCBSWEhfTDRfQl8yXzMpOwpAQCAtNDM1MCw5ICYjNDM7NDM1MSwxMyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKG5ld19oYXNodHlwZXMgIT0gdmktJmd0O3Jzc19oYXNoX3R5cGVzX3NhdmVkKSB7CiAJCXZpLSZndDtyc3NfaGFzaF90eXBlc19zYXZlZCA9IG5ld19oYXNodHlwZXM7CiAJCXZpLSZndDtyc3NfaGRyLSZndDtoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktJmd0O3Jzc19oYXNoX3R5cGVzX3NhdmVkKTsKLQkJaWYgKHZpLSZndDtkZXYtJmd0O2ZlYXR1cmVzICZhbXA7IE5FVElGX0ZfUlhIQVNIKQotCQkJaWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpCiYjNDM7CQlpZiAodmktJmd0O2Rldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9SWEhBU0gpIHsKJiM0MzsJCQlpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkgewomIzQzOwkJCQl2aS0mZ3Q7cnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzOwomIzQzOwkJCQl2aS0mZ3Q7cnNzX2hkci0mZ3Q7aGFzaF90eXBlcyA9IGNwdV90b19sZTMyKG9sZF9oYXNodHlwZXMpOwogCQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTU1NDYsNiAmIzQzOzU1NTEsOCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwlzdHJ1Y3QgdmlydGlvX25ldF9yc3NfY29uZmlnX2hkciAqb2xkX3Jzc19oZHIgPSBOVUxMOwomIzQzOwl1OCBvbGRfcnNzX2tleVtORVRERVZfUlNTX0tFWV9MRU5dOwogCWJvb2wgdXBkYXRlID0gZmFsc2U7CiAJaW50IGk7CiAKQEAgLTU1NTMsMTQgJiM0Mzs1NTYwLDggQEAgc3RhdGljIGludCB2aXJ0bmV0X3NldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJICAgIHJ4ZmgtJmd0O2hmdW5jICE9IEVUSF9SU1NfSEFTSF9UT1ApCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWlmIChyeGZoLSZndDtpbmRpcikgewotCQlpZiAoIXZpLSZndDtoYXNfcnNzKQotCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCi0JCWZvciAoaSA9IDA7IGkgJmx0OyB2aS0mZ3Q7cnNzX2luZGlyX3RhYmxlX3NpemU7ICYjNDM7JiM0MztpKQotCQkJdmktJmd0O3Jzc19oZHItJmd0O2luZGlyZWN0aW9uX3RhYmxlW2ldID0gY3B1X3RvX2xlMTYocnhmaC0mZ3Q7aW5kaXJbaV0pOwotCQl1cGRhdGUgPSB0cnVlOwotCX0KJiM0MzsJaWYgKHJ4ZmgtJmd0O2luZGlyICZhbXA7JmFtcDsgIXZpLSZndDtoYXNfcnNzKQomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKHJ4ZmgtJmd0O2tleSkgewogCQkvKiBJZiBlaXRoZXIgX0ZfSEFTSF9SRVBPUlQgb3IgX0ZfUlNTIGFyZSBuZWdvdGlhdGVkLCB0aGUKQEAgLTU1NjksMTMgJiM0Mzs1NTcwLDM2IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgKi8KIAkJaWYgKCF2aS0mZ3Q7aGFzX3JzcyAmYW1wOyZhbXA7ICF2aS0mZ3Q7aGFzX3Jzc19oYXNoX3JlcG9ydCkKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocnhmaC0mZ3Q7aW5kaXIpIHsKJiM0MzsJCW9sZF9yc3NfaGRyID0ga21lbWR1cCh2aS0mZ3Q7cnNzX2hkciwgdmlydG5ldF9yc3NfaGRyX3NpemUodmkpLAomIzQzOwkJCQkgICAgICBHRlBfS0VSTkVMKTsKJiM0MzsJCWlmICghb2xkX3Jzc19oZHIpCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgdmktJmd0O3Jzc19pbmRpcl90YWJsZV9zaXplOyAmIzQzOyYjNDM7aSkKJiM0MzsJCQl2aS0mZ3Q7cnNzX2hkci0mZ3Q7aW5kaXJlY3Rpb25fdGFibGVbaV0gPQomIzQzOwkJCQljcHVfdG9fbGUxNihyeGZoLSZndDtpbmRpcltpXSk7CiYjNDM7CQl1cGRhdGUgPSB0cnVlOwomIzQzOwl9CiAKJiM0MzsJaWYgKHJ4ZmgtJmd0O2tleSkgewomIzQzOwkJbWVtY3B5KG9sZF9yc3Nfa2V5LCB2aS0mZ3Q7cnNzX2hhc2hfa2V5X2RhdGEsIHZpLSZndDtyc3Nfa2V5X3NpemUpOwogCQltZW1jcHkodmktJmd0O3Jzc19oYXNoX2tleV9kYXRhLCByeGZoLSZndDtrZXksIHZpLSZndDtyc3Nfa2V5X3NpemUpOwogCQl1cGRhdGUgPSB0cnVlOwogCX0KIAotCWlmICh1cGRhdGUpCi0JCXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKTsKJiM0MzsJaWYgKHVwZGF0ZSAmYW1wOyZhbXA7ICF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHsKJiM0MzsJCWlmIChvbGRfcnNzX2hkcikKJiM0MzsJCQltZW1jcHkodmktJmd0O3Jzc19oZHIsIG9sZF9yc3NfaGRyLCB2aXJ0bmV0X3Jzc19oZHJfc2l6ZSh2aSkpOwomIzQzOwkJaWYgKHJ4ZmgtJmd0O2tleSkKJiM0MzsJCQltZW1jcHkodmktJmd0O3Jzc19oYXNoX2tleV9kYXRhLCBvbGRfcnNzX2tleSwgdmktJmd0O3Jzc19rZXlfc2l6ZSk7CiYjNDM7CQlrZnJlZShvbGRfcnNzX2hkcik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlrZnJlZShvbGRfcnNzX2hkcik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTYxNzEsMTMgJiM0Mzs2MTk1LDE3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoKGRldi0mZ3Q7ZmVhdHVyZXMgXiBmZWF0dXJlcykgJmFtcDsgTkVUSUZfRl9SWEhBU0gpIHsKJiM0MzsJCV9fbGUzMiBoYXNoX3R5cGVzID0gdmktJmd0O3Jzc19oZHItJmd0O2hhc2hfdHlwZXM7CiYjNDM7CiAJCWlmIChmZWF0dXJlcyAmYW1wOyBORVRJRl9GX1JYSEFTSCkKIAkJCXZpLSZndDtyc3NfaGRyLSZndDtoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktJmd0O3Jzc19oYXNoX3R5cGVzX3NhdmVkKTsKIAkJZWxzZQogCQkJdmktJmd0O3Jzc19oZHItJmd0O2hhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMihWSVJUSU9fTkVUX0hBU0hfUkVQT1JUX05PTkUpOwogCi0JCWlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKQomIzQzOwkJaWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHsKJiM0MzsJCQl2aS0mZ3Q7cnNzX2hkci0mZ3Q7aGFzaF90eXBlcyA9IGhhc2hfdHlwZXM7CiAJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdG91Y2hpbmcgYHZpcnRuZXRfc2V0X2hhc2hmbG93YCwgYHZpcnRuZXRfc2V0X3J4ZmhgLCBhbmQgYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYC4gVGhlIGtleSBoZXJlLCB0aG91Z2gsIGlzIHRoZSBhZGRpdGlvbiBvZiBlcnJvciBoYW5kbGluZyBhcm91bmQgYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKWAuIEl0IHNvdW5kcyBsaWtlIHRoZXkmIzM5O3JlIHRyeWluZyB0byByb2xsIGJhY2sgdGhlIGNoYW5nZXMgaWYgdGhhdCBjb21tYW5kIGZhaWxzLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0lzIHRoaXMgd29ydGggZnV6emluZz8mIzM0OyBMZXQmIzM5O3Mgc2VlLiBUaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0JiMzOTtzIHdpdGhpbiBhIG5ldHdvcmsgZHJpdmVyIC0gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIEl0JiMzOTtzIHRoZSBgdmlydGlvX25ldGAgZHJpdmVyLCB3aGljaCBpcyBhIGJpZyBkZWFsLiBHaXZlbiB0aGUgcHJvbWluZW5jZSBvZiBgdmlydGlvX25ldGAgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuIFRoYXQgbWFrZXMgaXQgYSBzdHJvbmcgY2FuZGlkYXRlLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY2AgaXMgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19WSVJUSU9fTkVUYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IG9uIHRoZSBjcml0aWNhbCBwYXRoLCBzbyBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBsaXZlcyBhbmQgd2hhdCBpdCBkZXBlbmRzIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1ZJUlRJT19ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfVkVUSCkgJiM0Mzs9IHZldGgub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX1ZJUlRJT19ORVQpICYjNDM7PSB2aXJ0aW9fbmV0Lm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19WWExBTikgJiM0Mzs9IHZ4bGFuL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBvZiBWaXJ0aW8gTmV0d29ya2luZyBGdW5jdGlvbmFsaXR5KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgQ09ORklHX1ZJUlRJT19ORVRgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIG9uZSB3ZSBuZWVkIHRvIHRyYWNlIGRlcGVuZGVuY2llcyBmcm9tLiBMZXQgbWUgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4uLgoKT2theSwgSSBzZWUgdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZDogYHZpcnRuZXRfc2V0X2hhc2hmbG93YCwgYHZpcnRuZXRfc2V0X3J4ZmhgLCBhbmQgYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYC4gTm93IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgaG93IGFyZSB0aGVzZSBmdW5jdGlvbnMgKnJlYWNoZWQqPyBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBJJiMzOTttIGJldHRpbmcgYSBzb2xpZCBwb3J0aW9uIG9mIG15IGluY29tZSBvbiB0aGUgZmFjdCB0aGF0IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AgaXMgZWl0aGVyIGFuIGV0aHRvb2wgb3BlcmF0aW9uLCBvciBhIG5ldGRldiBvcGVyYXRpb24uIFNhbWUgZm9yIGB2aXJ0bmV0X3NldF9yeGZoYCwgYWxtb3N0IGNlcnRhaW5seSBhbm90aGVyIGV0aHRvb2wgb3BlcmF0aW9uLCBhcyBJIHdvdWxkIGV4cGVjdCBSWCBoYXNoIHNldHRpbmdzIHRvIGJlIG1hbmFnZWQgYnkgZXRodG9vbC4gQW5kIGZpbmFsbHksIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AgZmVlbHMgbGlrZSBhIG5ldGRldiBvcGVyYXRpb24g4oCTIGZlYXR1cmVzIG9mdGVuIHRpZSBkaXJlY3RseSBpbnRvIHRoZSBuZXRkZXYgc3RydWN0dXJlLgoKQmFzaWNhbGx5LCBhbGwgdGhlc2Ugd2lsbCBoYXZlIHNvbWUgY29uZmlndXJhdGlvbiBrbm9iIG9yIG90aGVyIHRvIG1ha2UgaXQgd29yay4gSWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgdGhlcmUsIHRoZXkgd2lsbCBiZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00MjM2PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDI5Mi1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MjkzOnN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00Mjk0LVx0XHRcdFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfcnhmaF9maWVsZHMgKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU2MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB2aXJ0bmV0X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NjM3LVx0LmdldF9yeGZoX2ZpZWxkcyA9IHZpcnRuZXRfZ2V0X2hhc2hmbG93LFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjU2Mzg6XHQuc2V0X3J4ZmhfZmllbGRzID0gdmlydG5ldF9zZXRfaGFzaGZsb3csXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTYzOS1cdC5nZXRfcnhfcmluZ19jb3VudCA9IHZpcnRuZXRfZ2V0X3J4X3JpbmdfY291bnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgdHJpZ2dlcmVkIGJ5IGBldGh0b29sYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIEkgc2VlIGB2aXJ0bmV0X3NldF9yeGZoYCBsaXN0ZWQsIGFuZCBJIGtub3cgdGhhdCYjMzk7cyBhbHNvIGludm9rZWQgdGhyb3VnaCBgZXRodG9vbGAuIEludGVyZXN0aW5nLiBCdXQsIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AsIHRoYXQgb25lIGlzIGNsZWFybHkgYSBuZXRkZXYgb3BlcmF0aW9uLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIHR3by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHZpcnRuZXRfc2V0X3J4ZmhgIGFuZCBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGFyZSBpbXBsZW1lbnRlZCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gV2UgbmVlZCB0byBhc3Nlc3MgdGhlaXIgcm9sZXMgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU1MzA9c3RhdGljIGludCB2aXJ0bmV0X2dldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU1NDgtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTU0OTpzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTUwLVx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoLFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01NjE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmlydG5ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTYzNS1cdC5nZXRfcnhmaCA9IHZpcnRuZXRfZ2V0X3J4ZmgsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTYzNjpcdC5zZXRfcnhmaCA9IHZpcnRuZXRfc2V0X3J4ZmgsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTYzNy1cdC5nZXRfcnhmaF9maWVsZHMgPSB2aXJ0bmV0X2dldF9oYXNoZmxvdyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHdvdWxkIHBlcmNlaXZlIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AgZnVuY3Rpb24uIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyB0aWNraW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEl0JiMzOTtzIGRlc2lnbmVkLCBJJiMzOTttIGFzc3VtaW5nLCB0byBjb25maWd1cmUgdGhlIHNwZWNpZmljIGZlYXR1cmVzIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZS4gR2l2ZW4gdGhlIG5hbWUsIEkmIzM5O2QgZ3Vlc3MgdGhpcyBpcyBsaWtlbHkgaGFuZGxpbmcgdGhpbmdzIGxpa2Ugb2ZmbG9hZCBjYXBhYmlsaXRpZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiwgb3IgcGVyaGFwcyBldmVuIGZpbmVyLWdyYWluZWQgY29udHJvbCBvdmVyIHRoaW5ncyBsaWtlIFZMQU4gdGFnZ2luZyBvciBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcgYXQgdGhlIHZpcnR1YWwgbmV0d29yayBsZXZlbC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tPyBXaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHdvcmtmbG93IHN1cnJvdW5kaW5nIHRoZSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlIHNldHVwPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGZvciBjYWxsZXJzLCB0aGF0JiMzOTtzIGNydWNpYWwuIEkmIzM5O20gdGhpbmtpbmcsIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbCBicmluZy11cCBvZiB0aGUgdmlydHVhbCBpbnRlcmZhY2U/IE9yIGlzIGl0IG1vcmUgZHluYW1pYywgcG9zc2libHkgYmVpbmcgaW52b2tlZCBkdXJpbmcgcnVudGltZSB0byBhZGp1c3QgcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkgcGFyYW1ldGVycz8gVGhlIGFuc3dlciB3aWxsIGhlYXZpbHkgaW5mbHVlbmNlIG15IG1lbnRhbCBtb2RlbC4KClRoZSBhcmd1bWVudHMgYXJlIGtleSB0b28uIFdoYXQga2luZCBvZiBmZWF0dXJlIGZsYWdzIG9yIGJpdG1hc2tzIGFyZSBwYXNzZWQgaW4/IEFyZSB0aGV5IHN0YW5kYXJkaXplZCBhY3Jvc3MgZGlmZmVyZW50IGh5cGVydmlzb3IgcGxhdGZvcm1zLCBvciBpcyB0aGVyZSBzb21lIGFic3RyYWN0aW9uIGxheWVyIGludm9sdmVkPyBBbnkgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmtzLCBsaWtlIG5lZWRpbmcgc3BlY2lmaWMgcmVnaXN0ZXIgc2V0dGluZ3MgZm9yIGEgcGFydGljdWxhciBOSUMsIEkgc2hvdWxkIHByZXBhcmUgbXlzZWxmIGZvci4gSSBob3BlIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCEKCkkmIzM5O2xsIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBlcnJvciBoYW5kbGluZy4gQSBwb29ybHkgd3JpdHRlbiBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGNhbiBpbnRyb2R1Y2Ugc2lnbmlmaWNhbnQgaW5zdGFiaWxpdHkuIEkmIzM5O20gZXhwZWN0aW5nIGNoZWNrcyBmb3IgaW52YWxpZCBmZWF0dXJlIGNvbWJpbmF0aW9ucywgcG90ZW50aWFsIHJlc291cmNlIGNvbnRlbnRpb24sIGFuZCBob3cgaXQgaGFuZGxlcyB0cmFuc2llbnQgZmFpbHVyZXMuIElzIHRoZXJlIGFueSByZXRyeSBsb2dpYz8gQXJlIHRoZSBmZWF0dXJlIGNoYW5nZXMgYXRvbWljPyBJZiBub3QsIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgZ29pbmcgdG8gcmVhciB0aGVpciB1Z2x5IGhlYWQgc29tZXdoZXJlLgoKRmluYWxseSwgSSYjMzk7bGwgYmUgY3VyaW91cyBhYm91dCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEZlYXR1cmUgdG9nZ2xlcyBoYXZlIGEga25hY2sgZm9yIGltcGFjdGluZyBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBpZiB0aGV5IGludm9sdmUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgcGFja2V0IHByb2Nlc3NpbmcgcGF0aC4gQXJlIGFueSBzdGF0aXN0aWNzIGJlaW5nIGNvbGxlY3RlZD8gQXJlIHRoZXJlIGFueSBiZW5jaG1hcmtzIHJlbGF0ZWQgdG8gdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBvZiB0aGUgdG9nZ2xlcz8gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gYmFsYW5jZSBmdW5jdGlvbmFsaXR5IHdpdGggZWZmaWNpZW5jeSwgc28gSSBoYXZlIHRvIHNjcnV0aW5pemUgdGhlIGZ1bmN0aW9uLiBPa2F5LCBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X2ZlYXR1cmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02MTU4PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY2hhciAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02MTczLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjYxNzQ6c3RhdGljIGludCB2aXJ0bmV0X3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYxNzUtXHRcdFx0XHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NjI3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZpcnRuZXRfbmV0ZGV2ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02Mjg2LVx0Lm5kb19nZXRfcGh5c19wb3J0X25hbWVcdD0gdmlydG5ldF9nZXRfcGh5c19wb3J0X25hbWUsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NjI4NzpcdC5uZG9fc2V0X2ZlYXR1cmVzXHQ9IHZpcnRuZXRfc2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYyODgtXHQubmRvX3R4X3RpbWVvdXRcdFx0PSB2aXJ0bmV0X3R4X3RpbWVvdXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMTkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmlydGlvLU5ldCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3Npbmcgc29tZSBmYWlsdXJlIHNjZW5hcmlvcyB3aXRoaW4gYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCwgc3BlY2lmaWNhbGx5IGFkZGluZyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoYXTigJlzIGEgZ29vZCBzdGFydC4gSSBjYW4gaW1tZWRpYXRlbHkgc2VlIHRoZSB2YWx1ZSBoZXJlIC0gZXZlcnl0aGluZyBtZW50aW9uZWQgaXMgYWNjZXNzaWJsZSBhbmQgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgd2hpY2ggbWFrZXMgbXkgam9iIGVhc2llci4gVGhhdCBtZWFucyBpdOKAmXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgdG8gcHJvYmUgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLgoKTXkgaW5pdGlhbCB0aG91Z2h0PyBUaGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIGFkZGluZyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24gdG8gYSBjb21wb25lbnQgZGVhbGluZyB3aXRoIFJTUyBjb25maWd1cmF0aW9uIHBvaW50cyB0byBhIHBvdGVudGlhbCBmb3Igc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIHN0YXRlIHRyYW5zaXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGRldmVsb3Agc29tZSBmb2N1c2VkIGZ1enppbmcgY2FtcGFpZ25zIGFyb3VuZCBpdC4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlc2Ugc3ltYm9sczogYHZpcnRuZXRfc2V0X2hhc2hmbG93YCwgYHZpcnRuZXRfc2V0X3J4ZmhgLCBhbmQgYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGtub2JzIGJlaW5nIHR3aXN0ZWQsIHNvIGFueSBpc3N1ZXMgYXJlIGxpa2VseSB0byBzdXJmYWNlIHRoZXJlLgoKTGV0IG1lIGFsc28gY29uZmlybSB0aGF0IHRoZSBgVklSVElPX05FVGAgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkLiBTaW5jZSB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCwgSeKAmWxsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSBhbmQgbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucyBhY3RpdmUuIFRoaXMgd2lsbCBuZWVkIHRvIGJlIGNoZWNrZWQgYW5kIGFkZHJlc3NlZCwgYmVmb3JlIEkgY2FuIGNvbmR1Y3QgYSBwcm9wZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRJT19ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDItXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0Mzpjb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgVklSVElPX05FVGA6CgoqKkRlY29uc3RydWN0aW5nIFZJUlRJT19ORVQmIzM5O3MgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgVklSVElPX05FVGAgcmVsaWVzIG9uLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBJdCYjMzk7cyBhIG5ldHdvcmsgaW50ZXJmYWNlLCBzbyBJJiMzOTttIGFzc3VtaW5nIGl0IHNpdHMgYXRvcCB0aGUgVklSVElPIGxheWVyIGl0c2VsZi4gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtub3cgaG93IGRlZXBseSBpbnRlZ3JhdGVkIGl0IGlzIHdpdGggdGhlIFZJUlRJTyBjb3JlLCBhcmUgdGhlcmUgc3BlY2lmaWMgdmlydHF1ZXVlcyBvciBmZWF0dXJlcyBpdCYjMzk7cyB1c2luZz8gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgaWYgaXQgaGFzIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gT3IgaWYgdGhlcmUmIzM5O3MgYW55IGtlcm5lbC1zcGVjaWZpYyBuZXR3b3JrIHN0YWNrIGludGVyYWN0aW9uLCB3aGljaCBJJiMzOTtsbCBiZSBsb29raW5nIGludG8uIFRoaXMgaXMgZnVuZGFtZW50YWwga25vd2xlZGdlIHRvIHVuZGVyc3RhbmQgaG93IG11Y2ggZWZmb3J0IGl0IHdvdWxkIGJlIHRvIHBvcnQgdG8gYSBuZXcgcGxhdGZvcm0uIFRoZSBWSVJUSU8gc3BlY2lmaWNhdGlvbiB3aWxsIGJlIG15IGJpYmxlIGhlcmUsIG9mIGNvdXJzZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHN0YW5kYXJkIHRvIGtub3cgdGhhdC4gQXJlIHRoZXJlIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgYmUgYSBoZWFkYWNoZSBkb3duIHRoZSBsaW5lPyBGaW5hbGx5LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IGBWSVJUSU9fTkVUYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBUaGlua2luZyBhYm91dCB0aGluZ3MgbGlrZSB0aGUgbmV0d29yayBzdGFjayBpbnRlZ3JhdGlvbiwgcXVldWUgbWFuYWdlbWVudCwgYW5kIHRoZSBvdmVyYWxsIGRldmljZSBsaWZlY3ljbGUgd2lsbCBiZSBjcnVjaWFsIGZvciBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQzOlx0Y29uZmlnIFZJUlRJT19ORVRcbiA0NDQ6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBuZXR3b3JrIGRyaXZlclwmIzM0O1xuIDQ0NTpcdFx0ZGVwZW5kcyBvbiBWSVJUSU9cbiA0NDY6XHRcdHNlbGVjdCBORVRfRkFJTE9WRVJcbiA0NDc6XHRcdHNlbGVjdCBESU1MSUJcbiA0NDg6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiA0NDk6XHRcdGhlbHBcbiA0NTA6XHRcdCAgVGhpcyBpcyB0aGUgdmlydHVhbCBuZXR3b3JrIGRyaXZlciBmb3IgdmlydGlvLiAgSXQgY2FuIGJlIHVzZWQgd2l0aFxuIDQ1MTpcdFx0ICBRRU1VIGJhc2VkIFZNTXMgKGxpa2UgS1ZNIG9yIFhlbikuICBTYXkgWSBvciBNLlxuIDQ1MjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDEzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFZpcnRpbyBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBhcHByb2FjaCB0aGlzLCBhbmQgaXQgcmVhbGx5IGhpbmdlcyBvbiBgVklSVElPYC4gVGhhdCYjMzk7cyB0aGUgY29yZS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBWSVJUSU9fTkVUYCBhbmQsIGJ5IGV4dGVuc2lvbiwganVzdCBgVklSVElPYCwgYXJlIGVuYWJsZWQuIFR5cGljYWxseSwgaWYgSSYjMzk7bSBkb2luZyB0ZXN0aW5nIHdpdGhpbiBRRU1VLCBJJiMzOTtsbCBhbHNvIG5lZWQgYFZJUlRJT19QQ0lgIHRvIGVuc3VyZSB0aGUgdmlydGlvIGRldmljZXMgYXJlIHByb3Blcmx5IHNldCB1cCwgYnV0IGZvciB0aGUgbW9tZW50LCBgVklSVElPX05FVGAgaXMgdGhlIHByaW1hcnkgY29uY2Vybi4gSSYjMzk7bSBnb2luZyB0byBkZWZpbml0ZWx5IGluY2x1ZGUgdGhhdCBvbmUuCgpOb3csIGEgc2Vjb25kYXJ5IGNvbnNpZGVyYXRpb24uIEkmIzM5O20gYWxzbyB3b25kZXJpbmcgaWYgYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCBpcyB3b3J0aCBmb2N1c2luZyBvbi4gSXQmIzM5O3MgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIHNvIHRoYXQgZ2l2ZXMgbWUgcGF1c2UuIEl0IG1pZ2h0IGJlIHN0YXRpYyB3aGljaCBjb3VsZCBtZWFuIGxlc3MgYnJvYWQgc2NvcGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBpbnRvIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zNjkwPXN0YXRpYyB2b2lkIHZpcnRuZXRfYWNrX2xpbmtfYW5ub3VuY2Uoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM2OTYtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MzY5NzpzdGF0aWMgYm9vbCB2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZChzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzY5OC1cbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MzcxMT1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X3F1ZXVlcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwgdTE2IHF1ZXVlX3BhaXJzKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNzQwLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM3NDE6XHRcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzc0Mi1cdFx0XHQvKiByZXN0b3JlIGN0cmxfcnNzIGlmIGNvbW1pdF9yc3NfY29tbWFuZCBmYWlsZWQgKi9cbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDEyNz1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MTk3LVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjQxOTg6c3RhdGljIGJvb2wgdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDE5OS17XG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTQyOTM9c3RhdGljIGludCB2aXJ0bmV0X3NldF9oYXNoZmxvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MzU0LVx0XHRpZiAodmktXHUwMDNlZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjQzNTU6XHRcdFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MzU2LVx0XHRcdFx0dmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01NTQ5PXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTkyLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjU1OTM6XHRpZiAodXBkYXRlIFx1MDAyNlx1MDAyNiAhdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTU5NC1cdFx0aWYgKG9sZF9yc3NfaGRyKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02MTc0PXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNjIwNC1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo2MjA1Olx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYyMDYtXHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gaGFzaF90eXBlcztcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Njc2OT1zdGF0aWMgaW50IHZpcnRuZXRfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTcwNzQtXHRpZiAodmktXHUwMDNlaGFzX3JzcyB8fCB2aS1cdTAwM2VoYXNfcnNzX2hhc2hfcmVwb3J0KSB7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NzA3NTpcdFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy03MDc2LVx0XHRcdGRldl93YXJuKFx1MDAyNnZkZXYtXHUwMDNlZGV2LCBcJiMzNDtSU1MgZGlzYWJsZWQgYmVjYXVzZSBjb21taXR0aW5nIGZhaWxlZC5cXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjIwCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVmlydGlvLU5ldCBQYXRjaCoqCgpPa2F5LCB0aGlzIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBpbml0aWFsIGJpdCBpcyBqdXN0IGJvaWxlcnBsYXRlLCBzbyBJJiMzOTtsbCBza2lwIG92ZXIgdGhhdCBzdGF0aWMgY29udGV4dC4gTXkgY29yZSBpbnRlcmVzdCBpcyBpbiB0aGUgZnVuY3Rpb25zIGJlaW5nIGFkZHJlc3NlZCwgc3BlY2lmaWNhbGx5OiBgdmlydG5ldF9zZXRfaGFzaGZsb3dgLCBgdmlydG5ldF9zZXRfcnhmaGAsIGFuZCBgdmlydG5ldF9zZXRfZmVhdHVyZXNgLiBUaG9zZSBhcmUgdGhlIGtleSB0YXJnZXRzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBmb2N1c2VkIG9uIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIuIEl0JiMzOTtzIHRpZ2h0ZW5pbmcgdXAgaG93IHRoZSBkcml2ZXIgcmVzcG9uZHMgd2hlbiBjb25maWd1cmluZyBSU1MgYW5kIG90aGVyIGZlYXR1cmVzIHZpYSBldGh0b29sIGFuZCBuZXRkZXYgb3BlcmF0aW9ucy4gVGhlIHJlYWwgbWVhdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZS4gV2UmIzM5O3JlIHRhbGtpbmcgc3RhbmRhcmQgbmV0bGluayBhbmQgZXRodG9vbCBpbnRlcmZhY2VzLCB3aGljaCBtYWtlcyB0ZXN0aW5nIGFuZCB2YWxpZGF0aW9uIGEgbG90IGVhc2llciwgZXNwZWNpYWxseSBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgdmlydGlvX25ldCBpcyBzbyBjb21tb24gYW5kIHdlbGwtdGVzdGVkLiBTbywgdGhpcyBpcyBwb3RlbnRpYWxseSBmaXhpbmcgYSBwcmV0dHkgY3JpdGljYWwgYnVnIGFmZmVjdGluZyBhIHdpZGVseSB1c2VkIGRyaXZlci4KCkkmIzM5O20gbWVudGFsbHkgY3JlYXRpbmcgYSBjb25jZXB0dWFsICYjMzQ7c2V0LXJlc3VsdHMmIzM0OyB2YXJpYWJsZSwgYXNzdW1pbmcgdGhhdCBpdCBpcyB1c2VkIHRvIGhvbGQgb3IgcmV0dXJuIGVycm9yIGNvZGVzIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGJlaW5nIGFwcGxpZWQuIFRoYXQgaXMgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVElPX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAgICYjMzQ7dmlydG5ldF9zZXRfZmVhdHVyZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVElPX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAgICYjMzQ7dmlydG5ldF9zZXRfZmVhdHVyZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjA1Ljc0Nzg4NDUzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODEwNzc4NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0bmV0X3NldF9oYXNoZmxvd1wiLFxuICAgIFwidmlydG5ldF9zZXRfcnhmaFwiLFxuICAgIFwidmlydG5ldF9zZXRfZmVhdHVyZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24gbG9naWMgaW4gdGhlIHZpcnRpb19uZXQgZHJpdmVyIHdoZW4gc2V0dGluZyBSU1MgY29uZmlndXJhdGlvbnMgYW5kIGZlYXR1cmVzIHZpYSBldGh0b29sIGFuZCBuZXRkZXYgb3BzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3RhbmRhcmQgbmV0bGluay9ldGh0b29sIGludGVyZmFjZXMsIGFuZCB2aXJ0aW9fbmV0IGlzIGhlYXZpbHkgdXNlZCBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTowNS43NDc4OTAwMjRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NzgzOTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1Yjc4NzU4NmQ5OGMxMmE5NmFhNDg4ZWJjZjk3MzQ2NGQ2ZTdhNDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAwODoyNTowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcXG5pbmRleCAzZTJhNTg3NmM2YzhjLi5jY2Q5NjMxNWExNDU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xcbkBAIC00Mjk1LDYgKzQyOTUsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4ge1xcbiBcXHRzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHUzMiBvbGRfaGFzaHR5cGVzID0gdmktXFx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkO1xcbiBcXHR1MzIgbmV3X2hhc2h0eXBlcyA9IHZpLVxcdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZDtcXG4gXFx0Ym9vbCBpc19kaXNhYmxlID0gaW5mby1cXHUwMDNlZGF0YSBcXHUwMDI2IFJYSF9ESVNDQVJEO1xcbiBcXHRib29sIGlzX2w0ID0gaW5mby1cXHUwMDNlZGF0YSA9PSAoUlhIX0lQX1NSQyB8IFJYSF9JUF9EU1QgfCBSWEhfTDRfQl8wXzEgfCBSWEhfTDRfQl8yXzMpO1xcbkBAIC00MzUwLDkgKzQzNTEsMTMgQEAgc3RhdGljIGludCB2aXJ0bmV0X3NldF9oYXNoZmxvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAobmV3X2hhc2h0eXBlcyAhPSB2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpIHtcXG4gXFx0XFx0dmktXFx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkID0gbmV3X2hhc2h0eXBlcztcXG4gXFx0XFx0dmktXFx1MDAzZXJzc19oZHItXFx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xcbi1cXHRcXHRpZiAodmktXFx1MDAzZWRldi1cXHUwMDNlZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1JYSEFTSClcXG4tXFx0XFx0XFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpXFxuK1xcdFxcdGlmICh2aS1cXHUwMDNlZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XFxuK1xcdFxcdFxcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XFxuK1xcdFxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZCA9IG9sZF9oYXNodHlwZXM7XFxuK1xcdFxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGRyLVxcdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIob2xkX2hhc2h0eXBlcyk7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTU1NDYsNiArNTU1MSw4IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuIFxcdHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFx0c3RydWN0IHZpcnRpb19uZXRfcnNzX2NvbmZpZ19oZHIgKm9sZF9yc3NfaGRyID0gTlVMTDtcXG4rXFx0dTggb2xkX3Jzc19rZXlbTkVUREVWX1JTU19LRVlfTEVOXTtcXG4gXFx0Ym9vbCB1cGRhdGUgPSBmYWxzZTtcXG4gXFx0aW50IGk7XFxuIFxcbkBAIC01NTUzLDE0ICs1NTYwLDggQEAgc3RhdGljIGludCB2aXJ0bmV0X3NldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdCAgICByeGZoLVxcdTAwM2VoZnVuYyAhPSBFVEhfUlNTX0hBU0hfVE9QKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbi1cXHRpZiAocnhmaC1cXHUwMDNlaW5kaXIpIHtcXG4tXFx0XFx0aWYgKCF2aS1cXHUwMDNlaGFzX3JzcylcXG4tXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi1cXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2Vyc3NfaW5kaXJfdGFibGVfc2l6ZTsgKytpKVxcbi1cXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hkci1cXHUwMDNlaW5kaXJlY3Rpb25fdGFibGVbaV0gPSBjcHVfdG9fbGUxNihyeGZoLVxcdTAwM2VpbmRpcltpXSk7XFxuLVxcdFxcdHVwZGF0ZSA9IHRydWU7XFxuLVxcdH1cXG4rXFx0aWYgKHJ4ZmgtXFx1MDAzZWluZGlyIFxcdTAwMjZcXHUwMDI2ICF2aS1cXHUwMDNlaGFzX3JzcylcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4gXFx0aWYgKHJ4ZmgtXFx1MDAzZWtleSkge1xcbiBcXHRcXHQvKiBJZiBlaXRoZXIgX0ZfSEFTSF9SRVBPUlQgb3IgX0ZfUlNTIGFyZSBuZWdvdGlhdGVkLCB0aGVcXG5AQCAtNTU2OSwxMyArNTU3MCwzNiBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghdmktXFx1MDAzZWhhc19yc3MgXFx1MDAyNlxcdTAwMjYgIXZpLVxcdTAwM2VoYXNfcnNzX2hhc2hfcmVwb3J0KVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyeGZoLVxcdTAwM2VpbmRpcikge1xcbitcXHRcXHRvbGRfcnNzX2hkciA9IGttZW1kdXAodmktXFx1MDAzZXJzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgR0ZQX0tFUk5FTCk7XFxuK1xcdFxcdGlmICghb2xkX3Jzc19oZHIpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2Vyc3NfaW5kaXJfdGFibGVfc2l6ZTsgKytpKVxcbitcXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hkci1cXHUwMDNlaW5kaXJlY3Rpb25fdGFibGVbaV0gPVxcbitcXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihyeGZoLVxcdTAwM2VpbmRpcltpXSk7XFxuK1xcdFxcdHVwZGF0ZSA9IHRydWU7XFxuK1xcdH1cXG4gXFxuK1xcdGlmIChyeGZoLVxcdTAwM2VrZXkpIHtcXG4rXFx0XFx0bWVtY3B5KG9sZF9yc3Nfa2V5LCB2aS1cXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIHZpLVxcdTAwM2Vyc3Nfa2V5X3NpemUpO1xcbiBcXHRcXHRtZW1jcHkodmktXFx1MDAzZXJzc19oYXNoX2tleV9kYXRhLCByeGZoLVxcdTAwM2VrZXksIHZpLVxcdTAwM2Vyc3Nfa2V5X3NpemUpO1xcbiBcXHRcXHR1cGRhdGUgPSB0cnVlO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAodXBkYXRlKVxcbi1cXHRcXHR2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSk7XFxuK1xcdGlmICh1cGRhdGUgXFx1MDAyNlxcdTAwMjYgIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbitcXHRcXHRpZiAob2xkX3Jzc19oZHIpXFxuK1xcdFxcdFxcdG1lbWNweSh2aS1cXHUwMDNlcnNzX2hkciwgb2xkX3Jzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSk7XFxuK1xcdFxcdGlmIChyeGZoLVxcdTAwM2VrZXkpXFxuK1xcdFxcdFxcdG1lbWNweSh2aS1cXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIG9sZF9yc3Nfa2V5LCB2aS1cXHUwMDNlcnNzX2tleV9zaXplKTtcXG4rXFx0XFx0a2ZyZWUob2xkX3Jzc19oZHIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0a2ZyZWUob2xkX3Jzc19oZHIpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNjE3MSwxMyArNjE5NSwxNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdH1cXG4gXFxuIFxcdGlmICgoZGV2LVxcdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzKSBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XFxuK1xcdFxcdF9fbGUzMiBoYXNoX3R5cGVzID0gdmktXFx1MDAzZXJzc19oZHItXFx1MDAzZWhhc2hfdHlwZXM7XFxuK1xcbiBcXHRcXHRpZiAoZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1JYSEFTSClcXG4gXFx0XFx0XFx0dmktXFx1MDAzZXJzc19oZHItXFx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGRyLVxcdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIoVklSVElPX05FVF9IQVNIX1JFUE9SVF9OT05FKTtcXG4gXFxuLVxcdFxcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKVxcbitcXHRcXHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbitcXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hkci1cXHUwMDNlaGFzaF90eXBlcyA9IGhhc2hfdHlwZXM7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTowNi4xNDY0MjQxNDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozODQxMjIzMDQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydG5ldF9zZXRfaGFzaGZsb3dcIixcbiAgICBcInZpcnRuZXRfc2V0X3J4ZmhcIixcbiAgICBcInZpcnRuZXRfc2V0X2ZlYXR1cmVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDViNzg3NTg2ZDk4YzEyYTk2YWE0ODhlYmNmOTczNDY0ZDZlN2E0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDg6MjU6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbmluZGV4IDNlMmE1ODc2YzZjOGMuLmNjZDk2MzE1YTE0NTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xuQEAgLTQyOTUsNiArNDI5NSw3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7XG4rXHR1MzIgb2xkX2hhc2h0eXBlcyA9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkO1xuIFx0dTMyIG5ld19oYXNodHlwZXMgPSB2aS1cdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZDtcbiBcdGJvb2wgaXNfZGlzYWJsZSA9IGluZm8tXHUwMDNlZGF0YSBcdTAwMjYgUlhIX0RJU0NBUkQ7XG4gXHRib29sIGlzX2w0ID0gaW5mby1cdTAwM2VkYXRhID09IChSWEhfSVBfU1JDIHwgUlhIX0lQX0RTVCB8IFJYSF9MNF9CXzBfMSB8IFJYSF9MNF9CXzJfMyk7XG5AQCAtNDM1MCw5ICs0MzUxLDEzIEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChuZXdfaGFzaHR5cGVzICE9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkKSB7XG4gXHRcdHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkID0gbmV3X2hhc2h0eXBlcztcbiBcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xuLVx0XHRpZiAodmktXHUwMDNlZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbi1cdFx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbitcdFx0aWYgKHZpLVx1MDAzZWRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpIHtcbitcdFx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuK1x0XHRcdFx0dmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xuK1x0XHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIob2xkX2hhc2h0eXBlcyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTU1NDYsNiArNTU1MSw4IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHZpcnRpb19uZXRfcnNzX2NvbmZpZ19oZHIgKm9sZF9yc3NfaGRyID0gTlVMTDtcbitcdHU4IG9sZF9yc3Nfa2V5W05FVERFVl9SU1NfS0VZX0xFTl07XG4gXHRib29sIHVwZGF0ZSA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG5AQCAtNTU1MywxNCArNTU2MCw4IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0ICAgIHJ4ZmgtXHUwMDNlaGZ1bmMgIT0gRVRIX1JTU19IQVNIX1RPUClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKHJ4ZmgtXHUwMDNlaW5kaXIpIHtcbi1cdFx0aWYgKCF2aS1cdTAwM2VoYXNfcnNzKVxuLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi1cbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmktXHUwMDNlcnNzX2luZGlyX3RhYmxlX3NpemU7ICsraSlcbi1cdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWluZGlyZWN0aW9uX3RhYmxlW2ldID0gY3B1X3RvX2xlMTYocnhmaC1cdTAwM2VpbmRpcltpXSk7XG4tXHRcdHVwZGF0ZSA9IHRydWU7XG4tXHR9XG4rXHRpZiAocnhmaC1cdTAwM2VpbmRpciBcdTAwMjZcdTAwMjYgIXZpLVx1MDAzZWhhc19yc3MpXG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmIChyeGZoLVx1MDAzZWtleSkge1xuIFx0XHQvKiBJZiBlaXRoZXIgX0ZfSEFTSF9SRVBPUlQgb3IgX0ZfUlNTIGFyZSBuZWdvdGlhdGVkLCB0aGVcbkBAIC01NTY5LDEzICs1NTcwLDM2IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgKi9cbiBcdFx0aWYgKCF2aS1cdTAwM2VoYXNfcnNzIFx1MDAyNlx1MDAyNiAhdmktXHUwMDNlaGFzX3Jzc19oYXNoX3JlcG9ydClcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXG4rXHRpZiAocnhmaC1cdTAwM2VpbmRpcikge1xuK1x0XHRvbGRfcnNzX2hkciA9IGttZW1kdXAodmktXHUwMDNlcnNzX2hkciwgdmlydG5ldF9yc3NfaGRyX3NpemUodmkpLFxuK1x0XHRcdFx0ICAgICAgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghb2xkX3Jzc19oZHIpXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZXJzc19pbmRpcl90YWJsZV9zaXplOyArK2kpXG4rXHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VpbmRpcmVjdGlvbl90YWJsZVtpXSA9XG4rXHRcdFx0XHRjcHVfdG9fbGUxNihyeGZoLVx1MDAzZWluZGlyW2ldKTtcbitcdFx0dXBkYXRlID0gdHJ1ZTtcbitcdH1cbiBcbitcdGlmIChyeGZoLVx1MDAzZWtleSkge1xuK1x0XHRtZW1jcHkob2xkX3Jzc19rZXksIHZpLVx1MDAzZXJzc19oYXNoX2tleV9kYXRhLCB2aS1cdTAwM2Vyc3Nfa2V5X3NpemUpO1xuIFx0XHRtZW1jcHkodmktXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIHJ4ZmgtXHUwMDNla2V5LCB2aS1cdTAwM2Vyc3Nfa2V5X3NpemUpO1xuIFx0XHR1cGRhdGUgPSB0cnVlO1xuIFx0fVxuIFxuLVx0aWYgKHVwZGF0ZSlcbi1cdFx0dmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpO1xuK1x0aWYgKHVwZGF0ZSBcdTAwMjZcdTAwMjYgIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuK1x0XHRpZiAob2xkX3Jzc19oZHIpXG4rXHRcdFx0bWVtY3B5KHZpLVx1MDAzZXJzc19oZHIsIG9sZF9yc3NfaGRyLCB2aXJ0bmV0X3Jzc19oZHJfc2l6ZSh2aSkpO1xuK1x0XHRpZiAocnhmaC1cdTAwM2VrZXkpXG4rXHRcdFx0bWVtY3B5KHZpLVx1MDAzZXJzc19oYXNoX2tleV9kYXRhLCBvbGRfcnNzX2tleSwgdmktXHUwMDNlcnNzX2tleV9zaXplKTtcbitcdFx0a2ZyZWUob2xkX3Jzc19oZHIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdGtmcmVlKG9sZF9yc3NfaGRyKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC02MTcxLDEzICs2MTk1LDE3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdH1cbiBcbiBcdGlmICgoZGV2LVx1MDAzZWZlYXR1cmVzIF4gZmVhdHVyZXMpIFx1MDAyNiBORVRJRl9GX1JYSEFTSCkge1xuK1x0XHRfX2xlMzIgaGFzaF90eXBlcyA9IHZpLVx1MDAzZXJzc19oZHItXHUwMDNlaGFzaF90eXBlcztcbitcbiBcdFx0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZCk7XG4gXHRcdGVsc2VcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMihWSVJUSU9fTkVUX0hBU0hfUkVQT1JUX05PTkUpO1xuIFxuLVx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbitcdFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcbitcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBoYXNoX3R5cGVzO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjA2LjE0NjQyNTYwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDMzMTgwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvdmlydGlvX25ldC5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHRvdWNoaW5nIGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIFRoZSBrZXkgaGVyZSwgdGhvdWdoLCBpcyB0aGUgYWRkaXRpb24gb2YgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIGB2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSlgLiBJdCBzb3VuZHMgbGlrZSB0aGV5J3JlIHRyeWluZyB0byByb2xsIGJhY2sgdGhlIGNoYW5nZXMgaWYgdGhhdCBjb21tYW5kIGZhaWxzLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyB3b3J0aCBmdXp6aW5nP1wiIExldCdzIHNlZS4gVGhpcyAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCdzIHdpdGhpbiBhIG5ldHdvcmsgZHJpdmVyIC0gdGhhdCdzIGEgZ29vZCBzdGFydC4gSXQncyB0aGUgYHZpcnRpb19uZXRgIGRyaXZlciwgd2hpY2ggaXMgYSBiaWcgZGVhbC4gR2l2ZW4gdGhlIHByb21pbmVuY2Ugb2YgYHZpcnRpb19uZXRgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuIFRoYXQgbWFrZXMgaXQgYSBzdHJvbmcgY2FuZGlkYXRlLlxuXG5OZXh0IHN0ZXA6IGxldCdzIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNgIGlzIGNvbXBpbGVkIGJhc2VkIG9uIGBDT05GSUdfVklSVElPX05FVGAuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0J3MgcG90ZW50aWFsbHkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIHNvIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0IGxpdmVzIGFuZCB3aGF0IGl0IGRlcGVuZHMgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNToxMS4wODk3NDU3MjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMzY0MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZJUlRJT19ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1ZFVEgpICs9IHZldGgub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19WSVJUSU9fTkVUKSArPSB2aXJ0aW9fbmV0Lm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNi1vYmotJChDT05GSUdfVlhMQU4pICs9IHZ4bGFuL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNToxMS4xOTAxMTY4MTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkyMjU2MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IG9mIFZpcnRpbyBOZXR3b3JraW5nIEZ1bmN0aW9uYWxpdHkqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBgQ09ORklHX1ZJUlRJT19ORVRgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQncyB0aGUgb25lIHdlIG5lZWQgdG8gdHJhY2UgZGVwZW5kZW5jaWVzIGZyb20uIExldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLi4uXG5cbk9rYXksIEkgc2VlIHRoZSBjb3JlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQ6IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIE5vdyB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIGhvdyBhcmUgdGhlc2UgZnVuY3Rpb25zICpyZWFjaGVkKj8gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgSSdtIGJldHRpbmcgYSBzb2xpZCBwb3J0aW9uIG9mIG15IGluY29tZSBvbiB0aGUgZmFjdCB0aGF0IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AgaXMgZWl0aGVyIGFuIGV0aHRvb2wgb3BlcmF0aW9uLCBvciBhIG5ldGRldiBvcGVyYXRpb24uIFNhbWUgZm9yIGB2aXJ0bmV0X3NldF9yeGZoYCwgYWxtb3N0IGNlcnRhaW5seSBhbm90aGVyIGV0aHRvb2wgb3BlcmF0aW9uLCBhcyBJIHdvdWxkIGV4cGVjdCBSWCBoYXNoIHNldHRpbmdzIHRvIGJlIG1hbmFnZWQgYnkgZXRodG9vbC4gQW5kIGZpbmFsbHksIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AgZmVlbHMgbGlrZSBhIG5ldGRldiBvcGVyYXRpb24g4oCTIGZlYXR1cmVzIG9mdGVuIHRpZSBkaXJlY3RseSBpbnRvIHRoZSBuZXRkZXYgc3RydWN0dXJlLlxuXG5CYXNpY2FsbHksIGFsbCB0aGVzZSB3aWxsIGhhdmUgc29tZSBjb25maWd1cmF0aW9uIGtub2Igb3Igb3RoZXIgdG8gbWFrZSBpdCB3b3JrLiBJZiB0aGUgY29uZmlndXJhdGlvbiBpcyB0aGVyZSwgdGhleSB3aWxsIGJlIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTUuNDgyMzc2MjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMDYzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydG5ldF9zZXRfaGFzaGZsb3dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00MjM2PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MjkyLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MjkzOnN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDI5NC1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9yeGZoX2ZpZWxkcyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01NjE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmlydG5ldF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NjM3LVxcdC5nZXRfcnhmaF9maWVsZHMgPSB2aXJ0bmV0X2dldF9oYXNoZmxvdyxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTYzODpcXHQuc2V0X3J4ZmhfZmllbGRzID0gdmlydG5ldF9zZXRfaGFzaGZsb3csXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU2MzktXFx0LmdldF9yeF9yaW5nX2NvdW50ID0gdmlydG5ldF9nZXRfcnhfcmluZ19jb3VudCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTUuNTI5NDkxNTk5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNDgwNTY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBDb25maWd1cmF0aW9uIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggbmV0d29yayBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyB0cmlnZ2VyZWQgYnkgYGV0aHRvb2xgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBJIHNlZSBgdmlydG5ldF9zZXRfcnhmaGAgbGlzdGVkLCBhbmQgSSBrbm93IHRoYXQncyBhbHNvIGludm9rZWQgdGhyb3VnaCBgZXRodG9vbGAuIEludGVyZXN0aW5nLiBCdXQsIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AsIHRoYXQgb25lIGlzIGNsZWFybHkgYSBuZXRkZXYgb3BlcmF0aW9uLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIHR3by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHZpcnRuZXRfc2V0X3J4ZmhgIGFuZCBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGFyZSBpbXBsZW1lbnRlZCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gV2UgbmVlZCB0byBhc3Nlc3MgdGhlaXIgcm9sZXMgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTguNzU0Mjk5NjI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODg1ODk0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0bmV0X3NldF9yeGZoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTUzMD1zdGF0aWMgaW50IHZpcnRuZXRfZ2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTQ4LVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo1NTQ5OnN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTUwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoLFxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU2MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB2aXJ0bmV0X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU2MzUtXFx0LmdldF9yeGZoID0gdmlydG5ldF9nZXRfcnhmaCxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTYzNjpcXHQuc2V0X3J4ZmggPSB2aXJ0bmV0X3NldF9yeGZoLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NjM3LVxcdC5nZXRfcnhmaF9maWVsZHMgPSB2aXJ0bmV0X2dldF9oYXNoZmxvdyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTkuMDIzMTYzMDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE1ODUwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB3b3VsZCBwZXJjZWl2ZSB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCdzIGRlc2lnbmVkLCBJJ20gYXNzdW1pbmcsIHRvIGNvbmZpZ3VyZSB0aGUgc3BlY2lmaWMgZmVhdHVyZXMgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlLiBHaXZlbiB0aGUgbmFtZSwgSSdkIGd1ZXNzIHRoaXMgaXMgbGlrZWx5IGhhbmRsaW5nIHRoaW5ncyBsaWtlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIG9yIHBlcmhhcHMgZXZlbiBmaW5lci1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGluZ3MgbGlrZSBWTEFOIHRhZ2dpbmcgb3IgTUFDIGFkZHJlc3MgZmlsdGVyaW5nIGF0IHRoZSB2aXJ0dWFsIG5ldHdvcmsgbGV2ZWwuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tPyBXaGF0J3MgdGhlIHR5cGljYWwgd29ya2Zsb3cgc3Vycm91bmRpbmcgdGhlIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2Ugc2V0dXA/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgY2FsbGVycywgdGhhdCdzIGNydWNpYWwuIEknbSB0aGlua2luZywgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIGJyaW5nLXVwIG9mIHRoZSB2aXJ0dWFsIGludGVyZmFjZT8gT3IgaXMgaXQgbW9yZSBkeW5hbWljLCBwb3NzaWJseSBiZWluZyBpbnZva2VkIGR1cmluZyBydW50aW1lIHRvIGFkanVzdCBwZXJmb3JtYW5jZSBvciBzZWN1cml0eSBwYXJhbWV0ZXJzPyBUaGUgYW5zd2VyIHdpbGwgaGVhdmlseSBpbmZsdWVuY2UgbXkgbWVudGFsIG1vZGVsLlxuXG5UaGUgYXJndW1lbnRzIGFyZSBrZXkgdG9vLiBXaGF0IGtpbmQgb2YgZmVhdHVyZSBmbGFncyBvciBiaXRtYXNrcyBhcmUgcGFzc2VkIGluPyBBcmUgdGhleSBzdGFuZGFyZGl6ZWQgYWNyb3NzIGRpZmZlcmVudCBoeXBlcnZpc29yIHBsYXRmb3Jtcywgb3IgaXMgdGhlcmUgc29tZSBhYnN0cmFjdGlvbiBsYXllciBpbnZvbHZlZD8gQW55IHBsYXRmb3JtLXNwZWNpZmljIHF1aXJrcywgbGlrZSBuZWVkaW5nIHNwZWNpZmljIHJlZ2lzdGVyIHNldHRpbmdzIGZvciBhIHBhcnRpY3VsYXIgTklDLCBJIHNob3VsZCBwcmVwYXJlIG15c2VsZiBmb3IuIEkgaG9wZSBpdCdzIHdlbGwtZG9jdW1lbnRlZCFcblxuSSdsbCBhbHNvIGtlZXAgYW4gZXllIG91dCBmb3IgZXJyb3IgaGFuZGxpbmcuIEEgcG9vcmx5IHdyaXR0ZW4gYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYCBjYW4gaW50cm9kdWNlIHNpZ25pZmljYW50IGluc3RhYmlsaXR5LiBJJ20gZXhwZWN0aW5nIGNoZWNrcyBmb3IgaW52YWxpZCBmZWF0dXJlIGNvbWJpbmF0aW9ucywgcG90ZW50aWFsIHJlc291cmNlIGNvbnRlbnRpb24sIGFuZCBob3cgaXQgaGFuZGxlcyB0cmFuc2llbnQgZmFpbHVyZXMuIElzIHRoZXJlIGFueSByZXRyeSBsb2dpYz8gQXJlIHRoZSBmZWF0dXJlIGNoYW5nZXMgYXRvbWljPyBJZiBub3QsIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgZ29pbmcgdG8gcmVhciB0aGVpciB1Z2x5IGhlYWQgc29tZXdoZXJlLlxuXG5GaW5hbGx5LCBJJ2xsIGJlIGN1cmlvdXMgYWJvdXQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBGZWF0dXJlIHRvZ2dsZXMgaGF2ZSBhIGtuYWNrIGZvciBpbXBhY3RpbmcgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgaWYgdGhleSBpbnZvbHZlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIHBhY2tldCBwcm9jZXNzaW5nIHBhdGguIEFyZSBhbnkgc3RhdGlzdGljcyBiZWluZyBjb2xsZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgYmVuY2htYXJrcyByZWxhdGVkIHRvIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgdGhlIHRvZ2dsZXM/IFVsdGltYXRlbHksIHRoZSBnb2FsIGlzIHRvIGJhbGFuY2UgZnVuY3Rpb25hbGl0eSB3aXRoIGVmZmljaWVuY3ksIHNvIEkgaGF2ZSB0byBzY3J1dGluaXplIHRoZSBmdW5jdGlvbi4gT2theSwgbGV0J3MgZGlnIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjI0LjIzOTAxNTY3N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2ODQwMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydG5ldF9zZXRfZmVhdHVyZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02MTU4PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY2hhciAqYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYxNzMtXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjYxNzQ6c3RhdGljIGludCB2aXJ0bmV0X3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02MTc1LVxcdFxcdFxcdFxcdG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTYyNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2aXJ0bmV0X25ldGRldiA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02Mjg2LVxcdC5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lXFx0PSB2aXJ0bmV0X2dldF9waHlzX3BvcnRfbmFtZSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NjI4NzpcXHQubmRvX3NldF9mZWF0dXJlc1xcdD0gdmlydG5ldF9zZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYyODgtXFx0Lm5kb190eF90aW1lb3V0XFx0XFx0PSB2aXJ0bmV0X3R4X3RpbWVvdXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjI0LjI4ODcwNDAwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA0ODcyMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZpcnRpby1OZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3Npbmcgc29tZSBmYWlsdXJlIHNjZW5hcmlvcyB3aXRoaW4gYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCwgc3BlY2lmaWNhbGx5IGFkZGluZyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoYXTigJlzIGEgZ29vZCBzdGFydC4gSSBjYW4gaW1tZWRpYXRlbHkgc2VlIHRoZSB2YWx1ZSBoZXJlIC0gZXZlcnl0aGluZyBtZW50aW9uZWQgaXMgYWNjZXNzaWJsZSBhbmQgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgd2hpY2ggbWFrZXMgbXkgam9iIGVhc2llci4gVGhhdCBtZWFucyBpdOKAmXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgdG8gcHJvYmUgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5NeSBpbml0aWFsIHRob3VnaHQ/IFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSdyZSBhZGRpbmcgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIHRvIGEgY29tcG9uZW50IGRlYWxpbmcgd2l0aCBSU1MgY29uZmlndXJhdGlvbiBwb2ludHMgdG8gYSBwb3RlbnRpYWwgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5leHBlY3RlZCBzdGF0ZSB0cmFuc2l0aW9ucy4gSSdsbCBuZWVkIHRvIGRldmVsb3Agc29tZSBmb2N1c2VkIGZ1enppbmcgY2FtcGFpZ25zIGFyb3VuZCBpdC5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZXNlIHN5bWJvbHM6IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIFRob3NlIGFyZSB0aGUgY29yZSBrbm9icyBiZWluZyB0d2lzdGVkLCBzbyBhbnkgaXNzdWVzIGFyZSBsaWtlbHkgdG8gc3VyZmFjZSB0aGVyZS5cblxuTGV0IG1lIGFsc28gY29uZmlybSB0aGF0IHRoZSBgVklSVElPX05FVGAgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkLiBTaW5jZSB0aGF0J3MgdGhlIGRyaXZlciB3ZSdyZSB3b3JraW5nIHdpdGgsIEnigJlsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUgYW5kIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbnMgYWN0aXZlLiBUaGlzIHdpbGwgbmVlZCB0byBiZSBjaGVja2VkIGFuZCBhZGRyZXNzZWQsIGJlZm9yZSBJIGNhbiBjb25kdWN0IGEgcHJvcGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MjkuMTkzNTc5NTgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQyNzI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVElPX05FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Mi1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0Mzpjb25maWcgVklSVElPX05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ0LVxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gbmV0d29yayBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjI5LjIzOTAxMjEzMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAxNjcyMTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBWSVJUSU9fTkVUYDpcblxuKipEZWNvbnN0cnVjdGluZyBWSVJUSU9fTkVUJ3MgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYFZJUlRJT19ORVRgIHJlbGllcyBvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gSXQncyBhIG5ldHdvcmsgaW50ZXJmYWNlLCBzbyBJJ20gYXNzdW1pbmcgaXQgc2l0cyBhdG9wIHRoZSBWSVJUSU8gbGF5ZXIgaXRzZWxmLiBUaGF0J3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBrbm93IGhvdyBkZWVwbHkgaW50ZWdyYXRlZCBpdCBpcyB3aXRoIHRoZSBWSVJUSU8gY29yZSwgYXJlIHRoZXJlIHNwZWNpZmljIHZpcnRxdWV1ZXMgb3IgZmVhdHVyZXMgaXQncyB1c2luZz8gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgaWYgaXQgaGFzIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gT3IgaWYgdGhlcmUncyBhbnkga2VybmVsLXNwZWNpZmljIG5ldHdvcmsgc3RhY2sgaW50ZXJhY3Rpb24sIHdoaWNoIEknbGwgYmUgbG9va2luZyBpbnRvLiBUaGlzIGlzIGZ1bmRhbWVudGFsIGtub3dsZWRnZSB0byB1bmRlcnN0YW5kIGhvdyBtdWNoIGVmZm9ydCBpdCB3b3VsZCBiZSB0byBwb3J0IHRvIGEgbmV3IHBsYXRmb3JtLiBUaGUgVklSVElPIHNwZWNpZmljYXRpb24gd2lsbCBiZSBteSBiaWJsZSBoZXJlLCBvZiBjb3Vyc2UuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHN0YW5kYXJkIHRvIGtub3cgdGhhdC4gQXJlIHRoZXJlIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgYmUgYSBoZWFkYWNoZSBkb3duIHRoZSBsaW5lPyBGaW5hbGx5LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IGBWSVJUSU9fTkVUYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBUaGlua2luZyBhYm91dCB0aGluZ3MgbGlrZSB0aGUgbmV0d29yayBzdGFjayBpbnRlZ3JhdGlvbiwgcXVldWUgbWFuYWdlbWVudCwgYW5kIHRoZSBvdmVyYWxsIGRldmljZSBsaWZlY3ljbGUgd2lsbCBiZSBjcnVjaWFsIGZvciBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTozMy4wNDA2ODcyNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NDMsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NDM6XFx0Y29uZmlnIFZJUlRJT19ORVRcXG4gNDQ0OlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gbmV0d29yayBkcml2ZXJcXFwiXFxuIDQ0NTpcXHRcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbiA0NDY6XFx0XFx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxcbiA0NDc6XFx0XFx0c2VsZWN0IERJTUxJQlxcbiA0NDg6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiA0NDk6XFx0XFx0aGVscFxcbiA0NTA6XFx0XFx0ICBUaGlzIGlzIHRoZSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyIGZvciB2aXJ0aW8uICBJdCBjYW4gYmUgdXNlZCB3aXRoXFxuIDQ1MTpcXHRcXHQgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS4gIFNheSBZIG9yIE0uXFxuIDQ1MjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MzMuMDQwNzYxMjYzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0ODkyODM2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVmlydGlvIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBhcHByb2FjaCB0aGlzLCBhbmQgaXQgcmVhbGx5IGhpbmdlcyBvbiBgVklSVElPYC4gVGhhdCdzIHRoZSBjb3JlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgYFZJUlRJT19ORVRgIGFuZCwgYnkgZXh0ZW5zaW9uLCBqdXN0IGBWSVJUSU9gLCBhcmUgZW5hYmxlZC4gVHlwaWNhbGx5LCBpZiBJJ20gZG9pbmcgdGVzdGluZyB3aXRoaW4gUUVNVSwgSSdsbCBhbHNvIG5lZWQgYFZJUlRJT19QQ0lgIHRvIGVuc3VyZSB0aGUgdmlydGlvIGRldmljZXMgYXJlIHByb3Blcmx5IHNldCB1cCwgYnV0IGZvciB0aGUgbW9tZW50LCBgVklSVElPX05FVGAgaXMgdGhlIHByaW1hcnkgY29uY2Vybi4gSSdtIGdvaW5nIHRvIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0IG9uZS5cblxuTm93LCBhIHNlY29uZGFyeSBjb25zaWRlcmF0aW9uLiBJJ20gYWxzbyB3b25kZXJpbmcgaWYgYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCBpcyB3b3J0aCBmb2N1c2luZyBvbi4gSXQncyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgc28gdGhhdCBnaXZlcyBtZSBwYXVzZS4gSXQgbWlnaHQgYmUgc3RhdGljIHdoaWNoIGNvdWxkIG1lYW4gbGVzcyBicm9hZCBzY29wZS4gSSdsbCBuZWVkIHRvIGxvb2sgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MzguNTMwMDQ3MzUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYxMjA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTM2OTA9c3RhdGljIHZvaWQgdmlydG5ldF9hY2tfbGlua19hbm5vdW5jZShzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNjk2LVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozNjk3OnN0YXRpYyBib29sIHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzY5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zNzExPXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcXVldWVzKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLCB1MTYgcXVldWVfcGFpcnMpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzc0MC1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzc0MTpcXHRcXHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNzQyLVxcdFxcdFxcdC8qIHJlc3RvcmUgY3RybF9yc3MgaWYgY29tbWl0X3Jzc19jb21tYW5kIGZhaWxlZCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTQxMjc9c3RhdGljIGludCB2aXJ0bmV0X3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MTk3LVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MTk4OnN0YXRpYyBib29sIHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MTk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00MjkzPXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MzU0LVxcdFxcdGlmICh2aS1cXHUwMDNlZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjQzNTU6XFx0XFx0XFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDM1Ni1cXHRcXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU1NDk9c3RhdGljIGludCB2aXJ0bmV0X3NldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTU5Mi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTU5MzpcXHRpZiAodXBkYXRlIFxcdTAwMjZcXHUwMDI2ICF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTU5NC1cXHRcXHRpZiAob2xkX3Jzc19oZHIpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NjE3ND1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNjIwNC1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NjIwNTpcXHRcXHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02MjA2LVxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGRyLVxcdTAwM2VoYXNoX3R5cGVzID0gaGFzaF90eXBlcztcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02NzY5PXN0YXRpYyBpbnQgdmlydG5ldF9wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy03MDc0LVxcdGlmICh2aS1cXHUwMDNlaGFzX3JzcyB8fCB2aS1cXHUwMDNlaGFzX3Jzc19oYXNoX3JlcG9ydCkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo3MDc1OlxcdFxcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTcwNzYtXFx0XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnZkZXYtXFx1MDAzZWRldiwgXFxcIlJTUyBkaXNhYmxlZCBiZWNhdXNlIGNvbW1pdHRpbmcgZmFpbGVkLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjM4LjU3ODY2NDQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTk1MTIxNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZpcnRpby1OZXQgUGF0Y2gqKlxuXG5Pa2F5LCB0aGlzIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBpbml0aWFsIGJpdCBpcyBqdXN0IGJvaWxlcnBsYXRlLCBzbyBJJ2xsIHNraXAgb3ZlciB0aGF0IHN0YXRpYyBjb250ZXh0LiBNeSBjb3JlIGludGVyZXN0IGlzIGluIHRoZSBmdW5jdGlvbnMgYmVpbmcgYWRkcmVzc2VkLCBzcGVjaWZpY2FsbHk6IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIFRob3NlIGFyZSB0aGUga2V5IHRhcmdldHMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgZm9jdXNlZCBvbiBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIHZpcnRpb19uZXQgZHJpdmVyLiBJdCdzIHRpZ2h0ZW5pbmcgdXAgaG93IHRoZSBkcml2ZXIgcmVzcG9uZHMgd2hlbiBjb25maWd1cmluZyBSU1MgYW5kIG90aGVyIGZlYXR1cmVzIHZpYSBldGh0b29sIGFuZCBuZXRkZXYgb3BlcmF0aW9ucy4gVGhlIHJlYWwgbWVhdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZS4gV2UncmUgdGFsa2luZyBzdGFuZGFyZCBuZXRsaW5rIGFuZCBldGh0b29sIGludGVyZmFjZXMsIHdoaWNoIG1ha2VzIHRlc3RpbmcgYW5kIHZhbGlkYXRpb24gYSBsb3QgZWFzaWVyLCBlc3BlY2lhbGx5IGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSB2aXJ0aW9fbmV0IGlzIHNvIGNvbW1vbiBhbmQgd2VsbC10ZXN0ZWQuIFNvLCB0aGlzIGlzIHBvdGVudGlhbGx5IGZpeGluZyBhIHByZXR0eSBjcml0aWNhbCBidWcgYWZmZWN0aW5nIGEgd2lkZWx5IHVzZWQgZHJpdmVyLlxuXG5JJ20gbWVudGFsbHkgY3JlYXRpbmcgYSBjb25jZXB0dWFsIFwic2V0LXJlc3VsdHNcIiB2YXJpYWJsZSwgYXNzdW1pbmcgdGhhdCBpdCBpcyB1c2VkIHRvIGhvbGQgb3IgcmV0dXJuIGVycm9yIGNvZGVzIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGJlaW5nIGFwcGxpZWQuIFRoYXQgaXMgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjIwLCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTo0NC40NzgxNzkxNzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDQ3MjE5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVElPX05FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRuZXRfc2V0X2hhc2hmbG93XCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9yeGZoXCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9mZWF0dXJlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVycm9yIGhhbmRsaW5nIGFuZCBzdGF0ZSByZXN0b3JhdGlvbiBsb2dpYyBpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIgd2hlbiBzZXR0aW5nIFJTUyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgdmlhIGV0aHRvb2wgYW5kIG5ldGRldiBvcHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgYW5kIHZpcnRpb19uZXQgaXMgaGVhdmlseSB1c2VkIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVElPX05FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRuZXRfc2V0X2hhc2hmbG93XCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9yeGZoXCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9mZWF0dXJlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVycm9yIGhhbmRsaW5nIGFuZCBzdGF0ZSByZXN0b3JhdGlvbiBsb2dpYyBpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIgd2hlbiBzZXR0aW5nIFJTUyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgdmlhIGV0aHRvb2wgYW5kIG5ldGRldiBvcHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgYW5kIHZpcnRpb19uZXQgaXMgaGVhdmlseSB1c2VkIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-04 08:07:07 +0000 UTC FinishedAt: 2026-08-04 08:25:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_NET" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "5b4f243f78a533abf414bfd96325aa2c96e711a3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "VIRTIO_NET" ], "series_id": "90b3f612-40e5-46a3-b1f8-7fa096a9f8ab" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "virtnet_set_hashflow", "virtnet_set_rxfh", "virtnet_set_features" ], "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+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1ZJUlRJT19ORVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt2aXJ0bmV0X3NldF9oYXNoZmxvdyYjMzQ7LAogICAgJiMzNDt2aXJ0bmV0X3NldF9yeGZoJiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2ZlYXR1cmVzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGVycm9yIGhhbmRsaW5nIGFuZCBzdGF0ZSByZXN0b3JhdGlvbiBsb2dpYyBpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIgd2hlbiBzZXR0aW5nIFJTUyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgdmlhIGV0aHRvb2wgYW5kIG5ldGRldiBvcHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgYW5kIHZpcnRpb19uZXQgaXMgaGVhdmlseSB1c2VkIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNWI3ODc1ODZkOThjMTJhOTZhYTQ4OGViY2Y5NzM0NjRkNmU3YTQxXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgNCAwODoyNTowNCAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbmluZGV4IDNlMmE1ODc2YzZjOGMuLmNjZDk2MzE1YTE0NTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xuQEAgLTQyOTUsNiAmIzQzOzQyOTUsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHRcdFx0XHRzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpO1xuJiM0MztcdHUzMiBvbGRfaGFzaHR5cGVzID0gdmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQ7XG4gXHR1MzIgbmV3X2hhc2h0eXBlcyA9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkO1xuIFx0Ym9vbCBpc19kaXNhYmxlID0gaW5mby1cdTAwM2VkYXRhIFx1MDAyNiBSWEhfRElTQ0FSRDtcbiBcdGJvb2wgaXNfbDQgPSBpbmZvLVx1MDAzZWRhdGEgPT0gKFJYSF9JUF9TUkMgfCBSWEhfSVBfRFNUIHwgUlhIX0w0X0JfMF8xIHwgUlhIX0w0X0JfMl8zKTtcbkBAIC00MzUwLDkgJiM0Mzs0MzUxLDEzIEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChuZXdfaGFzaHR5cGVzICE9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkKSB7XG4gXHRcdHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkID0gbmV3X2hhc2h0eXBlcztcbiBcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xuLVx0XHRpZiAodmktXHUwMDNlZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbi1cdFx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbiYjNDM7XHRcdGlmICh2aS1cdTAwM2VkZXYtXHUwMDNlZmVhdHVyZXMgXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XG4mIzQzO1x0XHRcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG4mIzQzO1x0XHRcdFx0dmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xuJiM0MztcdFx0XHRcdHZpLVx1MDAzZXJzc19oZHItXHUwMDNlaGFzaF90eXBlcyA9IGNwdV90b19sZTMyKG9sZF9oYXNodHlwZXMpO1xuIFx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHRcdH1cbiYjNDM7XHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTU1NDYsNiAmIzQzOzU1NTEsOCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuIHtcbiBcdHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0gbmV0ZGV2X3ByaXYoZGV2KTtcbiYjNDM7XHRzdHJ1Y3QgdmlydGlvX25ldF9yc3NfY29uZmlnX2hkciAqb2xkX3Jzc19oZHIgPSBOVUxMO1xuJiM0MztcdHU4IG9sZF9yc3Nfa2V5W05FVERFVl9SU1NfS0VZX0xFTl07XG4gXHRib29sIHVwZGF0ZSA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG5AQCAtNTU1MywxNCAmIzQzOzU1NjAsOCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdCAgICByeGZoLVx1MDAzZWhmdW5jICE9IEVUSF9SU1NfSEFTSF9UT1ApXG4gXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbi1cdGlmIChyeGZoLVx1MDAzZWluZGlyKSB7XG4tXHRcdGlmICghdmktXHUwMDNlaGFzX3Jzcylcbi1cdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4tXG4tXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZXJzc19pbmRpcl90YWJsZV9zaXplOyAmIzQzOyYjNDM7aSlcbi1cdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWluZGlyZWN0aW9uX3RhYmxlW2ldID0gY3B1X3RvX2xlMTYocnhmaC1cdTAwM2VpbmRpcltpXSk7XG4tXHRcdHVwZGF0ZSA9IHRydWU7XG4tXHR9XG4mIzQzO1x0aWYgKHJ4ZmgtXHUwMDNlaW5kaXIgXHUwMDI2XHUwMDI2ICF2aS1cdTAwM2VoYXNfcnNzKVxuJiM0MztcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuIFx0aWYgKHJ4ZmgtXHUwMDNla2V5KSB7XG4gXHRcdC8qIElmIGVpdGhlciBfRl9IQVNIX1JFUE9SVCBvciBfRl9SU1MgYXJlIG5lZ290aWF0ZWQsIHRoZVxuQEAgLTU1NjksMTMgJiM0Mzs1NTcwLDM2IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgKi9cbiBcdFx0aWYgKCF2aS1cdTAwM2VoYXNfcnNzIFx1MDAyNlx1MDAyNiAhdmktXHUwMDNlaGFzX3Jzc19oYXNoX3JlcG9ydClcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4mIzQzO1x0fVxuJiM0MztcbiYjNDM7XHRpZiAocnhmaC1cdTAwM2VpbmRpcikge1xuJiM0MztcdFx0b2xkX3Jzc19oZHIgPSBrbWVtZHVwKHZpLVx1MDAzZXJzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSxcbiYjNDM7XHRcdFx0XHQgICAgICBHRlBfS0VSTkVMKTtcbiYjNDM7XHRcdGlmICghb2xkX3Jzc19oZHIpXG4mIzQzO1x0XHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcbiYjNDM7XHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZXJzc19pbmRpcl90YWJsZV9zaXplOyAmIzQzOyYjNDM7aSlcbiYjNDM7XHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VpbmRpcmVjdGlvbl90YWJsZVtpXSA9XG4mIzQzO1x0XHRcdFx0Y3B1X3RvX2xlMTYocnhmaC1cdTAwM2VpbmRpcltpXSk7XG4mIzQzO1x0XHR1cGRhdGUgPSB0cnVlO1xuJiM0MztcdH1cbiBcbiYjNDM7XHRpZiAocnhmaC1cdTAwM2VrZXkpIHtcbiYjNDM7XHRcdG1lbWNweShvbGRfcnNzX2tleSwgdmktXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIHZpLVx1MDAzZXJzc19rZXlfc2l6ZSk7XG4gXHRcdG1lbWNweSh2aS1cdTAwM2Vyc3NfaGFzaF9rZXlfZGF0YSwgcnhmaC1cdTAwM2VrZXksIHZpLVx1MDAzZXJzc19rZXlfc2l6ZSk7XG4gXHRcdHVwZGF0ZSA9IHRydWU7XG4gXHR9XG4gXG4tXHRpZiAodXBkYXRlKVxuLVx0XHR2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSk7XG4mIzQzO1x0aWYgKHVwZGF0ZSBcdTAwMjZcdTAwMjYgIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuJiM0MztcdFx0aWYgKG9sZF9yc3NfaGRyKVxuJiM0MztcdFx0XHRtZW1jcHkodmktXHUwMDNlcnNzX2hkciwgb2xkX3Jzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSk7XG4mIzQzO1x0XHRpZiAocnhmaC1cdTAwM2VrZXkpXG4mIzQzO1x0XHRcdG1lbWNweSh2aS1cdTAwM2Vyc3NfaGFzaF9rZXlfZGF0YSwgb2xkX3Jzc19rZXksIHZpLVx1MDAzZXJzc19rZXlfc2l6ZSk7XG4mIzQzO1x0XHRrZnJlZShvbGRfcnNzX2hkcik7XG4mIzQzO1x0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XHR9XG4mIzQzO1xuJiM0MztcdGtmcmVlKG9sZF9yc3NfaGRyKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC02MTcxLDEzICYjNDM7NjE5NSwxNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4gXHR9XG4gXG4gXHRpZiAoKGRldi1cdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzKSBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpIHtcbiYjNDM7XHRcdF9fbGUzMiBoYXNoX3R5cGVzID0gdmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzO1xuJiM0MztcbiBcdFx0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZCk7XG4gXHRcdGVsc2VcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMihWSVJUSU9fTkVUX0hBU0hfUkVQT1JUX05PTkUpO1xuIFxuLVx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbiYjNDM7XHRcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG4mIzQzO1x0XHRcdHZpLVx1MDAzZXJzc19oZHItXHUwMDNlaGFzaF90eXBlcyA9IGhhc2hfdHlwZXM7XG4gXHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1x0XHR9XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVElPX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAgICYjMzQ7dmlydG5ldF9zZXRfZmVhdHVyZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGQ1Yjc4NzU4NmQ5OGMxMmE5NmFhNDg4ZWJjZjk3MzQ2NGQ2ZTdhNDEKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyA0IDA4OjI1OjA0IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jIGIvZHJpdmVycy9uZXQvdmlydGlvX25ldC5jCmluZGV4IDNlMmE1ODc2YzZjOGMuLmNjZDk2MzE1YTE0NTcgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMKQEAgLTQyOTUsNiAmIzQzOzQyOTUsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJCQkJc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKQogewogCXN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0gbmV0ZGV2X3ByaXYoZGV2KTsKJiM0MzsJdTMyIG9sZF9oYXNodHlwZXMgPSB2aS0mZ3Q7cnNzX2hhc2hfdHlwZXNfc2F2ZWQ7CiAJdTMyIG5ld19oYXNodHlwZXMgPSB2aS0mZ3Q7cnNzX2hhc2hfdHlwZXNfc2F2ZWQ7CiAJYm9vbCBpc19kaXNhYmxlID0gaW5mby0mZ3Q7ZGF0YSAmYW1wOyBSWEhfRElTQ0FSRDsKIAlib29sIGlzX2w0ID0gaW5mby0mZ3Q7ZGF0YSA9PSAoUlhIX0lQX1NSQyB8IFJYSF9JUF9EU1QgfCBSWEhfTDRfQl8wXzEgfCBSWEhfTDRfQl8yXzMpOwpAQCAtNDM1MCw5ICYjNDM7NDM1MSwxMyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJaWYgKG5ld19oYXNodHlwZXMgIT0gdmktJmd0O3Jzc19oYXNoX3R5cGVzX3NhdmVkKSB7CiAJCXZpLSZndDtyc3NfaGFzaF90eXBlc19zYXZlZCA9IG5ld19oYXNodHlwZXM7CiAJCXZpLSZndDtyc3NfaGRyLSZndDtoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktJmd0O3Jzc19oYXNoX3R5cGVzX3NhdmVkKTsKLQkJaWYgKHZpLSZndDtkZXYtJmd0O2ZlYXR1cmVzICZhbXA7IE5FVElGX0ZfUlhIQVNIKQotCQkJaWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpCiYjNDM7CQlpZiAodmktJmd0O2Rldi0mZ3Q7ZmVhdHVyZXMgJmFtcDsgTkVUSUZfRl9SWEhBU0gpIHsKJiM0MzsJCQlpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkgewomIzQzOwkJCQl2aS0mZ3Q7cnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzOwomIzQzOwkJCQl2aS0mZ3Q7cnNzX2hkci0mZ3Q7aGFzaF90eXBlcyA9IGNwdV90b19sZTMyKG9sZF9oYXNodHlwZXMpOwogCQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwkJCX0KJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKQEAgLTU1NDYsNiAmIzQzOzU1NTEsOCBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAkJCSAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spCiB7CiAJc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpOwomIzQzOwlzdHJ1Y3QgdmlydGlvX25ldF9yc3NfY29uZmlnX2hkciAqb2xkX3Jzc19oZHIgPSBOVUxMOwomIzQzOwl1OCBvbGRfcnNzX2tleVtORVRERVZfUlNTX0tFWV9MRU5dOwogCWJvb2wgdXBkYXRlID0gZmFsc2U7CiAJaW50IGk7CiAKQEAgLTU1NTMsMTQgJiM0Mzs1NTYwLDggQEAgc3RhdGljIGludCB2aXJ0bmV0X3NldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsCiAJICAgIHJ4ZmgtJmd0O2hmdW5jICE9IEVUSF9SU1NfSEFTSF9UT1ApCiAJCXJldHVybiAtRU9QTk9UU1VQUDsKIAotCWlmIChyeGZoLSZndDtpbmRpcikgewotCQlpZiAoIXZpLSZndDtoYXNfcnNzKQotCQkJcmV0dXJuIC1FT1BOT1RTVVBQOwotCi0JCWZvciAoaSA9IDA7IGkgJmx0OyB2aS0mZ3Q7cnNzX2luZGlyX3RhYmxlX3NpemU7ICYjNDM7JiM0MztpKQotCQkJdmktJmd0O3Jzc19oZHItJmd0O2luZGlyZWN0aW9uX3RhYmxlW2ldID0gY3B1X3RvX2xlMTYocnhmaC0mZ3Q7aW5kaXJbaV0pOwotCQl1cGRhdGUgPSB0cnVlOwotCX0KJiM0MzsJaWYgKHJ4ZmgtJmd0O2luZGlyICZhbXA7JmFtcDsgIXZpLSZndDtoYXNfcnNzKQomIzQzOwkJcmV0dXJuIC1FT1BOT1RTVVBQOwogCiAJaWYgKHJ4ZmgtJmd0O2tleSkgewogCQkvKiBJZiBlaXRoZXIgX0ZfSEFTSF9SRVBPUlQgb3IgX0ZfUlNTIGFyZSBuZWdvdGlhdGVkLCB0aGUKQEAgLTU1NjksMTMgJiM0Mzs1NTcwLDM2IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LAogCQkgKi8KIAkJaWYgKCF2aS0mZ3Q7aGFzX3JzcyAmYW1wOyZhbXA7ICF2aS0mZ3Q7aGFzX3Jzc19oYXNoX3JlcG9ydCkKIAkJCXJldHVybiAtRU9QTk9UU1VQUDsKJiM0MzsJfQomIzQzOwomIzQzOwlpZiAocnhmaC0mZ3Q7aW5kaXIpIHsKJiM0MzsJCW9sZF9yc3NfaGRyID0ga21lbWR1cCh2aS0mZ3Q7cnNzX2hkciwgdmlydG5ldF9yc3NfaGRyX3NpemUodmkpLAomIzQzOwkJCQkgICAgICBHRlBfS0VSTkVMKTsKJiM0MzsJCWlmICghb2xkX3Jzc19oZHIpCiYjNDM7CQkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CiYjNDM7CQlmb3IgKGkgPSAwOyBpICZsdDsgdmktJmd0O3Jzc19pbmRpcl90YWJsZV9zaXplOyAmIzQzOyYjNDM7aSkKJiM0MzsJCQl2aS0mZ3Q7cnNzX2hkci0mZ3Q7aW5kaXJlY3Rpb25fdGFibGVbaV0gPQomIzQzOwkJCQljcHVfdG9fbGUxNihyeGZoLSZndDtpbmRpcltpXSk7CiYjNDM7CQl1cGRhdGUgPSB0cnVlOwomIzQzOwl9CiAKJiM0MzsJaWYgKHJ4ZmgtJmd0O2tleSkgewomIzQzOwkJbWVtY3B5KG9sZF9yc3Nfa2V5LCB2aS0mZ3Q7cnNzX2hhc2hfa2V5X2RhdGEsIHZpLSZndDtyc3Nfa2V5X3NpemUpOwogCQltZW1jcHkodmktJmd0O3Jzc19oYXNoX2tleV9kYXRhLCByeGZoLSZndDtrZXksIHZpLSZndDtyc3Nfa2V5X3NpemUpOwogCQl1cGRhdGUgPSB0cnVlOwogCX0KIAotCWlmICh1cGRhdGUpCi0JCXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKTsKJiM0MzsJaWYgKHVwZGF0ZSAmYW1wOyZhbXA7ICF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHsKJiM0MzsJCWlmIChvbGRfcnNzX2hkcikKJiM0MzsJCQltZW1jcHkodmktJmd0O3Jzc19oZHIsIG9sZF9yc3NfaGRyLCB2aXJ0bmV0X3Jzc19oZHJfc2l6ZSh2aSkpOwomIzQzOwkJaWYgKHJ4ZmgtJmd0O2tleSkKJiM0MzsJCQltZW1jcHkodmktJmd0O3Jzc19oYXNoX2tleV9kYXRhLCBvbGRfcnNzX2tleSwgdmktJmd0O3Jzc19rZXlfc2l6ZSk7CiYjNDM7CQlrZnJlZShvbGRfcnNzX2hkcik7CiYjNDM7CQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJfQomIzQzOwomIzQzOwlrZnJlZShvbGRfcnNzX2hkcik7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTYxNzEsMTMgJiM0Mzs2MTk1LDE3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwKIAl9CiAKIAlpZiAoKGRldi0mZ3Q7ZmVhdHVyZXMgXiBmZWF0dXJlcykgJmFtcDsgTkVUSUZfRl9SWEhBU0gpIHsKJiM0MzsJCV9fbGUzMiBoYXNoX3R5cGVzID0gdmktJmd0O3Jzc19oZHItJmd0O2hhc2hfdHlwZXM7CiYjNDM7CiAJCWlmIChmZWF0dXJlcyAmYW1wOyBORVRJRl9GX1JYSEFTSCkKIAkJCXZpLSZndDtyc3NfaGRyLSZndDtoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktJmd0O3Jzc19oYXNoX3R5cGVzX3NhdmVkKTsKIAkJZWxzZQogCQkJdmktJmd0O3Jzc19oZHItJmd0O2hhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMihWSVJUSU9fTkVUX0hBU0hfUkVQT1JUX05PTkUpOwogCi0JCWlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKQomIzQzOwkJaWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHsKJiM0MzsJCQl2aS0mZ3Q7cnNzX2hkci0mZ3Q7aGFzaF90eXBlcyA9IGhhc2hfdHlwZXM7CiAJCQlyZXR1cm4gLUVJTlZBTDsKJiM0MzsJCX0KIAl9CiAKIAlyZXR1cm4gMDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ1NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDE3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBc3Nlc3NpbmcgdGhlIEZ1enppbmcgUG90ZW50aWFsIG9mIGEgTmV0d29yayBEcml2ZXIgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IGEgcGF0Y2ggdGhhdCB0d2Vha3MgYGRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY2AuIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgdG91Y2hpbmcgYHZpcnRuZXRfc2V0X2hhc2hmbG93YCwgYHZpcnRuZXRfc2V0X3J4ZmhgLCBhbmQgYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYC4gVGhlIGtleSBoZXJlLCB0aG91Z2gsIGlzIHRoZSBhZGRpdGlvbiBvZiBlcnJvciBoYW5kbGluZyBhcm91bmQgYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKWAuIEl0IHNvdW5kcyBsaWtlIHRoZXkmIzM5O3JlIHRyeWluZyB0byByb2xsIGJhY2sgdGhlIGNoYW5nZXMgaWYgdGhhdCBjb21tYW5kIGZhaWxzLgoKTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzLCAmIzM0O0lzIHRoaXMgd29ydGggZnV6emluZz8mIzM0OyBMZXQmIzM5O3Mgc2VlLiBUaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZSwgYW5kIGl0JiMzOTtzIHdpdGhpbiBhIG5ldHdvcmsgZHJpdmVyIC0gdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnQuIEl0JiMzOTtzIHRoZSBgdmlydGlvX25ldGAgZHJpdmVyLCB3aGljaCBpcyBhIGJpZyBkZWFsLiBHaXZlbiB0aGUgcHJvbWluZW5jZSBvZiBgdmlydGlvX25ldGAgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgUUVNVSBhbmQgR0NFLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuIFRoYXQgbWFrZXMgaXQgYSBzdHJvbmcgY2FuZGlkYXRlLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3MgZmlndXJlIG91dCB0aGUgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY2AgaXMgY29tcGlsZWQgYmFzZWQgb24gYENPTkZJR19WSVJUSU9fTkVUYC4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0JiMzOTtzIHBvdGVudGlhbGx5IG9uIHRoZSBjcml0aWNhbCBwYXRoLCBzbyBJIG5lZWQgdG8ga25vdyB3aGVyZSBpdCBsaXZlcyBhbmQgd2hhdCBpdCBkZXBlbmRzIG9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O1ZJUlRJT19ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9NYWtlZmlsZT0zND1vYmotJChDT05GSUdfVkVUSCkgJiM0Mzs9IHZldGgub1xuZHJpdmVycy9uZXQvTWFrZWZpbGU6MzU6b2JqLSQoQ09ORklHX1ZJUlRJT19ORVQpICYjNDM7PSB2aXJ0aW9fbmV0Lm9cbmRyaXZlcnMvbmV0L01ha2VmaWxlLTM2LW9iai0kKENPTkZJR19WWExBTikgJiM0Mzs9IHZ4bGFuL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzgKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAxMTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uCgoqKkludmVzdGlnYXRpbmcgdGhlIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jeSBvZiBWaXJ0aW8gTmV0d29ya2luZyBGdW5jdGlvbmFsaXR5KioKClJpZ2h0LCBzbyB3ZSYjMzk7cmUgbG9va2luZyBhdCBgQ09ORklHX1ZJUlRJT19ORVRgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQmIzM5O3MgdGhlIG9uZSB3ZSBuZWVkIHRvIHRyYWNlIGRlcGVuZGVuY2llcyBmcm9tLiBMZXQgbWUgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgc2NvcGUgb2YgdGhlIGNoYW5nZS4uLgoKT2theSwgSSBzZWUgdGhlIGNvcmUgZnVuY3Rpb25zIHRoYXQgd2VyZSBtb2RpZmllZDogYHZpcnRuZXRfc2V0X2hhc2hmbG93YCwgYHZpcnRuZXRfc2V0X3J4ZmhgLCBhbmQgYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYC4gTm93IHRoZSBjcml0aWNhbCBxdWVzdGlvbiBpcywgaG93IGFyZSB0aGVzZSBmdW5jdGlvbnMgKnJlYWNoZWQqPyBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBJJiMzOTttIGJldHRpbmcgYSBzb2xpZCBwb3J0aW9uIG9mIG15IGluY29tZSBvbiB0aGUgZmFjdCB0aGF0IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AgaXMgZWl0aGVyIGFuIGV0aHRvb2wgb3BlcmF0aW9uLCBvciBhIG5ldGRldiBvcGVyYXRpb24uIFNhbWUgZm9yIGB2aXJ0bmV0X3NldF9yeGZoYCwgYWxtb3N0IGNlcnRhaW5seSBhbm90aGVyIGV0aHRvb2wgb3BlcmF0aW9uLCBhcyBJIHdvdWxkIGV4cGVjdCBSWCBoYXNoIHNldHRpbmdzIHRvIGJlIG1hbmFnZWQgYnkgZXRodG9vbC4gQW5kIGZpbmFsbHksIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AgZmVlbHMgbGlrZSBhIG5ldGRldiBvcGVyYXRpb24g4oCTIGZlYXR1cmVzIG9mdGVuIHRpZSBkaXJlY3RseSBpbnRvIHRoZSBuZXRkZXYgc3RydWN0dXJlLgoKQmFzaWNhbGx5LCBhbGwgdGhlc2Ugd2lsbCBoYXZlIHNvbWUgY29uZmlndXJhdGlvbiBrbm9iIG9yIG90aGVyIHRvIG1ha2UgaXQgd29yay4gSWYgdGhlIGNvbmZpZ3VyYXRpb24gaXMgdGhlcmUsIHRoZXkgd2lsbCBiZSBlbmFibGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00MjM2PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDI5Mi1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MjkzOnN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00Mjk0LVx0XHRcdFx0Y29uc3Qgc3RydWN0IGV0aHRvb2xfcnhmaF9maWVsZHMgKmluZm8sXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU2MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB2aXJ0bmV0X2V0aHRvb2xfb3BzID0ge1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NjM3LVx0LmdldF9yeGZoX2ZpZWxkcyA9IHZpcnRuZXRfZ2V0X2hhc2hmbG93LFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjU2Mzg6XHQuc2V0X3J4ZmhfZmllbGRzID0gdmlydG5ldF9zZXRfaGFzaGZsb3csXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTYzOS1cdC5nZXRfcnhfcmluZ19jb3VudCA9IHZpcnRuZXRfZ2V0X3J4X3JpbmdfY291bnQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcyOAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBOZXR3b3JrIENvbmZpZ3VyYXRpb24gT3BlcmF0aW9ucyoqCgpPa2F5LCBzbyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIG5ldHdvcmsgY29uZmlndXJhdGlvbiBvcGVyYXRpb25zLCBzcGVjaWZpY2FsbHkgdGhlIG9uZXMgdHJpZ2dlcmVkIGJ5IGBldGh0b29sYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIEkgc2VlIGB2aXJ0bmV0X3NldF9yeGZoYCBsaXN0ZWQsIGFuZCBJIGtub3cgdGhhdCYjMzk7cyBhbHNvIGludm9rZWQgdGhyb3VnaCBgZXRodG9vbGAuIEludGVyZXN0aW5nLiBCdXQsIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AsIHRoYXQgb25lIGlzIGNsZWFybHkgYSBuZXRkZXYgb3BlcmF0aW9uLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIHR3by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHZpcnRuZXRfc2V0X3J4ZmhgIGFuZCBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGFyZSBpbXBsZW1lbnRlZCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gV2UgbmVlZCB0byBhc3Nlc3MgdGhlaXIgcm9sZXMgaW4gdGhpcyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU1MzA9c3RhdGljIGludCB2aXJ0bmV0X2dldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU1NDgtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTU0OTpzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTUwLVx0XHRcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoLFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01NjE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmlydG5ldF9ldGh0b29sX29wcyA9IHtcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTYzNS1cdC5nZXRfcnhmaCA9IHZpcnRuZXRfZ2V0X3J4ZmgsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTYzNjpcdC5zZXRfcnhmaCA9IHZpcnRuZXRfc2V0X3J4ZmgsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTYzNy1cdC5nZXRfcnhmaF9maWVsZHMgPSB2aXJ0bmV0X2dldF9oYXNoZmxvdyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MjQ0CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBpbiB0aGUgZmlyc3QgcGVyc29uLCBhcyBhbiBleHBlcnQgaW4gdGhlIGZpZWxkIHdvdWxkIHBlcmNlaXZlIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AgZnVuY3Rpb24uIEltbWVkaWF0ZWx5LCBteSBtaW5kIHN0YXJ0cyB0aWNraW5nIHRocm91Z2ggdGhlIHBvdGVudGlhbCBpbXBsaWNhdGlvbnMuIEl0JiMzOTtzIGRlc2lnbmVkLCBJJiMzOTttIGFzc3VtaW5nLCB0byBjb25maWd1cmUgdGhlIHNwZWNpZmljIGZlYXR1cmVzIGVuYWJsZWQgb3IgZGlzYWJsZWQgZm9yIGEgdmlydHVhbCBuZXR3b3JrIGludGVyZmFjZS4gR2l2ZW4gdGhlIG5hbWUsIEkmIzM5O2QgZ3Vlc3MgdGhpcyBpcyBsaWtlbHkgaGFuZGxpbmcgdGhpbmdzIGxpa2Ugb2ZmbG9hZCBjYXBhYmlsaXRpZXMsIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiwgb3IgcGVyaGFwcyBldmVuIGZpbmVyLWdyYWluZWQgY29udHJvbCBvdmVyIHRoaW5ncyBsaWtlIFZMQU4gdGFnZ2luZyBvciBNQUMgYWRkcmVzcyBmaWx0ZXJpbmcgYXQgdGhlIHZpcnR1YWwgbmV0d29yayBsZXZlbC4KCkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tPyBXaGF0JiMzOTtzIHRoZSB0eXBpY2FsIHdvcmtmbG93IHN1cnJvdW5kaW5nIHRoZSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlIHNldHVwPyBJJiMzOTtsbCBwcm9iYWJseSBzdGFydCBieSBsb29raW5nIGZvciBjYWxsZXJzLCB0aGF0JiMzOTtzIGNydWNpYWwuIEkmIzM5O20gdGhpbmtpbmcsIGlzIHRoaXMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbCBicmluZy11cCBvZiB0aGUgdmlydHVhbCBpbnRlcmZhY2U/IE9yIGlzIGl0IG1vcmUgZHluYW1pYywgcG9zc2libHkgYmVpbmcgaW52b2tlZCBkdXJpbmcgcnVudGltZSB0byBhZGp1c3QgcGVyZm9ybWFuY2Ugb3Igc2VjdXJpdHkgcGFyYW1ldGVycz8gVGhlIGFuc3dlciB3aWxsIGhlYXZpbHkgaW5mbHVlbmNlIG15IG1lbnRhbCBtb2RlbC4KClRoZSBhcmd1bWVudHMgYXJlIGtleSB0b28uIFdoYXQga2luZCBvZiBmZWF0dXJlIGZsYWdzIG9yIGJpdG1hc2tzIGFyZSBwYXNzZWQgaW4/IEFyZSB0aGV5IHN0YW5kYXJkaXplZCBhY3Jvc3MgZGlmZmVyZW50IGh5cGVydmlzb3IgcGxhdGZvcm1zLCBvciBpcyB0aGVyZSBzb21lIGFic3RyYWN0aW9uIGxheWVyIGludm9sdmVkPyBBbnkgcGxhdGZvcm0tc3BlY2lmaWMgcXVpcmtzLCBsaWtlIG5lZWRpbmcgc3BlY2lmaWMgcmVnaXN0ZXIgc2V0dGluZ3MgZm9yIGEgcGFydGljdWxhciBOSUMsIEkgc2hvdWxkIHByZXBhcmUgbXlzZWxmIGZvci4gSSBob3BlIGl0JiMzOTtzIHdlbGwtZG9jdW1lbnRlZCEKCkkmIzM5O2xsIGFsc28ga2VlcCBhbiBleWUgb3V0IGZvciBlcnJvciBoYW5kbGluZy4gQSBwb29ybHkgd3JpdHRlbiBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGNhbiBpbnRyb2R1Y2Ugc2lnbmlmaWNhbnQgaW5zdGFiaWxpdHkuIEkmIzM5O20gZXhwZWN0aW5nIGNoZWNrcyBmb3IgaW52YWxpZCBmZWF0dXJlIGNvbWJpbmF0aW9ucywgcG90ZW50aWFsIHJlc291cmNlIGNvbnRlbnRpb24sIGFuZCBob3cgaXQgaGFuZGxlcyB0cmFuc2llbnQgZmFpbHVyZXMuIElzIHRoZXJlIGFueSByZXRyeSBsb2dpYz8gQXJlIHRoZSBmZWF0dXJlIGNoYW5nZXMgYXRvbWljPyBJZiBub3QsIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgZ29pbmcgdG8gcmVhciB0aGVpciB1Z2x5IGhlYWQgc29tZXdoZXJlLgoKRmluYWxseSwgSSYjMzk7bGwgYmUgY3VyaW91cyBhYm91dCBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEZlYXR1cmUgdG9nZ2xlcyBoYXZlIGEga25hY2sgZm9yIGltcGFjdGluZyBwZXJmb3JtYW5jZSwgZXNwZWNpYWxseSBpZiB0aGV5IGludm9sdmUgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgcGFja2V0IHByb2Nlc3NpbmcgcGF0aC4gQXJlIGFueSBzdGF0aXN0aWNzIGJlaW5nIGNvbGxlY3RlZD8gQXJlIHRoZXJlIGFueSBiZW5jaG1hcmtzIHJlbGF0ZWQgdG8gdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBvZiB0aGUgdG9nZ2xlcz8gVWx0aW1hdGVseSwgdGhlIGdvYWwgaXMgdG8gYmFsYW5jZSBmdW5jdGlvbmFsaXR5IHdpdGggZWZmaWNpZW5jeSwgc28gSSBoYXZlIHRvIHNjcnV0aW5pemUgdGhlIGZ1bmN0aW9uLiBPa2F5LCBsZXQmIzM5O3MgZGlnIGludG8gdGhlIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfc2V0X2ZlYXR1cmVzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02MTU4PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY2hhciAqYnVmLFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02MTczLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjYxNzQ6c3RhdGljIGludCB2aXJ0bmV0X3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYxNzUtXHRcdFx0XHRuZXRkZXZfZmVhdHVyZXNfdCBmZWF0dXJlcylcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NjI3Mj1zdGF0aWMgY29uc3Qgc3RydWN0IG5ldF9kZXZpY2Vfb3BzIHZpcnRuZXRfbmV0ZGV2ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02Mjg2LVx0Lm5kb19nZXRfcGh5c19wb3J0X25hbWVcdD0gdmlydG5ldF9nZXRfcGh5c19wb3J0X25hbWUsXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NjI4NzpcdC5uZG9fc2V0X2ZlYXR1cmVzXHQ9IHZpcnRuZXRfc2V0X2ZlYXR1cmVzLFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYyODgtXHQubmRvX3R4X3RpbWVvdXRcdFx0PSB2aXJ0bmV0X3R4X3RpbWVvdXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYwMTkKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVmlydGlvLU5ldCBQYXRjaCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3Npbmcgc29tZSBmYWlsdXJlIHNjZW5hcmlvcyB3aXRoaW4gYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCwgc3BlY2lmaWNhbGx5IGFkZGluZyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoYXTigJlzIGEgZ29vZCBzdGFydC4gSSBjYW4gaW1tZWRpYXRlbHkgc2VlIHRoZSB2YWx1ZSBoZXJlIC0gZXZlcnl0aGluZyBtZW50aW9uZWQgaXMgYWNjZXNzaWJsZSBhbmQgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgd2hpY2ggbWFrZXMgbXkgam9iIGVhc2llci4gVGhhdCBtZWFucyBpdOKAmXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgdG8gcHJvYmUgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLgoKTXkgaW5pdGlhbCB0aG91Z2h0PyBUaGlzIGlzICpkZWZpbml0ZWx5KiB3b3J0aCBmdXp6aW5nLiBUaGUgZmFjdCB0aGF0IHRoZXkmIzM5O3JlIGFkZGluZyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24gdG8gYSBjb21wb25lbnQgZGVhbGluZyB3aXRoIFJTUyBjb25maWd1cmF0aW9uIHBvaW50cyB0byBhIHBvdGVudGlhbCBmb3Igc3VidGxlIHJhY2UgY29uZGl0aW9ucyBvciB1bmV4cGVjdGVkIHN0YXRlIHRyYW5zaXRpb25zLiBJJiMzOTtsbCBuZWVkIHRvIGRldmVsb3Agc29tZSBmb2N1c2VkIGZ1enppbmcgY2FtcGFpZ25zIGFyb3VuZCBpdC4KCkkmIzM5O2xsIGJlIHBheWluZyBjbG9zZSBhdHRlbnRpb24gdG8gdGhlc2Ugc3ltYm9sczogYHZpcnRuZXRfc2V0X2hhc2hmbG93YCwgYHZpcnRuZXRfc2V0X3J4ZmhgLCBhbmQgYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYC4gVGhvc2UgYXJlIHRoZSBjb3JlIGtub2JzIGJlaW5nIHR3aXN0ZWQsIHNvIGFueSBpc3N1ZXMgYXJlIGxpa2VseSB0byBzdXJmYWNlIHRoZXJlLgoKTGV0IG1lIGFsc28gY29uZmlybSB0aGF0IHRoZSBgVklSVElPX05FVGAgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkLiBTaW5jZSB0aGF0JiMzOTtzIHRoZSBkcml2ZXIgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCwgSeKAmWxsIG5lZWQgdG8gZG91YmxlIGNoZWNrIGFueSBkZXBlbmRlbmNpZXMgaXQgbWlnaHQgaGF2ZSBhbmQgbWFrZSBzdXJlIEkgaGF2ZSBhbGwgdGhlIHByb3BlciBjb25maWd1cmF0aW9ucyBhY3RpdmUuIFRoaXMgd2lsbCBuZWVkIHRvIGJlIGNoZWNrZWQgYW5kIGFkZHJlc3NlZCwgYmVmb3JlIEkgY2FuIGNvbmR1Y3QgYSBwcm9wZXIgaW52ZXN0aWdhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFZJUlRJT19ORVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXG4tLVxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDItXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0Mzpjb25maWcgVklSVElPX05FVFxuZHJpdmVycy9uZXQvS2NvbmZpZy00NDQtXHR0cmlzdGF0ZSBcJiMzNDtWaXJ0aW8gbmV0d29yayBkcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDQgMDg6MjU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjUyOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDE0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2Vzcywgc3VtbWFyaXplZCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhlIGRlcGVuZGVuY2llcyBvZiBgVklSVElPX05FVGA6CgoqKkRlY29uc3RydWN0aW5nIFZJUlRJT19ORVQmIzM5O3MgRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBgVklSVElPX05FVGAgcmVsaWVzIG9uLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byB0aGluayBhYm91dCB0aGUgZnVuZGFtZW50YWwgYnVpbGRpbmcgYmxvY2tzLiBJdCYjMzk7cyBhIG5ldHdvcmsgaW50ZXJmYWNlLCBzbyBJJiMzOTttIGFzc3VtaW5nIGl0IHNpdHMgYXRvcCB0aGUgVklSVElPIGxheWVyIGl0c2VsZi4gVGhhdCYjMzk7cyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBuZWVkIHRvIGtub3cgaG93IGRlZXBseSBpbnRlZ3JhdGVkIGl0IGlzIHdpdGggdGhlIFZJUlRJTyBjb3JlLCBhcmUgdGhlcmUgc3BlY2lmaWMgdmlydHF1ZXVlcyBvciBmZWF0dXJlcyBpdCYjMzk7cyB1c2luZz8gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgaWYgaXQgaGFzIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gT3IgaWYgdGhlcmUmIzM5O3MgYW55IGtlcm5lbC1zcGVjaWZpYyBuZXR3b3JrIHN0YWNrIGludGVyYWN0aW9uLCB3aGljaCBJJiMzOTtsbCBiZSBsb29raW5nIGludG8uIFRoaXMgaXMgZnVuZGFtZW50YWwga25vd2xlZGdlIHRvIHVuZGVyc3RhbmQgaG93IG11Y2ggZWZmb3J0IGl0IHdvdWxkIGJlIHRvIHBvcnQgdG8gYSBuZXcgcGxhdGZvcm0uIFRoZSBWSVJUSU8gc3BlY2lmaWNhdGlvbiB3aWxsIGJlIG15IGJpYmxlIGhlcmUsIG9mIGNvdXJzZS4gSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHN0YW5kYXJkIHRvIGtub3cgdGhhdC4gQXJlIHRoZXJlIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgYmUgYSBoZWFkYWNoZSBkb3duIHRoZSBsaW5lPyBGaW5hbGx5LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IGBWSVJUSU9fTkVUYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBUaGlua2luZyBhYm91dCB0aGluZ3MgbGlrZSB0aGUgbmV0d29yayBzdGFjayBpbnRlZ3JhdGlvbiwgcXVldWUgbWFuYWdlbWVudCwgYW5kIHRoZSBvdmVyYWxsIGRldmljZSBsaWZlY3ljbGUgd2lsbCBiZSBjcnVjaWFsIGZvciBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQ0MywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDQzOlx0Y29uZmlnIFZJUlRJT19ORVRcbiA0NDQ6XHRcdHRyaXN0YXRlIFwmIzM0O1ZpcnRpbyBuZXR3b3JrIGRyaXZlclwmIzM0O1xuIDQ0NTpcdFx0ZGVwZW5kcyBvbiBWSVJUSU9cbiA0NDY6XHRcdHNlbGVjdCBORVRfRkFJTE9WRVJcbiA0NDc6XHRcdHNlbGVjdCBESU1MSUJcbiA0NDg6XHRcdHNlbGVjdCBQQUdFX1BPT0xcbiA0NDk6XHRcdGhlbHBcbiA0NTA6XHRcdCAgVGhpcyBpcyB0aGUgdmlydHVhbCBuZXR3b3JrIGRyaXZlciBmb3IgdmlydGlvLiAgSXQgY2FuIGJlIHVzZWQgd2l0aFxuIDQ1MTpcdFx0ICBRRU1VIGJhc2VkIFZNTXMgKGxpa2UgS1ZNIG9yIFhlbikuICBTYXkgWSBvciBNLlxuIDQ1MjpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MDEzCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTExCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IFZpcnRpbyBDb25zaWRlcmF0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byBhcHByb2FjaCB0aGlzLCBhbmQgaXQgcmVhbGx5IGhpbmdlcyBvbiBgVklSVElPYC4gVGhhdCYjMzk7cyB0aGUgY29yZS4gVGhlcmVmb3JlLCBJIG5lZWQgdG8gbWFrZSBzdXJlIGBWSVJUSU9fTkVUYCBhbmQsIGJ5IGV4dGVuc2lvbiwganVzdCBgVklSVElPYCwgYXJlIGVuYWJsZWQuIFR5cGljYWxseSwgaWYgSSYjMzk7bSBkb2luZyB0ZXN0aW5nIHdpdGhpbiBRRU1VLCBJJiMzOTtsbCBhbHNvIG5lZWQgYFZJUlRJT19QQ0lgIHRvIGVuc3VyZSB0aGUgdmlydGlvIGRldmljZXMgYXJlIHByb3Blcmx5IHNldCB1cCwgYnV0IGZvciB0aGUgbW9tZW50LCBgVklSVElPX05FVGAgaXMgdGhlIHByaW1hcnkgY29uY2Vybi4gSSYjMzk7bSBnb2luZyB0byBkZWZpbml0ZWx5IGluY2x1ZGUgdGhhdCBvbmUuCgpOb3csIGEgc2Vjb25kYXJ5IGNvbnNpZGVyYXRpb24uIEkmIzM5O20gYWxzbyB3b25kZXJpbmcgaWYgYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCBpcyB3b3J0aCBmb2N1c2luZyBvbi4gSXQmIzM5O3MgYW4gaW50ZXJuYWwgZnVuY3Rpb24sIHNvIHRoYXQgZ2l2ZXMgbWUgcGF1c2UuIEl0IG1pZ2h0IGJlIHN0YXRpYyB3aGljaCBjb3VsZCBtZWFuIGxlc3MgYnJvYWQgc2NvcGUuIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBpbnRvIHRoYXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA0IDA4OjI1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3ZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvdmlydGlvX25ldC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zNjkwPXN0YXRpYyB2b2lkIHZpcnRuZXRfYWNrX2xpbmtfYW5ub3VuY2Uoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTM2OTYtXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6MzY5NzpzdGF0aWMgYm9vbCB2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZChzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSk7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzY5OC1cbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9MzcxMT1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X3F1ZXVlcyhzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSwgdTE2IHF1ZXVlX3BhaXJzKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNzQwLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjM3NDE6XHRcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzc0Mi1cdFx0XHQvKiByZXN0b3JlIGN0cmxfcnNzIGlmIGNvbW1pdF9yc3NfY29tbWFuZCBmYWlsZWQgKi9cbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NDEyNz1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X3JpbmdwYXJhbShzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MTk3LVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjQxOTg6c3RhdGljIGJvb2wgdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQoc3RydWN0IHZpcnRuZXRfaW5mbyAqdmkpXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDE5OS17XG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTQyOTM9c3RhdGljIGludCB2aXJ0bmV0X3NldF9oYXNoZmxvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MzU0LVx0XHRpZiAodmktXHUwMDNlZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSCkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjQzNTU6XHRcdFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MzU2LVx0XHRcdFx0dmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01NTQ5PXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTkyLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjU1OTM6XHRpZiAodXBkYXRlIFx1MDAyNlx1MDAyNiAhdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTU5NC1cdFx0aWYgKG9sZF9yc3NfaGRyKVxuLS1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02MTc0PXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNjIwNC1cbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo2MjA1Olx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYyMDYtXHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gaGFzaF90eXBlcztcbi0tXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9Njc2OT1zdGF0aWMgaW50IHZpcnRuZXRfcHJvYmUoc3RydWN0IHZpcnRpb19kZXZpY2UgKnZkZXYpXG4tLVxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTcwNzQtXHRpZiAodmktXHUwMDNlaGFzX3JzcyB8fCB2aS1cdTAwM2VoYXNfcnNzX2hhc2hfcmVwb3J0KSB7XG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NzA3NTpcdFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy03MDc2LVx0XHRcdGRldl93YXJuKFx1MDAyNnZkZXYtXHUwMDNlZGV2LCBcJiMzNDtSU1MgZGlzYWJsZWQgYmVjYXVzZSBjb21taXR0aW5nIGZhaWxlZC5cXG5cJiMzNDspO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjIwCgkJCQkJCQlvdXRwdXQ6IDEzMQoJCQkJCQkJdGhvdWdodHM6IDEzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgVmlydGlvLU5ldCBQYXRjaCoqCgpPa2F5LCB0aGlzIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBpbml0aWFsIGJpdCBpcyBqdXN0IGJvaWxlcnBsYXRlLCBzbyBJJiMzOTtsbCBza2lwIG92ZXIgdGhhdCBzdGF0aWMgY29udGV4dC4gTXkgY29yZSBpbnRlcmVzdCBpcyBpbiB0aGUgZnVuY3Rpb25zIGJlaW5nIGFkZHJlc3NlZCwgc3BlY2lmaWNhbGx5OiBgdmlydG5ldF9zZXRfaGFzaGZsb3dgLCBgdmlydG5ldF9zZXRfcnhmaGAsIGFuZCBgdmlydG5ldF9zZXRfZmVhdHVyZXNgLiBUaG9zZSBhcmUgdGhlIGtleSB0YXJnZXRzLgoKVGhlIHBhdGNoIGl0c2VsZiBpcyBmb2N1c2VkIG9uIGVycm9yIGhhbmRsaW5nIHdpdGhpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIuIEl0JiMzOTtzIHRpZ2h0ZW5pbmcgdXAgaG93IHRoZSBkcml2ZXIgcmVzcG9uZHMgd2hlbiBjb25maWd1cmluZyBSU1MgYW5kIG90aGVyIGZlYXR1cmVzIHZpYSBldGh0b29sIGFuZCBuZXRkZXYgb3BlcmF0aW9ucy4gVGhlIHJlYWwgbWVhdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZS4gV2UmIzM5O3JlIHRhbGtpbmcgc3RhbmRhcmQgbmV0bGluayBhbmQgZXRodG9vbCBpbnRlcmZhY2VzLCB3aGljaCBtYWtlcyB0ZXN0aW5nIGFuZCB2YWxpZGF0aW9uIGEgbG90IGVhc2llciwgZXNwZWNpYWxseSBpbiB0aGVzZSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgd2hlcmUgdmlydGlvX25ldCBpcyBzbyBjb21tb24gYW5kIHdlbGwtdGVzdGVkLiBTbywgdGhpcyBpcyBwb3RlbnRpYWxseSBmaXhpbmcgYSBwcmV0dHkgY3JpdGljYWwgYnVnIGFmZmVjdGluZyBhIHdpZGVseSB1c2VkIGRyaXZlci4KCkkmIzM5O20gbWVudGFsbHkgY3JlYXRpbmcgYSBjb25jZXB0dWFsICYjMzQ7c2V0LXJlc3VsdHMmIzM0OyB2YXJpYWJsZSwgYXNzdW1pbmcgdGhhdCBpdCBpcyB1c2VkIHRvIGhvbGQgb3IgcmV0dXJuIGVycm9yIGNvZGVzIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGJlaW5nIGFwcGxpZWQuIFRoYXQgaXMgaW1wb3J0YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNCAwODoyNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVElPX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAgICYjMzQ7dmlydG5ldF9zZXRfZmVhdHVyZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VklSVElPX05FVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3ZpcnRuZXRfc2V0X2hhc2hmbG93JiMzNDssCiAgICAmIzM0O3ZpcnRuZXRfc2V0X3J4ZmgmIzM0OywKICAgICYjMzQ7dmlydG5ldF9zZXRfZmVhdHVyZXMmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjA1Ljc0Nzg4NDUzNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4ODEwNzc4NDE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlZJUlRJT19ORVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ2aXJ0bmV0X3NldF9oYXNoZmxvd1wiLFxuICAgIFwidmlydG5ldF9zZXRfcnhmaFwiLFxuICAgIFwidmlydG5ldF9zZXRfZmVhdHVyZXNcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24gbG9naWMgaW4gdGhlIHZpcnRpb19uZXQgZHJpdmVyIHdoZW4gc2V0dGluZyBSU1MgY29uZmlndXJhdGlvbnMgYW5kIGZlYXR1cmVzIHZpYSBldGh0b29sIGFuZCBuZXRkZXYgb3BzLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgc3RhbmRhcmQgbmV0bGluay9ldGh0b29sIGludGVyZmFjZXMsIGFuZCB2aXJ0aW9fbmV0IGlzIGhlYXZpbHkgdXNlZCBhbmQgdGVzdGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTowNS43NDc4OTAwMjRaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM5NzgzOTQwOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGQ1Yjc4NzU4NmQ5OGMxMmE5NmFhNDg4ZWJjZjk3MzQ2NGQ2ZTdhNDFcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgNCAwODoyNTowNCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcXG5pbmRleCAzZTJhNTg3NmM2YzhjLi5jY2Q5NjMxNWExNDU3IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xcbkBAIC00Mjk1LDYgKzQyOTUsNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2hhc2hmbG93KHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdFxcdFxcdFxcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4ge1xcbiBcXHRzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7XFxuK1xcdHUzMiBvbGRfaGFzaHR5cGVzID0gdmktXFx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkO1xcbiBcXHR1MzIgbmV3X2hhc2h0eXBlcyA9IHZpLVxcdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZDtcXG4gXFx0Ym9vbCBpc19kaXNhYmxlID0gaW5mby1cXHUwMDNlZGF0YSBcXHUwMDI2IFJYSF9ESVNDQVJEO1xcbiBcXHRib29sIGlzX2w0ID0gaW5mby1cXHUwMDNlZGF0YSA9PSAoUlhIX0lQX1NSQyB8IFJYSF9JUF9EU1QgfCBSWEhfTDRfQl8wXzEgfCBSWEhfTDRfQl8yXzMpO1xcbkBAIC00MzUwLDkgKzQzNTEsMTMgQEAgc3RhdGljIGludCB2aXJ0bmV0X3NldF9oYXNoZmxvdyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRpZiAobmV3X2hhc2h0eXBlcyAhPSB2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpIHtcXG4gXFx0XFx0dmktXFx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkID0gbmV3X2hhc2h0eXBlcztcXG4gXFx0XFx0dmktXFx1MDAzZXJzc19oZHItXFx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xcbi1cXHRcXHRpZiAodmktXFx1MDAzZWRldi1cXHUwMDNlZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1JYSEFTSClcXG4tXFx0XFx0XFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpXFxuK1xcdFxcdGlmICh2aS1cXHUwMDNlZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XFxuK1xcdFxcdFxcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XFxuK1xcdFxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZCA9IG9sZF9oYXNodHlwZXM7XFxuK1xcdFxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGRyLVxcdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIob2xkX2hhc2h0eXBlcyk7XFxuIFxcdFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHRcXHR9XFxuK1xcdFxcdH1cXG4gXFx0fVxcbiBcXG4gXFx0cmV0dXJuIDA7XFxuQEAgLTU1NDYsNiArNTU1MSw4IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbiBcXHRcXHRcXHQgICAgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxcbiB7XFxuIFxcdHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpID0gbmV0ZGV2X3ByaXYoZGV2KTtcXG4rXFx0c3RydWN0IHZpcnRpb19uZXRfcnNzX2NvbmZpZ19oZHIgKm9sZF9yc3NfaGRyID0gTlVMTDtcXG4rXFx0dTggb2xkX3Jzc19rZXlbTkVUREVWX1JTU19LRVlfTEVOXTtcXG4gXFx0Ym9vbCB1cGRhdGUgPSBmYWxzZTtcXG4gXFx0aW50IGk7XFxuIFxcbkBAIC01NTUzLDE0ICs1NTYwLDggQEAgc3RhdGljIGludCB2aXJ0bmV0X3NldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdCAgICByeGZoLVxcdTAwM2VoZnVuYyAhPSBFVEhfUlNTX0hBU0hfVE9QKVxcbiBcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuIFxcbi1cXHRpZiAocnhmaC1cXHUwMDNlaW5kaXIpIHtcXG4tXFx0XFx0aWYgKCF2aS1cXHUwMDNlaGFzX3JzcylcXG4tXFx0XFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi1cXG4tXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2Vyc3NfaW5kaXJfdGFibGVfc2l6ZTsgKytpKVxcbi1cXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hkci1cXHUwMDNlaW5kaXJlY3Rpb25fdGFibGVbaV0gPSBjcHVfdG9fbGUxNihyeGZoLVxcdTAwM2VpbmRpcltpXSk7XFxuLVxcdFxcdHVwZGF0ZSA9IHRydWU7XFxuLVxcdH1cXG4rXFx0aWYgKHJ4ZmgtXFx1MDAzZWluZGlyIFxcdTAwMjZcXHUwMDI2ICF2aS1cXHUwMDNlaGFzX3JzcylcXG4rXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbiBcXG4gXFx0aWYgKHJ4ZmgtXFx1MDAzZWtleSkge1xcbiBcXHRcXHQvKiBJZiBlaXRoZXIgX0ZfSEFTSF9SRVBPUlQgb3IgX0ZfUlNTIGFyZSBuZWdvdGlhdGVkLCB0aGVcXG5AQCAtNTU2OSwxMyArNTU3MCwzNiBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4gXFx0XFx0ICovXFxuIFxcdFxcdGlmICghdmktXFx1MDAzZWhhc19yc3MgXFx1MDAyNlxcdTAwMjYgIXZpLVxcdTAwM2VoYXNfcnNzX2hhc2hfcmVwb3J0KVxcbiBcXHRcXHRcXHRyZXR1cm4gLUVPUE5PVFNVUFA7XFxuK1xcdH1cXG4rXFxuK1xcdGlmIChyeGZoLVxcdTAwM2VpbmRpcikge1xcbitcXHRcXHRvbGRfcnNzX2hkciA9IGttZW1kdXAodmktXFx1MDAzZXJzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSxcXG4rXFx0XFx0XFx0XFx0ICAgICAgR0ZQX0tFUk5FTCk7XFxuK1xcdFxcdGlmICghb2xkX3Jzc19oZHIpXFxuK1xcdFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbitcXG4rXFx0XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIHZpLVxcdTAwM2Vyc3NfaW5kaXJfdGFibGVfc2l6ZTsgKytpKVxcbitcXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hkci1cXHUwMDNlaW5kaXJlY3Rpb25fdGFibGVbaV0gPVxcbitcXHRcXHRcXHRcXHRjcHVfdG9fbGUxNihyeGZoLVxcdTAwM2VpbmRpcltpXSk7XFxuK1xcdFxcdHVwZGF0ZSA9IHRydWU7XFxuK1xcdH1cXG4gXFxuK1xcdGlmIChyeGZoLVxcdTAwM2VrZXkpIHtcXG4rXFx0XFx0bWVtY3B5KG9sZF9yc3Nfa2V5LCB2aS1cXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIHZpLVxcdTAwM2Vyc3Nfa2V5X3NpemUpO1xcbiBcXHRcXHRtZW1jcHkodmktXFx1MDAzZXJzc19oYXNoX2tleV9kYXRhLCByeGZoLVxcdTAwM2VrZXksIHZpLVxcdTAwM2Vyc3Nfa2V5X3NpemUpO1xcbiBcXHRcXHR1cGRhdGUgPSB0cnVlO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAodXBkYXRlKVxcbi1cXHRcXHR2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSk7XFxuK1xcdGlmICh1cGRhdGUgXFx1MDAyNlxcdTAwMjYgIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbitcXHRcXHRpZiAob2xkX3Jzc19oZHIpXFxuK1xcdFxcdFxcdG1lbWNweSh2aS1cXHUwMDNlcnNzX2hkciwgb2xkX3Jzc19oZHIsIHZpcnRuZXRfcnNzX2hkcl9zaXplKHZpKSk7XFxuK1xcdFxcdGlmIChyeGZoLVxcdTAwM2VrZXkpXFxuK1xcdFxcdFxcdG1lbWNweSh2aS1cXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIG9sZF9yc3Nfa2V5LCB2aS1cXHUwMDNlcnNzX2tleV9zaXplKTtcXG4rXFx0XFx0a2ZyZWUob2xkX3Jzc19oZHIpO1xcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFx0fVxcbitcXG4rXFx0a2ZyZWUob2xkX3Jzc19oZHIpO1xcbiBcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG5AQCAtNjE3MSwxMyArNjE5NSwxNyBAQCBzdGF0aWMgaW50IHZpcnRuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuIFxcdH1cXG4gXFxuIFxcdGlmICgoZGV2LVxcdTAwM2VmZWF0dXJlcyBeIGZlYXR1cmVzKSBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XFxuK1xcdFxcdF9fbGUzMiBoYXNoX3R5cGVzID0gdmktXFx1MDAzZXJzc19oZHItXFx1MDAzZWhhc2hfdHlwZXM7XFxuK1xcbiBcXHRcXHRpZiAoZmVhdHVyZXMgXFx1MDAyNiBORVRJRl9GX1JYSEFTSClcXG4gXFx0XFx0XFx0dmktXFx1MDAzZXJzc19oZHItXFx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xcbiBcXHRcXHRlbHNlXFxuIFxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGRyLVxcdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIoVklSVElPX05FVF9IQVNIX1JFUE9SVF9OT05FKTtcXG4gXFxuLVxcdFxcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKVxcbitcXHRcXHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbitcXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hkci1cXHUwMDNlaGFzaF90eXBlcyA9IGhhc2hfdHlwZXM7XFxuIFxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXHRcXHR9XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiAwO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTowNi4xNDY0MjQxNDJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjozODQxMjIzMDQ0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJWSVJUSU9fTkVUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwidmlydG5ldF9zZXRfaGFzaGZsb3dcIixcbiAgICBcInZpcnRuZXRfc2V0X3J4ZmhcIixcbiAgICBcInZpcnRuZXRfc2V0X2ZlYXR1cmVzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIGxvZ2ljIGluIHRoZSB2aXJ0aW9fbmV0IGRyaXZlciB3aGVuIHNldHRpbmcgUlNTIGNvbmZpZ3VyYXRpb25zIGFuZCBmZWF0dXJlcyB2aWEgZXRodG9vbCBhbmQgbmV0ZGV2IG9wcy4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIHN0YW5kYXJkIG5ldGxpbmsvZXRodG9vbCBpbnRlcmZhY2VzLCBhbmQgdmlydGlvX25ldCBpcyBoZWF2aWx5IHVzZWQgYW5kIHRlc3RhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgZDViNzg3NTg2ZDk4YzEyYTk2YWE0ODhlYmNmOTczNDY0ZDZlN2E0MVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDQgMDg6MjU6MDQgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMgYi9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbmluZGV4IDNlMmE1ODc2YzZjOGMuLmNjZDk2MzE1YTE0NTcgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcbisrKyBiL2RyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1xuQEAgLTQyOTUsNiArNDI5NSw3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdFx0XHRcdHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcbiB7XG4gXHRzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSA9IG5ldGRldl9wcml2KGRldik7XG4rXHR1MzIgb2xkX2hhc2h0eXBlcyA9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkO1xuIFx0dTMyIG5ld19oYXNodHlwZXMgPSB2aS1cdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZDtcbiBcdGJvb2wgaXNfZGlzYWJsZSA9IGluZm8tXHUwMDNlZGF0YSBcdTAwMjYgUlhIX0RJU0NBUkQ7XG4gXHRib29sIGlzX2w0ID0gaW5mby1cdTAwM2VkYXRhID09IChSWEhfSVBfU1JDIHwgUlhIX0lQX0RTVCB8IFJYSF9MNF9CXzBfMSB8IFJYSF9MNF9CXzJfMyk7XG5AQCAtNDM1MCw5ICs0MzUxLDEzIEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdGlmIChuZXdfaGFzaHR5cGVzICE9IHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkKSB7XG4gXHRcdHZpLVx1MDAzZXJzc19oYXNoX3R5cGVzX3NhdmVkID0gbmV3X2hhc2h0eXBlcztcbiBcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIodmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQpO1xuLVx0XHRpZiAodmktXHUwMDNlZGV2LVx1MDAzZWZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbi1cdFx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbitcdFx0aWYgKHZpLVx1MDAzZWRldi1cdTAwM2VmZWF0dXJlcyBcdTAwMjYgTkVUSUZfRl9SWEhBU0gpIHtcbitcdFx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuK1x0XHRcdFx0dmktXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xuK1x0XHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VoYXNoX3R5cGVzID0gY3B1X3RvX2xlMzIob2xkX2hhc2h0eXBlcyk7XG4gXHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbitcdFx0XHR9XG4rXHRcdH1cbiBcdH1cbiBcbiBcdHJldHVybiAwO1xuQEAgLTU1NDYsNiArNTU1MSw4IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHRcdCAgICBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4ge1xuIFx0c3RydWN0IHZpcnRuZXRfaW5mbyAqdmkgPSBuZXRkZXZfcHJpdihkZXYpO1xuK1x0c3RydWN0IHZpcnRpb19uZXRfcnNzX2NvbmZpZ19oZHIgKm9sZF9yc3NfaGRyID0gTlVMTDtcbitcdHU4IG9sZF9yc3Nfa2V5W05FVERFVl9SU1NfS0VZX0xFTl07XG4gXHRib29sIHVwZGF0ZSA9IGZhbHNlO1xuIFx0aW50IGk7XG4gXG5AQCAtNTU1MywxNCArNTU2MCw4IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0ICAgIHJ4ZmgtXHUwMDNlaGZ1bmMgIT0gRVRIX1JTU19IQVNIX1RPUClcbiBcdFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xuIFxuLVx0aWYgKHJ4ZmgtXHUwMDNlaW5kaXIpIHtcbi1cdFx0aWYgKCF2aS1cdTAwM2VoYXNfcnNzKVxuLVx0XHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi1cbi1cdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgdmktXHUwMDNlcnNzX2luZGlyX3RhYmxlX3NpemU7ICsraSlcbi1cdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWluZGlyZWN0aW9uX3RhYmxlW2ldID0gY3B1X3RvX2xlMTYocnhmaC1cdTAwM2VpbmRpcltpXSk7XG4tXHRcdHVwZGF0ZSA9IHRydWU7XG4tXHR9XG4rXHRpZiAocnhmaC1cdTAwM2VpbmRpciBcdTAwMjZcdTAwMjYgIXZpLVx1MDAzZWhhc19yc3MpXG4rXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbiBcbiBcdGlmIChyeGZoLVx1MDAzZWtleSkge1xuIFx0XHQvKiBJZiBlaXRoZXIgX0ZfSEFTSF9SRVBPUlQgb3IgX0ZfUlNTIGFyZSBuZWdvdGlhdGVkLCB0aGVcbkBAIC01NTY5LDEzICs1NTcwLDM2IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuIFx0XHQgKi9cbiBcdFx0aWYgKCF2aS1cdTAwM2VoYXNfcnNzIFx1MDAyNlx1MDAyNiAhdmktXHUwMDNlaGFzX3Jzc19oYXNoX3JlcG9ydClcbiBcdFx0XHRyZXR1cm4gLUVPUE5PVFNVUFA7XG4rXHR9XG4rXG4rXHRpZiAocnhmaC1cdTAwM2VpbmRpcikge1xuK1x0XHRvbGRfcnNzX2hkciA9IGttZW1kdXAodmktXHUwMDNlcnNzX2hkciwgdmlydG5ldF9yc3NfaGRyX3NpemUodmkpLFxuK1x0XHRcdFx0ICAgICAgR0ZQX0tFUk5FTCk7XG4rXHRcdGlmICghb2xkX3Jzc19oZHIpXG4rXHRcdFx0cmV0dXJuIC1FTk9NRU07XG4rXG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIHZpLVx1MDAzZXJzc19pbmRpcl90YWJsZV9zaXplOyArK2kpXG4rXHRcdFx0dmktXHUwMDNlcnNzX2hkci1cdTAwM2VpbmRpcmVjdGlvbl90YWJsZVtpXSA9XG4rXHRcdFx0XHRjcHVfdG9fbGUxNihyeGZoLVx1MDAzZWluZGlyW2ldKTtcbitcdFx0dXBkYXRlID0gdHJ1ZTtcbitcdH1cbiBcbitcdGlmIChyeGZoLVx1MDAzZWtleSkge1xuK1x0XHRtZW1jcHkob2xkX3Jzc19rZXksIHZpLVx1MDAzZXJzc19oYXNoX2tleV9kYXRhLCB2aS1cdTAwM2Vyc3Nfa2V5X3NpemUpO1xuIFx0XHRtZW1jcHkodmktXHUwMDNlcnNzX2hhc2hfa2V5X2RhdGEsIHJ4ZmgtXHUwMDNla2V5LCB2aS1cdTAwM2Vyc3Nfa2V5X3NpemUpO1xuIFx0XHR1cGRhdGUgPSB0cnVlO1xuIFx0fVxuIFxuLVx0aWYgKHVwZGF0ZSlcbi1cdFx0dmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpO1xuK1x0aWYgKHVwZGF0ZSBcdTAwMjZcdTAwMjYgIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xuK1x0XHRpZiAob2xkX3Jzc19oZHIpXG4rXHRcdFx0bWVtY3B5KHZpLVx1MDAzZXJzc19oZHIsIG9sZF9yc3NfaGRyLCB2aXJ0bmV0X3Jzc19oZHJfc2l6ZSh2aSkpO1xuK1x0XHRpZiAocnhmaC1cdTAwM2VrZXkpXG4rXHRcdFx0bWVtY3B5KHZpLVx1MDAzZXJzc19oYXNoX2tleV9kYXRhLCBvbGRfcnNzX2tleSwgdmktXHUwMDNlcnNzX2tleV9zaXplKTtcbitcdFx0a2ZyZWUob2xkX3Jzc19oZHIpO1xuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcdH1cbitcbitcdGtmcmVlKG9sZF9yc3NfaGRyKTtcbiBcbiBcdHJldHVybiAwO1xuIH1cbkBAIC02MTcxLDEzICs2MTk1LDE3IEBAIHN0YXRpYyBpbnQgdmlydG5ldF9zZXRfZmVhdHVyZXMoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbiBcdH1cbiBcbiBcdGlmICgoZGV2LVx1MDAzZWZlYXR1cmVzIF4gZmVhdHVyZXMpIFx1MDAyNiBORVRJRl9GX1JYSEFTSCkge1xuK1x0XHRfX2xlMzIgaGFzaF90eXBlcyA9IHZpLVx1MDAzZXJzc19oZHItXHUwMDNlaGFzaF90eXBlcztcbitcbiBcdFx0aWYgKGZlYXR1cmVzIFx1MDAyNiBORVRJRl9GX1JYSEFTSClcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMih2aS1cdTAwM2Vyc3NfaGFzaF90eXBlc19zYXZlZCk7XG4gXHRcdGVsc2VcbiBcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBjcHVfdG9fbGUzMihWSVJUSU9fTkVUX0hBU0hfUkVQT1JUX05PTkUpO1xuIFxuLVx0XHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSlcbitcdFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcbitcdFx0XHR2aS1cdTAwM2Vyc3NfaGRyLVx1MDAzZWhhc2hfdHlwZXMgPSBoYXNoX3R5cGVzO1xuIFx0XHRcdHJldHVybiAtRUlOVkFMO1xuK1x0XHR9XG4gXHR9XG4gXG4gXHRyZXR1cm4gMDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjA2LjE0NjQyNTYwMloiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5NDMzMTgwMDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQXNzZXNzaW5nIHRoZSBGdXp6aW5nIFBvdGVudGlhbCBvZiBhIE5ldHdvcmsgRHJpdmVyIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHR3ZWFrcyBgZHJpdmVycy9uZXQvdmlydGlvX25ldC5jYC4gU3BlY2lmaWNhbGx5LCBpdCdzIHRvdWNoaW5nIGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIFRoZSBrZXkgaGVyZSwgdGhvdWdoLCBpcyB0aGUgYWRkaXRpb24gb2YgZXJyb3IgaGFuZGxpbmcgYXJvdW5kIGB2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSlgLiBJdCBzb3VuZHMgbGlrZSB0aGV5J3JlIHRyeWluZyB0byByb2xsIGJhY2sgdGhlIGNoYW5nZXMgaWYgdGhhdCBjb21tYW5kIGZhaWxzLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMsIFwiSXMgdGhpcyB3b3J0aCBmdXp6aW5nP1wiIExldCdzIHNlZS4gVGhpcyAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGFuZCBpdCdzIHdpdGhpbiBhIG5ldHdvcmsgZHJpdmVyIC0gdGhhdCdzIGEgZ29vZCBzdGFydC4gSXQncyB0aGUgYHZpcnRpb19uZXRgIGRyaXZlciwgd2hpY2ggaXMgYSBiaWcgZGVhbC4gR2l2ZW4gdGhlIHByb21pbmVuY2Ugb2YgYHZpcnRpb19uZXRgIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIFFFTVUgYW5kIEdDRSwgaXQncyBkZWZpbml0ZWx5IHJlYWNoYWJsZSBhbmQgdGVzdGFibGUuIFRoYXQgbWFrZXMgaXQgYSBzdHJvbmcgY2FuZGlkYXRlLlxuXG5OZXh0IHN0ZXA6IGxldCdzIGZpZ3VyZSBvdXQgdGhlIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNgIGlzIGNvbXBpbGVkIGJhc2VkIG9uIGBDT05GSUdfVklSVElPX05FVGAuIEdvdHRhIG1ha2Ugc3VyZSBJJ20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb25maWd1cmF0aW9uLiBUaGlzIGlzIHNvbWV0aGluZyB0aGF0J3MgcG90ZW50aWFsbHkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIHNvIEkgbmVlZCB0byBrbm93IHdoZXJlIGl0IGxpdmVzIGFuZCB3aGF0IGl0IGRlcGVuZHMgb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0NTUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNToxMS4wODk3NDU3MjdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAwMzY0MjQ3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIlZJUlRJT19ORVRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvTWFrZWZpbGU9MzQ9b2JqLSQoQ09ORklHX1ZFVEgpICs9IHZldGgub1xcbmRyaXZlcnMvbmV0L01ha2VmaWxlOjM1Om9iai0kKENPTkZJR19WSVJUSU9fTkVUKSArPSB2aXJ0aW9fbmV0Lm9cXG5kcml2ZXJzL25ldC9NYWtlZmlsZS0zNi1vYmotJChDT05GSUdfVlhMQU4pICs9IHZ4bGFuL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNToxMS4xOTAxMTY4MTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MjkyMjU2MzA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uXG5cbioqSW52ZXN0aWdhdGluZyB0aGUgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5IG9mIFZpcnRpbyBOZXR3b3JraW5nIEZ1bmN0aW9uYWxpdHkqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCBgQ09ORklHX1ZJUlRJT19ORVRgIGFzIHRoZSBrZXkgY29uZmlndXJhdGlvbiBvcHRpb24uIFRoYXQncyB0aGUgb25lIHdlIG5lZWQgdG8gdHJhY2UgZGVwZW5kZW5jaWVzIGZyb20uIExldCBtZSBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBzY29wZSBvZiB0aGUgY2hhbmdlLi4uXG5cbk9rYXksIEkgc2VlIHRoZSBjb3JlIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbW9kaWZpZWQ6IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIE5vdyB0aGUgY3JpdGljYWwgcXVlc3Rpb24gaXMsIGhvdyBhcmUgdGhlc2UgZnVuY3Rpb25zICpyZWFjaGVkKj8gQmFzZWQgb24gbXkgZXhwZXJpZW5jZSwgSSdtIGJldHRpbmcgYSBzb2xpZCBwb3J0aW9uIG9mIG15IGluY29tZSBvbiB0aGUgZmFjdCB0aGF0IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AgaXMgZWl0aGVyIGFuIGV0aHRvb2wgb3BlcmF0aW9uLCBvciBhIG5ldGRldiBvcGVyYXRpb24uIFNhbWUgZm9yIGB2aXJ0bmV0X3NldF9yeGZoYCwgYWxtb3N0IGNlcnRhaW5seSBhbm90aGVyIGV0aHRvb2wgb3BlcmF0aW9uLCBhcyBJIHdvdWxkIGV4cGVjdCBSWCBoYXNoIHNldHRpbmdzIHRvIGJlIG1hbmFnZWQgYnkgZXRodG9vbC4gQW5kIGZpbmFsbHksIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AgZmVlbHMgbGlrZSBhIG5ldGRldiBvcGVyYXRpb24g4oCTIGZlYXR1cmVzIG9mdGVuIHRpZSBkaXJlY3RseSBpbnRvIHRoZSBuZXRkZXYgc3RydWN0dXJlLlxuXG5CYXNpY2FsbHksIGFsbCB0aGVzZSB3aWxsIGhhdmUgc29tZSBjb25maWd1cmF0aW9uIGtub2Igb3Igb3RoZXIgdG8gbWFrZSBpdCB3b3JrLiBJZiB0aGUgY29uZmlndXJhdGlvbiBpcyB0aGVyZSwgdGhleSB3aWxsIGJlIGVuYWJsZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQwMzgsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTUuNDgyMzc2MjVaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDcxMDYzMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydG5ldF9zZXRfaGFzaGZsb3dcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00MjM2PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MjkyLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MjkzOnN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDI5NC1cXHRcXHRcXHRcXHRjb25zdCBzdHJ1Y3QgZXRodG9vbF9yeGZoX2ZpZWxkcyAqaW5mbyxcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz01NjE0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgZXRodG9vbF9vcHMgdmlydG5ldF9ldGh0b29sX29wcyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NjM3LVxcdC5nZXRfcnhmaF9maWVsZHMgPSB2aXJ0bmV0X2dldF9oYXNoZmxvdyxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTYzODpcXHQuc2V0X3J4ZmhfZmllbGRzID0gdmlydG5ldF9zZXRfaGFzaGZsb3csXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU2MzktXFx0LmdldF9yeF9yaW5nX2NvdW50ID0gdmlydG5ldF9nZXRfcnhfcmluZ19jb3VudCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTUuNTI5NDkxNTk5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzIyNDgwNTY3OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgTmV0d29yayBDb25maWd1cmF0aW9uIE9wZXJhdGlvbnMqKlxuXG5Pa2F5LCBzbyB3ZSdyZSBkZWFsaW5nIHdpdGggbmV0d29yayBjb25maWd1cmF0aW9uIG9wZXJhdGlvbnMsIHNwZWNpZmljYWxseSB0aGUgb25lcyB0cmlnZ2VyZWQgYnkgYGV0aHRvb2xgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBJIHNlZSBgdmlydG5ldF9zZXRfcnhmaGAgbGlzdGVkLCBhbmQgSSBrbm93IHRoYXQncyBhbHNvIGludm9rZWQgdGhyb3VnaCBgZXRodG9vbGAuIEludGVyZXN0aW5nLiBCdXQsIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AsIHRoYXQgb25lIGlzIGNsZWFybHkgYSBuZXRkZXYgb3BlcmF0aW9uLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIHR3by4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgYHZpcnRuZXRfc2V0X3J4ZmhgIGFuZCBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGFyZSBpbXBsZW1lbnRlZCBhbmQgdGhlaXIgcmVsYXRpb25zaGlwcy4gV2UgbmVlZCB0byBhc3Nlc3MgdGhlaXIgcm9sZXMgaW4gdGhpcyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzI4LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTguNzU0Mjk5NjI4WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2ODg1ODk0MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0bmV0X3NldF9yeGZoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NTUzMD1zdGF0aWMgaW50IHZpcnRuZXRfZ2V0X3J4Zmgoc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTQ4LVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo1NTQ5OnN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcnhmaChzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NTUwLVxcdFxcdFxcdCAgICBzdHJ1Y3QgZXRodG9vbF9yeGZoX3BhcmFtICpyeGZoLFxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU2MTQ9c3RhdGljIGNvbnN0IHN0cnVjdCBldGh0b29sX29wcyB2aXJ0bmV0X2V0aHRvb2xfb3BzID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTU2MzUtXFx0LmdldF9yeGZoID0gdmlydG5ldF9nZXRfcnhmaCxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTYzNjpcXHQuc2V0X3J4ZmggPSB2aXJ0bmV0X3NldF9yeGZoLFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy01NjM3LVxcdC5nZXRfcnhmaF9maWVsZHMgPSB2aXJ0bmV0X2dldF9oYXNoZmxvdyxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MTkuMDIzMTYzMDhaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MjE1ODUwNTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyeSwgaW4gdGhlIGZpcnN0IHBlcnNvbiwgYXMgYW4gZXhwZXJ0IGluIHRoZSBmaWVsZCB3b3VsZCBwZXJjZWl2ZSB0aGUgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AqKlxuXG5SaWdodCwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgdmlydG5ldF9zZXRfZmVhdHVyZXNgIGZ1bmN0aW9uLiBJbW1lZGlhdGVseSwgbXkgbWluZCBzdGFydHMgdGlja2luZyB0aHJvdWdoIHRoZSBwb3RlbnRpYWwgaW1wbGljYXRpb25zLiBJdCdzIGRlc2lnbmVkLCBJJ20gYXNzdW1pbmcsIHRvIGNvbmZpZ3VyZSB0aGUgc3BlY2lmaWMgZmVhdHVyZXMgZW5hYmxlZCBvciBkaXNhYmxlZCBmb3IgYSB2aXJ0dWFsIG5ldHdvcmsgaW50ZXJmYWNlLiBHaXZlbiB0aGUgbmFtZSwgSSdkIGd1ZXNzIHRoaXMgaXMgbGlrZWx5IGhhbmRsaW5nIHRoaW5ncyBsaWtlIG9mZmxvYWQgY2FwYWJpbGl0aWVzLCBoYXJkd2FyZSBhY2NlbGVyYXRpb24sIG9yIHBlcmhhcHMgZXZlbiBmaW5lci1ncmFpbmVkIGNvbnRyb2wgb3ZlciB0aGluZ3MgbGlrZSBWTEFOIHRhZ2dpbmcgb3IgTUFDIGFkZHJlc3MgZmlsdGVyaW5nIGF0IHRoZSB2aXJ0dWFsIG5ldHdvcmsgbGV2ZWwuXG5cbkkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LiBXaGVyZSBpcyB0aGlzIGZ1bmN0aW9uIGNhbGxlZCBmcm9tPyBXaGF0J3MgdGhlIHR5cGljYWwgd29ya2Zsb3cgc3Vycm91bmRpbmcgdGhlIHZpcnR1YWwgbmV0d29yayBpbnRlcmZhY2Ugc2V0dXA/IEknbGwgcHJvYmFibHkgc3RhcnQgYnkgbG9va2luZyBmb3IgY2FsbGVycywgdGhhdCdzIGNydWNpYWwuIEknbSB0aGlua2luZywgaXMgdGhpcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZHVyaW5nIHRoZSBpbml0aWFsIGJyaW5nLXVwIG9mIHRoZSB2aXJ0dWFsIGludGVyZmFjZT8gT3IgaXMgaXQgbW9yZSBkeW5hbWljLCBwb3NzaWJseSBiZWluZyBpbnZva2VkIGR1cmluZyBydW50aW1lIHRvIGFkanVzdCBwZXJmb3JtYW5jZSBvciBzZWN1cml0eSBwYXJhbWV0ZXJzPyBUaGUgYW5zd2VyIHdpbGwgaGVhdmlseSBpbmZsdWVuY2UgbXkgbWVudGFsIG1vZGVsLlxuXG5UaGUgYXJndW1lbnRzIGFyZSBrZXkgdG9vLiBXaGF0IGtpbmQgb2YgZmVhdHVyZSBmbGFncyBvciBiaXRtYXNrcyBhcmUgcGFzc2VkIGluPyBBcmUgdGhleSBzdGFuZGFyZGl6ZWQgYWNyb3NzIGRpZmZlcmVudCBoeXBlcnZpc29yIHBsYXRmb3Jtcywgb3IgaXMgdGhlcmUgc29tZSBhYnN0cmFjdGlvbiBsYXllciBpbnZvbHZlZD8gQW55IHBsYXRmb3JtLXNwZWNpZmljIHF1aXJrcywgbGlrZSBuZWVkaW5nIHNwZWNpZmljIHJlZ2lzdGVyIHNldHRpbmdzIGZvciBhIHBhcnRpY3VsYXIgTklDLCBJIHNob3VsZCBwcmVwYXJlIG15c2VsZiBmb3IuIEkgaG9wZSBpdCdzIHdlbGwtZG9jdW1lbnRlZCFcblxuSSdsbCBhbHNvIGtlZXAgYW4gZXllIG91dCBmb3IgZXJyb3IgaGFuZGxpbmcuIEEgcG9vcmx5IHdyaXR0ZW4gYHZpcnRuZXRfc2V0X2ZlYXR1cmVzYCBjYW4gaW50cm9kdWNlIHNpZ25pZmljYW50IGluc3RhYmlsaXR5LiBJJ20gZXhwZWN0aW5nIGNoZWNrcyBmb3IgaW52YWxpZCBmZWF0dXJlIGNvbWJpbmF0aW9ucywgcG90ZW50aWFsIHJlc291cmNlIGNvbnRlbnRpb24sIGFuZCBob3cgaXQgaGFuZGxlcyB0cmFuc2llbnQgZmFpbHVyZXMuIElzIHRoZXJlIGFueSByZXRyeSBsb2dpYz8gQXJlIHRoZSBmZWF0dXJlIGNoYW5nZXMgYXRvbWljPyBJZiBub3QsIGNvbmN1cnJlbmN5IGlzc3VlcyBhcmUgZ29pbmcgdG8gcmVhciB0aGVpciB1Z2x5IGhlYWQgc29tZXdoZXJlLlxuXG5GaW5hbGx5LCBJJ2xsIGJlIGN1cmlvdXMgYWJvdXQgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBGZWF0dXJlIHRvZ2dsZXMgaGF2ZSBhIGtuYWNrIGZvciBpbXBhY3RpbmcgcGVyZm9ybWFuY2UsIGVzcGVjaWFsbHkgaWYgdGhleSBpbnZvbHZlIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIHBhY2tldCBwcm9jZXNzaW5nIHBhdGguIEFyZSBhbnkgc3RhdGlzdGljcyBiZWluZyBjb2xsZWN0ZWQ/IEFyZSB0aGVyZSBhbnkgYmVuY2htYXJrcyByZWxhdGVkIHRvIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3Qgb2YgdGhlIHRvZ2dsZXM/IFVsdGltYXRlbHksIHRoZSBnb2FsIGlzIHRvIGJhbGFuY2UgZnVuY3Rpb25hbGl0eSB3aXRoIGVmZmljaWVuY3ksIHNvIEkgaGF2ZSB0byBzY3J1dGluaXplIHRoZSBmdW5jdGlvbi4gT2theSwgbGV0J3MgZGlnIGludG8gdGhlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUyNDQsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjI0LjIzOTAxNTY3N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDk2ODQwMzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidmlydG5ldF9zZXRfZmVhdHVyZXNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02MTU4PXN0YXRpYyBpbnQgdmlydG5ldF9nZXRfcGh5c19wb3J0X25hbWUoc3RydWN0IG5ldF9kZXZpY2UgKmRldiwgY2hhciAqYnVmLFxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYxNzMtXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjYxNzQ6c3RhdGljIGludCB2aXJ0bmV0X3NldF9mZWF0dXJlcyhzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02MTc1LVxcdFxcdFxcdFxcdG5ldGRldl9mZWF0dXJlc190IGZlYXR1cmVzKVxcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTYyNzI9c3RhdGljIGNvbnN0IHN0cnVjdCBuZXRfZGV2aWNlX29wcyB2aXJ0bmV0X25ldGRldiA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02Mjg2LVxcdC5uZG9fZ2V0X3BoeXNfcG9ydF9uYW1lXFx0PSB2aXJ0bmV0X2dldF9waHlzX3BvcnRfbmFtZSxcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NjI4NzpcXHQubmRvX3NldF9mZWF0dXJlc1xcdD0gdmlydG5ldF9zZXRfZmVhdHVyZXMsXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTYyODgtXFx0Lm5kb190eF90aW1lb3V0XFx0XFx0PSB2aXJ0bmV0X3R4X3RpbWVvdXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjI0LjI4ODcwNDAwNVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0OTA0ODcyMTY3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFZpcnRpby1OZXQgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIGFkZHJlc3Npbmcgc29tZSBmYWlsdXJlIHNjZW5hcmlvcyB3aXRoaW4gYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCwgc3BlY2lmaWNhbGx5IGFkZGluZyBlcnJvciBoYW5kbGluZyBhbmQgc3RhdGUgcmVzdG9yYXRpb24uIFRoYXTigJlzIGEgZ29vZCBzdGFydC4gSSBjYW4gaW1tZWRpYXRlbHkgc2VlIHRoZSB2YWx1ZSBoZXJlIC0gZXZlcnl0aGluZyBtZW50aW9uZWQgaXMgYWNjZXNzaWJsZSBhbmQgdGVzdGFibGUgdGhyb3VnaCBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgd2hpY2ggbWFrZXMgbXkgam9iIGVhc2llci4gVGhhdCBtZWFucyBpdOKAmXMgcmVsYXRpdmVseSBzdHJhaWdodGZvcndhcmQgdG8gcHJvYmUgdGhlIGltcGFjdCBvZiB0aGVzZSBjaGFuZ2VzLlxuXG5NeSBpbml0aWFsIHRob3VnaHQ/IFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIGZ1enppbmcuIFRoZSBmYWN0IHRoYXQgdGhleSdyZSBhZGRpbmcgZXJyb3IgaGFuZGxpbmcgYW5kIHN0YXRlIHJlc3RvcmF0aW9uIHRvIGEgY29tcG9uZW50IGRlYWxpbmcgd2l0aCBSU1MgY29uZmlndXJhdGlvbiBwb2ludHMgdG8gYSBwb3RlbnRpYWwgZm9yIHN1YnRsZSByYWNlIGNvbmRpdGlvbnMgb3IgdW5leHBlY3RlZCBzdGF0ZSB0cmFuc2l0aW9ucy4gSSdsbCBuZWVkIHRvIGRldmVsb3Agc29tZSBmb2N1c2VkIGZ1enppbmcgY2FtcGFpZ25zIGFyb3VuZCBpdC5cblxuSSdsbCBiZSBwYXlpbmcgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZXNlIHN5bWJvbHM6IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIFRob3NlIGFyZSB0aGUgY29yZSBrbm9icyBiZWluZyB0d2lzdGVkLCBzbyBhbnkgaXNzdWVzIGFyZSBsaWtlbHkgdG8gc3VyZmFjZSB0aGVyZS5cblxuTGV0IG1lIGFsc28gY29uZmlybSB0aGF0IHRoZSBgVklSVElPX05FVGAgY29uZmlndXJhdGlvbiBpcyBlbmFibGVkLiBTaW5jZSB0aGF0J3MgdGhlIGRyaXZlciB3ZSdyZSB3b3JraW5nIHdpdGgsIEnigJlsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayBhbnkgZGVwZW5kZW5jaWVzIGl0IG1pZ2h0IGhhdmUgYW5kIG1ha2Ugc3VyZSBJIGhhdmUgYWxsIHRoZSBwcm9wZXIgY29uZmlndXJhdGlvbnMgYWN0aXZlLiBUaGlzIHdpbGwgbmVlZCB0byBiZSBjaGVja2VkIGFuZCBhZGRyZXNzZWQsIGJlZm9yZSBJIGNhbiBjb25kdWN0IGEgcHJvcGVyIGludmVzdGlnYXRpb24uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYwMTksIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MjkuMTkzNTc5NTgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTQyNzI1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVklSVElPX05FVFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L0tjb25maWc9NDM1PWNvbmZpZyBWRVRIXFxuLS1cXG5kcml2ZXJzL25ldC9LY29uZmlnLTQ0Mi1cXG5kcml2ZXJzL25ldC9LY29uZmlnOjQ0Mzpjb25maWcgVklSVElPX05FVFxcbmRyaXZlcnMvbmV0L0tjb25maWctNDQ0LVxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gbmV0d29yayBkcml2ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjI5LjIzOTAxMjEzMVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODAxNjcyMTEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGUgZGVwZW5kZW5jaWVzIG9mIGBWSVJUSU9fTkVUYDpcblxuKipEZWNvbnN0cnVjdGluZyBWSVJUSU9fTkVUJ3MgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgYFZJUlRJT19ORVRgIHJlbGllcyBvbi4gTXkgZmlyc3QgaW5zdGluY3QgaXMgdG8gdGhpbmsgYWJvdXQgdGhlIGZ1bmRhbWVudGFsIGJ1aWxkaW5nIGJsb2Nrcy4gSXQncyBhIG5ldHdvcmsgaW50ZXJmYWNlLCBzbyBJJ20gYXNzdW1pbmcgaXQgc2l0cyBhdG9wIHRoZSBWSVJUSU8gbGF5ZXIgaXRzZWxmLiBUaGF0J3MgdGhlIG9idmlvdXMgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBrbm93IGhvdyBkZWVwbHkgaW50ZWdyYXRlZCBpdCBpcyB3aXRoIHRoZSBWSVJUSU8gY29yZSwgYXJlIHRoZXJlIHNwZWNpZmljIHZpcnRxdWV1ZXMgb3IgZmVhdHVyZXMgaXQncyB1c2luZz8gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgaWYgaXQgaGFzIHNwZWNpZmljIGhhcmR3YXJlIGRlcGVuZGVuY2llcy4gT3IgaWYgdGhlcmUncyBhbnkga2VybmVsLXNwZWNpZmljIG5ldHdvcmsgc3RhY2sgaW50ZXJhY3Rpb24sIHdoaWNoIEknbGwgYmUgbG9va2luZyBpbnRvLiBUaGlzIGlzIGZ1bmRhbWVudGFsIGtub3dsZWRnZSB0byB1bmRlcnN0YW5kIGhvdyBtdWNoIGVmZm9ydCBpdCB3b3VsZCBiZSB0byBwb3J0IHRvIGEgbmV3IHBsYXRmb3JtLiBUaGUgVklSVElPIHNwZWNpZmljYXRpb24gd2lsbCBiZSBteSBiaWJsZSBoZXJlLCBvZiBjb3Vyc2UuIEknbGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhlIHN0YW5kYXJkIHRvIGtub3cgdGhhdC4gQXJlIHRoZXJlIGFueSBwbGF0Zm9ybSBzcGVjaWZpYyBvcHRpbWl6YXRpb25zIHRoYXQgY291bGQgYmUgYSBoZWFkYWNoZSBkb3duIHRoZSBsaW5lPyBGaW5hbGx5LCBJIG5lZWQgdG8gY29uc2lkZXIgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcy4gQXJlIHRoZXJlIG90aGVyIGRyaXZlcnMgb3IgbW9kdWxlcyB0aGF0IGBWSVJUSU9fTkVUYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5PyBUaGlua2luZyBhYm91dCB0aGluZ3MgbGlrZSB0aGUgbmV0d29yayBzdGFjayBpbnRlZ3JhdGlvbiwgcXVldWUgbWFuYWdlbWVudCwgYW5kIHRoZSBvdmVyYWxsIGRldmljZSBsaWZlY3ljbGUgd2lsbCBiZSBjcnVjaWFsIGZvciBhIGhvbGlzdGljIHVuZGVyc3RhbmRpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1MjksIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTozMy4wNDA2ODcyNzNaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzI4NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA0NDMsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0NDM6XFx0Y29uZmlnIFZJUlRJT19ORVRcXG4gNDQ0OlxcdFxcdHRyaXN0YXRlIFxcXCJWaXJ0aW8gbmV0d29yayBkcml2ZXJcXFwiXFxuIDQ0NTpcXHRcXHRkZXBlbmRzIG9uIFZJUlRJT1xcbiA0NDY6XFx0XFx0c2VsZWN0IE5FVF9GQUlMT1ZFUlxcbiA0NDc6XFx0XFx0c2VsZWN0IERJTUxJQlxcbiA0NDg6XFx0XFx0c2VsZWN0IFBBR0VfUE9PTFxcbiA0NDk6XFx0XFx0aGVscFxcbiA0NTA6XFx0XFx0ICBUaGlzIGlzIHRoZSB2aXJ0dWFsIG5ldHdvcmsgZHJpdmVyIGZvciB2aXJ0aW8uICBJdCBjYW4gYmUgdXNlZCB3aXRoXFxuIDQ1MTpcXHRcXHQgIFFFTVUgYmFzZWQgVk1NcyAobGlrZSBLVk0gb3IgWGVuKS4gIFNheSBZIG9yIE0uXFxuIDQ1MjpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MzMuMDQwNzYxMjYzWiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0ODkyODM2NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgVmlydGlvIENvbnNpZGVyYXRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byBhcHByb2FjaCB0aGlzLCBhbmQgaXQgcmVhbGx5IGhpbmdlcyBvbiBgVklSVElPYC4gVGhhdCdzIHRoZSBjb3JlLiBUaGVyZWZvcmUsIEkgbmVlZCB0byBtYWtlIHN1cmUgYFZJUlRJT19ORVRgIGFuZCwgYnkgZXh0ZW5zaW9uLCBqdXN0IGBWSVJUSU9gLCBhcmUgZW5hYmxlZC4gVHlwaWNhbGx5LCBpZiBJJ20gZG9pbmcgdGVzdGluZyB3aXRoaW4gUUVNVSwgSSdsbCBhbHNvIG5lZWQgYFZJUlRJT19QQ0lgIHRvIGVuc3VyZSB0aGUgdmlydGlvIGRldmljZXMgYXJlIHByb3Blcmx5IHNldCB1cCwgYnV0IGZvciB0aGUgbW9tZW50LCBgVklSVElPX05FVGAgaXMgdGhlIHByaW1hcnkgY29uY2Vybi4gSSdtIGdvaW5nIHRvIGRlZmluaXRlbHkgaW5jbHVkZSB0aGF0IG9uZS5cblxuTm93LCBhIHNlY29uZGFyeSBjb25zaWRlcmF0aW9uLiBJJ20gYWxzbyB3b25kZXJpbmcgaWYgYHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kYCBpcyB3b3J0aCBmb2N1c2luZyBvbi4gSXQncyBhbiBpbnRlcm5hbCBmdW5jdGlvbiwgc28gdGhhdCBnaXZlcyBtZSBwYXVzZS4gSXQgbWlnaHQgYmUgc3RhdGljIHdoaWNoIGNvdWxkIG1lYW4gbGVzcyBicm9hZCBzY29wZS4gSSdsbCBuZWVkIHRvIGxvb2sgaW50byB0aGF0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MDEzLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTExLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDRUMDg6MjU6MzguNTMwMDQ3MzUyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODYxMjA4OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC92aXJ0aW9fbmV0LmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTM2OTA9c3RhdGljIHZvaWQgdmlydG5ldF9hY2tfbGlua19hbm5vdW5jZShzdHJ1Y3QgdmlydG5ldF9pbmZvICp2aSlcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNjk2LVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzozNjk3OnN0YXRpYyBib29sIHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKTtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzY5OC1cXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz0zNzExPXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfcXVldWVzKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpLCB1MTYgcXVldWVfcGFpcnMpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtMzc0MC1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6Mzc0MTpcXHRcXHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy0zNzQyLVxcdFxcdFxcdC8qIHJlc3RvcmUgY3RybF9yc3MgaWYgY29tbWl0X3Jzc19jb21tYW5kIGZhaWxlZCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTQxMjc9c3RhdGljIGludCB2aXJ0bmV0X3NldF9yaW5ncGFyYW0oc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MTk3LVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo0MTk4OnN0YXRpYyBib29sIHZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHN0cnVjdCB2aXJ0bmV0X2luZm8gKnZpKVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MTk5LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz00MjkzPXN0YXRpYyBpbnQgdmlydG5ldF9zZXRfaGFzaGZsb3coc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy00MzU0LVxcdFxcdGlmICh2aS1cXHUwMDNlZGV2LVxcdTAwM2VmZWF0dXJlcyBcXHUwMDI2IE5FVElGX0ZfUlhIQVNIKSB7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jOjQzNTU6XFx0XFx0XFx0aWYgKCF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNDM1Ni1cXHRcXHRcXHRcXHR2aS1cXHUwMDNlcnNzX2hhc2hfdHlwZXNfc2F2ZWQgPSBvbGRfaGFzaHR5cGVzO1xcbi0tXFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jPTU1NDk9c3RhdGljIGludCB2aXJ0bmV0X3NldF9yeGZoKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTU5Mi1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NTU5MzpcXHRpZiAodXBkYXRlIFxcdTAwMjZcXHUwMDI2ICF2aXJ0bmV0X2NvbW1pdF9yc3NfY29tbWFuZCh2aSkpIHtcXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNTU5NC1cXHRcXHRpZiAob2xkX3Jzc19oZHIpXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM9NjE3ND1zdGF0aWMgaW50IHZpcnRuZXRfc2V0X2ZlYXR1cmVzKHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmMtNjIwNC1cXG5kcml2ZXJzL25ldC92aXJ0aW9fbmV0LmM6NjIwNTpcXHRcXHRpZiAoIXZpcnRuZXRfY29tbWl0X3Jzc19jb21tYW5kKHZpKSkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy02MjA2LVxcdFxcdFxcdHZpLVxcdTAwM2Vyc3NfaGRyLVxcdTAwM2VoYXNoX3R5cGVzID0gaGFzaF90eXBlcztcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYz02NzY5PXN0YXRpYyBpbnQgdmlydG5ldF9wcm9iZShzdHJ1Y3QgdmlydGlvX2RldmljZSAqdmRldilcXG4tLVxcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYy03MDc0LVxcdGlmICh2aS1cXHUwMDNlaGFzX3JzcyB8fCB2aS1cXHUwMDNlaGFzX3Jzc19oYXNoX3JlcG9ydCkge1xcbmRyaXZlcnMvbmV0L3ZpcnRpb19uZXQuYzo3MDc1OlxcdFxcdGlmICghdmlydG5ldF9jb21taXRfcnNzX2NvbW1hbmQodmkpKSB7XFxuZHJpdmVycy9uZXQvdmlydGlvX25ldC5jLTcwNzYtXFx0XFx0XFx0ZGV2X3dhcm4oXFx1MDAyNnZkZXYtXFx1MDAzZWRldiwgXFxcIlJTUyBkaXNhYmxlZCBiZWNhdXNlIGNvbW1pdHRpbmcgZmFpbGVkLlxcXFxuXFxcIik7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA0VDA4OjI1OjM4LjU3ODY2NDQxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU4OTk1MTIxNjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFZpcnRpby1OZXQgUGF0Y2gqKlxuXG5Pa2F5LCB0aGlzIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIFRoZSBpbml0aWFsIGJpdCBpcyBqdXN0IGJvaWxlcnBsYXRlLCBzbyBJJ2xsIHNraXAgb3ZlciB0aGF0IHN0YXRpYyBjb250ZXh0LiBNeSBjb3JlIGludGVyZXN0IGlzIGluIHRoZSBmdW5jdGlvbnMgYmVpbmcgYWRkcmVzc2VkLCBzcGVjaWZpY2FsbHk6IGB2aXJ0bmV0X3NldF9oYXNoZmxvd2AsIGB2aXJ0bmV0X3NldF9yeGZoYCwgYW5kIGB2aXJ0bmV0X3NldF9mZWF0dXJlc2AuIFRob3NlIGFyZSB0aGUga2V5IHRhcmdldHMuXG5cblRoZSBwYXRjaCBpdHNlbGYgaXMgZm9jdXNlZCBvbiBlcnJvciBoYW5kbGluZyB3aXRoaW4gdGhlIHZpcnRpb19uZXQgZHJpdmVyLiBJdCdzIHRpZ2h0ZW5pbmcgdXAgaG93IHRoZSBkcml2ZXIgcmVzcG9uZHMgd2hlbiBjb25maWd1cmluZyBSU1MgYW5kIG90aGVyIGZlYXR1cmVzIHZpYSBldGh0b29sIGFuZCBuZXRkZXYgb3BlcmF0aW9ucy4gVGhlIHJlYWwgbWVhdCBvZiB0aGlzIGlzIHRoYXQgdGhlc2UgZnVuY3Rpb25zIGFyZSBhY2Nlc3NpYmxlIGZyb20gdXNlciBzcGFjZS4gV2UncmUgdGFsa2luZyBzdGFuZGFyZCBuZXRsaW5rIGFuZCBldGh0b29sIGludGVyZmFjZXMsIHdoaWNoIG1ha2VzIHRlc3RpbmcgYW5kIHZhbGlkYXRpb24gYSBsb3QgZWFzaWVyLCBlc3BlY2lhbGx5IGluIHRoZXNlIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB3aGVyZSB2aXJ0aW9fbmV0IGlzIHNvIGNvbW1vbiBhbmQgd2VsbC10ZXN0ZWQuIFNvLCB0aGlzIGlzIHBvdGVudGlhbGx5IGZpeGluZyBhIHByZXR0eSBjcml0aWNhbCBidWcgYWZmZWN0aW5nIGEgd2lkZWx5IHVzZWQgZHJpdmVyLlxuXG5JJ20gbWVudGFsbHkgY3JlYXRpbmcgYSBjb25jZXB0dWFsIFwic2V0LXJlc3VsdHNcIiB2YXJpYWJsZSwgYXNzdW1pbmcgdGhhdCBpdCBpcyB1c2VkIHRvIGhvbGQgb3IgcmV0dXJuIGVycm9yIGNvZGVzIHdoZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYXJlIGJlaW5nIGFwcGxpZWQuIFRoYXQgaXMgaW1wb3J0YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjIwLCJPdXRwdXRUb2tlbnMiOjEzMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNFQwODoyNTo0NC40NzgxNzkxNzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDQ3MjE5OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVElPX05FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRuZXRfc2V0X2hhc2hmbG93XCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9yeGZoXCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9mZWF0dXJlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVycm9yIGhhbmRsaW5nIGFuZCBzdGF0ZSByZXN0b3JhdGlvbiBsb2dpYyBpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIgd2hlbiBzZXR0aW5nIFJTUyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgdmlhIGV0aHRvb2wgYW5kIG5ldGRldiBvcHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgYW5kIHZpcnRpb19uZXQgaXMgaGVhdmlseSB1c2VkIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVklSVElPX05FVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInZpcnRuZXRfc2V0X2hhc2hmbG93XCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9yeGZoXCIsXG4gICAgXCJ2aXJ0bmV0X3NldF9mZWF0dXJlc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGVycm9yIGhhbmRsaW5nIGFuZCBzdGF0ZSByZXN0b3JhdGlvbiBsb2dpYyBpbiB0aGUgdmlydGlvX25ldCBkcml2ZXIgd2hlbiBzZXR0aW5nIFJTUyBjb25maWd1cmF0aW9ucyBhbmQgZmVhdHVyZXMgdmlhIGV0aHRvb2wgYW5kIG5ldGRldiBvcHMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBzdGFuZGFyZCBuZXRsaW5rL2V0aHRvb2wgaW50ZXJmYWNlcywgYW5kIHZpcnRpb19uZXQgaXMgaGVhdmlseSB1c2VkIGFuZCB0ZXN0YWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[1] Phase: Succeeded StartedAt: 2026-08-04 08:25:56 +0000 UTC FinishedAt: 2026-08-04 08:25:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-04 08:25:56 +0000 UTC FinishedAt: 2026-08-04 08:25:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2] Phase: Succeeded StartedAt: 2026-08-04 08:25:56 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-04 08:25:56 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-04 08:25:56 +0000 UTC FinishedAt: 2026-08-04 08:26:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-04 08:25:56 +0000 UTC FinishedAt: 2026-08-04 08:26:01 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowg6pb8/series-workflowg6pb8-convert-artifact-2640575817/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-04 08:26:06 +0000 UTC FinishedAt: 2026-08-04 08:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-04 08:26:06 +0000 UTC FinishedAt: 2026-08-04 08:42:05 +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:*adc7ad39-06a0-4347-9043-1eb8232d2264,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-workflowg6pb8/series-workflowg6pb8-convert-artifact-2640575817/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": "63a2b52a-0a5e-48d9-9edf-2016aca2283f", "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-workflowg6pb8/series-workflowg6pb8-build-action-4234509351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-04 08:26:06 +0000 UTC FinishedAt: 2026-08-04 08:41:55 +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:*adc7ad39-06a0-4347-9043-1eb8232d2264,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-workflowg6pb8/series-workflowg6pb8-convert-artifact-2640575817/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": "63a2b52a-0a5e-48d9-9edf-2016aca2283f", "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-workflowg6pb8/series-workflowg6pb8-build-action-4234509351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-04 08:42:05 +0000 UTC FinishedAt: 2026-08-04 08:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-04 08:42:05 +0000 UTC FinishedAt: 2026-08-04 08:42:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-04 08:42:05 +0000 UTC FinishedAt: 2026-08-04 08:42:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-04 08:42:05 +0000 UTC FinishedAt: 2026-08-04 08:42:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowg6pb8/series-workflowg6pb8-convert-artifact-2621061980/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-04 08:42:16 +0000 UTC FinishedAt: 2026-08-04 08:44:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-04 08:42:16 +0000 UTC FinishedAt: 2026-08-04 08:44:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*63a2b52a-0a5e-48d9-9edf-2016aca2283f,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-workflowg6pb8/series-workflowg6pb8-build-action-4234509351/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-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-04 08:44:16 +0000 UTC FinishedAt: 2026-08-04 08:44:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-04 08:44:16 +0000 UTC FinishedAt: 2026-08-04 08:44:16 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-04 08:44:16 +0000 UTC FinishedAt: 2026-08-04 09:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-04 08:44:16 +0000 UTC FinishedAt: 2026-08-04 09:00:07 +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:*adc7ad39-06a0-4347-9043-1eb8232d2264,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-workflowg6pb8/series-workflowg6pb8-convert-artifact-2621061980/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": "66c07426-9fe4-4838-ba6d-0afcd69c02f1", "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-workflowg6pb8/series-workflowg6pb8-build-action-2933981112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-04 08:44:16 +0000 UTC FinishedAt: 2026-08-04 08:59:57 +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:*adc7ad39-06a0-4347-9043-1eb8232d2264,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-workflowg6pb8/series-workflowg6pb8-convert-artifact-2621061980/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": "66c07426-9fe4-4838-ba6d-0afcd69c02f1", "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-workflowg6pb8/series-workflowg6pb8-build-action-2933981112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-04 09:00:07 +0000 UTC FinishedAt: 2026-08-04 09:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-04 09:00:07 +0000 UTC FinishedAt: 2026-08-04 09:00:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-04 09:00:07 +0000 UTC FinishedAt: 2026-08-04 09:02:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-04 09:00:07 +0000 UTC FinishedAt: 2026-08-04 09:02:01 +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:*66c07426-9fe4-4838-ba6d-0afcd69c02f1,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-workflowg6pb8/series-workflowg6pb8-build-action-2933981112/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-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Failed StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Failed StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +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":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"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:*63a2b52a-0a5e-48d9-9edf-2016aca2283f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*66c07426-9fe4-4838-ba6d-0afcd69c02f1,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-workflowg6pb8/series-workflowg6pb8-build-action-4234509351/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-workflowg6pb8/series-workflowg6pb8-build-action-2933981112/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:02:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:02:16 +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":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"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-workflowg6pb8/series-workflowg6pb8-convert-artifact-2675385381/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:02:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:02:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-04 09:02:11 +0000 UTC FinishedAt: 2026-08-04 09:02:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Failed StartedAt: 2026-08-04 09:02:21 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowg6pb8[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["virtnet_set_hashflow","virtnet_set_rxfh","virtnet_set_features"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"5b4f243f78a533abf414bfd96325aa2c96e711a3","config_name":"upstream-apparmor-kasan.config","enable_configs":["VIRTIO_NET"],"series_id":"90b3f612-40e5-46a3-b1f8-7fa096a9f8ab","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Error StartedAt: 2026-08-04 09:02:21 +0000 UTC FinishedAt: 2026-08-04 09:29:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*63a2b52a-0a5e-48d9-9edf-2016aca2283f,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*66c07426-9fe4-4838-ba6d-0afcd69c02f1,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-workflowg6pb8/series-workflowg6pb8-build-action-4234509351/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-workflowg6pb8/series-workflowg6pb8-build-action-2933981112/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-workflowg6pb8/series-workflowg6pb8-convert-artifact-2675385381/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil