Name: series-workflowff7nf Phase: Succeeded StartedAt: 2026-07-11 14:34:16 +0000 UTC FinishedAt: 2026-07-11 19:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[0] Phase: Succeeded StartedAt: 2026-07-11 14:34:16 +0000 UTC FinishedAt: 2026-07-11 15:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[0].run-triage Phase: Succeeded StartedAt: 2026-07-11 14:34:16 +0000 UTC FinishedAt: 2026-07-11 15:00:29 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "86ff341a-17ce-470d-98d5-07a5f39b6153" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_udp_rcast_add", "tipc_udp_rcast_disc", "tipc_udp_nl_bearer_add", "tipc_udp_enable", "cleanup_bearer" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFRJUEMgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3BpbmxvY2sgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIHJlcGxpY2FzdCBsaXN0LiBUaGlzIHByZXZlbnRzIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBwb3RlbnRpYWwgbGlzdCBjb3JydXB0aW9uIHdoZW4gbXVsdGlwbGUgcGFja2V0cyBvciBuZXRsaW5rIGNvbW1hbmRzIGF0dGVtcHQgdG8gYWRkIHRoZSBzYW1lIHBlZXIgY29uY3VycmVudGx5LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNGE0YjU1MmUwNjllNDI3MDlmZTI0M2ZhZTdhODQyNWUzYTA1YjY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTQ6NTk6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuaW5kZXggNjJhZTdmNWI1ODQwOWMuLjNmMGQ3NWQ3MjRlZTE1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvdWRwX21lZGlhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL3VkcF9tZWRpYS5jXG5AQCAtOTQsNiAmIzQzOzk0LDcgQEAgc3RydWN0IHVkcF9yZXBsaWNhc3Qge1xuICAqIEBpZmluZGV4Olx0bG9jYWwgYWRkcmVzcyBzY29wZVxuICAqIEB3b3JrOlx0dXNlZCB0byBzY2hlZHVsZSBkZWZlcnJlZCB3b3JrIG9uIGEgYmVhcmVyXG4gICogQHJjYXN0Olx0YXNzb2NpYXRlZCB1ZHBfcmVwbGljYXN0IGNvbnRhaW5lclxuJiM0MzsgKiBAcmNhc3RfbG9jazpcdHNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVyc1xuICAqL1xuIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHN0cnVjdCB0aXBjX2JlYXJlciBfX3JjdSAqYmVhcmVyO1xuQEAgLTEwMSw2ICYjNDM7MTAyLDcgQEAgc3RydWN0IHVkcF9iZWFyZXIge1xuIFx0dTMyIGlmaW5kZXg7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcbiBcdHN0cnVjdCB1ZHBfcmVwbGljYXN0IHJjYXN0O1xuJiM0MztcdHNwaW5sb2NrX3QgcmNhc3RfbG9jazsgLyogcHJvdGVjdHMgcmNhc3QubGlzdCAqL1xuIH07XG4gXG4gc3RhdGljIGludCB0aXBjX3VkcF9pc19tY2FzdF9hZGRyKHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbkBAIC0yNzgsMjYgJiM0MzsyODAsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3NlbmRfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuLVx0XHRcdFx0ICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuLXtcbi1cdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcbi1cdHN0cnVjdCB1ZHBfYmVhcmVyICp1Yjtcbi1cbi1cdHViID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYi1cdTAwM2VtZWRpYV9wdHIpO1xuLVx0aWYgKCF1Yikge1xuLVx0XHRwcl9lcnJfcmF0ZWxpbWl0ZWQoXCYjMzQ7VURQIGJlYXJlciBpbnN0YW5jZSBub3QgZm91bmRcXG5cJiMzNDspO1xuLVx0XHRyZXR1cm4gZmFsc2U7XG4tXHR9XG4tXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuLVx0XHRpZiAoIW1lbWNtcChcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSkpXG4tXHRcdFx0cmV0dXJuIHRydWU7XG4tXHR9XG4tXG4tXHRyZXR1cm4gZmFsc2U7XG4tfVxuLVxuIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdFx0XHQgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXG4ge1xuQEAgLTMwOCwxNiAmIzQzOzI5MCwzNCBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRpZiAoIXViKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiYjNDM7XHQvKiBTZXJpYWxpemUgd2l0aCBvdGhlciB1cGRhdGVycyBhbmQgcmVqZWN0IGEgZHVwbGljYXRlIGJlZm9yZVxuJiM0MztcdCAqIGFsbG9jYXRpbmcsIHNvIGEgZmxvb2Qgb2YgdGhlIHNhbWUgYWRkcmVzcyBjYW4mIzM5O3QgY2h1cm4gdGhlXG4mIzQzO1x0ICogYWxsb2NhdG9yLlxuJiM0MztcdCAqL1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJjYXN0LCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XG4mIzQzO1x0XHRpZiAoIW1lbWNtcChcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2YoKmFkZHIpKSkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTtcbi1cdGlmICghcmNhc3QpXG4mIzQzO1x0aWYgKCFyY2FzdCkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiBcbiBcdGlmIChkc3RfY2FjaGVfaW5pdChcdTAwMjZyY2FzdC1cdTAwM2Vkc3RfY2FjaGUsIEdGUF9BVE9NSUMpKSB7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdFx0a2ZyZWUocmNhc3QpO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XG4mIzQzO1x0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuJiM0MztcdGItXHUwMDNlYmNhc3RfYWRkci5icm9hZGNhc3QgPSBUSVBDX1JFUExJQ0FTVF9TVVBQT1JUO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQKVxuIFx0XHRwcl9pbmZvKFwmIzM0O05ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcblwmIzM0OywgXHUwMDI2cmNhc3QtXHUwMDNlYWRkci5pcHY0KTtcbkBAIC0zMjUsOCAmIzQzOzMyNSw2IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdGVsc2UgaWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQVjYpXG4gXHRcdHByX2luZm8oXCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxuXCYjMzQ7LCBcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLmlwdjYpO1xuICNlbmRpZlxuLVx0Yi1cdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XG4tXHRsaXN0X2FkZF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMzYxLDkgJiM0MzszNTksNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcdTAwMjZzcmMpKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNnNyYyk7XG4gfVxuIFxuQEAgLTY0NCw5ICYjNDM7NjM5LDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFx1MDAyNmFkZHIpKVxuLVx0XHRyZXR1cm4gMDtcbi1cbiBcdHJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2YWRkcik7XG4gfVxuIFxuQEAgLTY3OSw2ICYjNDM7NjcxLDcgQEAgc3RhdGljIGludCB0aXBjX3VkcF9lbmFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCk7XG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXG4gXHRcdGdvdG8gZXJyO1xuQEAgLTgxOSwxMCAmIzQzOzgxMiwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4gXHRzdHJ1Y3QgdGlwY19uZXQgKnRuO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyY2FzdCwgdG1wLCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XG4gXHRcdGxpc3RfZGVsX3JjdShcdTAwMjZyY2FzdC1cdTAwM2VsaXN0KTtcbiBcdFx0Y2FsbF9yY3VfaHVycnkoXHUwMDI2cmNhc3QtXHUwMDNlcmN1LCByY2FzdF9mcmVlX3JjdSk7XG4gXHR9XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVx1MDAzZXNrKSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7LAogICAgJiMzNDtUSVBDX01FRElBX1VEUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfdWRwX3JjYXN0X2FkZCYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9kaXNjJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX25sX2JlYXJlcl9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfZW5hYmxlJiMzNDssCiAgICAmIzM0O2NsZWFudXBfYmVhcmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDRhNGI1NTJlMDY5ZTQyNzA5ZmUyNDNmYWU3YTg0MjVlM2EwNWI2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDExIDE0OjU5OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuYwppbmRleCA2MmFlN2Y1YjU4NDA5Yy4uM2YwZDc1ZDcyNGVlMTUgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL3VkcF9tZWRpYS5jCkBAIC05NCw2ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgdWRwX3JlcGxpY2FzdCB7CiAgKiBAaWZpbmRleDoJbG9jYWwgYWRkcmVzcyBzY29wZQogICogQHdvcms6CXVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlcgogICogQHJjYXN0Oglhc3NvY2lhdGVkIHVkcF9yZXBsaWNhc3QgY29udGFpbmVyCiYjNDM7ICogQHJjYXN0X2xvY2s6CXNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVycwogICovCiBzdHJ1Y3QgdWRwX2JlYXJlciB7CiAJc3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7CkBAIC0xMDEsNiAmIzQzOzEwMiw3IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHsKIAl1MzIgaWZpbmRleDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDsKJiM0MzsJc3BpbmxvY2tfdCByY2FzdF9sb2NrOyAvKiBwcm90ZWN0cyByY2FzdC5saXN0ICovCiB9OwogCiBzdGF0aWMgaW50IHRpcGNfdWRwX2lzX21jYXN0X2FkZHIoc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKQpAQCAtMjc4LDI2ICYjNDM7MjgwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGJvb2wgdGlwY191ZHBfaXNfa25vd25fcGVlcihzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsCi0JCQkJICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKQotewotCXN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDsKLQlzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7Ci0KLQl1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItJmd0O21lZGlhX3B0cik7Ci0JaWYgKCF1YikgewotCQlwcl9lcnJfcmF0ZWxpbWl0ZWQoJiMzNDtVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxuJiMzNDspOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsICZhbXA7dWItJmd0O3JjYXN0Lmxpc3QsIGxpc3QpIHsKLQkJaWYgKCFtZW1jbXAoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpKQotCQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsCiAJCQkgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpCiB7CkBAIC0zMDgsMTYgJiM0MzsyOTAsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCWlmICghdWIpCiAJCXJldHVybiAtRU5PREVWOwogCiYjNDM7CS8qIFNlcmlhbGl6ZSB3aXRoIG90aGVyIHVwZGF0ZXJzIGFuZCByZWplY3QgYSBkdXBsaWNhdGUgYmVmb3JlCiYjNDM7CSAqIGFsbG9jYXRpbmcsIHNvIGEgZmxvb2Qgb2YgdGhlIHNhbWUgYWRkcmVzcyBjYW4mIzM5O3QgY2h1cm4gdGhlCiYjNDM7CSAqIGFsbG9jYXRvci4KJiM0MzsJICovCiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCwgbGlzdCkgewomIzQzOwkJaWYgKCFtZW1jbXAoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCXJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTsKLQlpZiAoIXJjYXN0KQomIzQzOwlpZiAoIXJjYXN0KSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAogCWlmIChkc3RfY2FjaGVfaW5pdCgmYW1wO3JjYXN0LSZndDtkc3RfY2FjaGUsIEdGUF9BVE9NSUMpKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJa2ZyZWUocmNhc3QpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKIAltZW1jcHkoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpOwomIzQzOwlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiYjNDM7CWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAobnRvaHMoYWRkci0mZ3Q7cHJvdG8pID09IEVUSF9QX0lQKQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk0XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY0KTsKQEAgLTMyNSw4ICYjNDM7MzI1LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCWVsc2UgaWYgKG50b2hzKGFkZHItJmd0O3Byb3RvKSA9PSBFVEhfUF9JUFY2KQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY2KTsKICNlbmRpZgotCWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKLQlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM2MSw5ICYjNDM7MzU5LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGxpa2VseSh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsICZhbXA7c3JjKSkpCi0JCXJldHVybiAwOwotCiAJcmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCAmYW1wO3NyYyk7CiB9CiAKQEAgLTY0NCw5ICYjNDM7NjM5LDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCAmYW1wO2FkZHIpKQotCQlyZXR1cm4gMDsKLQogCXJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgJmFtcDthZGRyKTsKIH0KIApAQCAtNjc5LDYgJiM0Mzs2NzEsNyBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYiwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3ViLSZndDtyY2FzdC5saXN0KTsKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pCiAJCWdvdG8gZXJyOwpAQCAtODE5LDEwICYjNDM7ODEyLDEyIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7CiAJc3RydWN0IHRpcGNfbmV0ICp0bjsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsICZhbXA7dWItJmd0O3JjYXN0Lmxpc3QsIGxpc3QpIHsKIAkJbGlzdF9kZWxfcmN1KCZhbXA7cmNhc3QtJmd0O2xpc3QpOwogCQljYWxsX3JjdV9odXJyeSgmYW1wO3JjYXN0LSZndDtyY3UsIHJjYXN0X2ZyZWVfcmN1KTsKIAl9CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7dWItJmd0O3JjYXN0X2xvY2spOwogCiAJdG4gPSB0aXBjX25ldChzb2NrX25ldCh1Yi0mZ3Q7c2spKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBVRFAgTWVkaWEgQmVhcmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3RpcGMvdWRwX21lZGlhLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUsIGEgcmFjZSBjb25kaXRpb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gd2l0aGluIHRoZSBUSVBDIHN1YnN5c3RlbS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBwcm90ZWN0aW5nIHRoZSBgcmNhc3QubGlzdGAgd2l0aGluIHRoZSBgc3RydWN0IHVkcF9iZWFyZXJgLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgYHJjYXN0X2xvY2tgIHRvIG1hbmFnZSBhY2Nlc3MgYW5kIHVwZGF0ZXMgdG8gdGhpcyBsaXN0LCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBlZmZlY3RpdmUgc3RyYXRlZ3kuCgpUaGUgb3RoZXIga2V5IGNoYW5nZSBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgYHRpcGNfdWRwX2lzX2tub3duX3BlZXJgIGZ1bmN0aW9uLiBJbnN0ZWFkIG9mIHRoYXQgZnVuY3Rpb24gdGhleSYjMzk7dmUgY29uc29saWRhdGVkIGl0cyBsb2dpYyBkaXJlY3RseSB3aXRoaW4gYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGJ1dCBjcnVjaWFsbHksIHRoZXkmIzM5O3JlIG5vdyBwZXJmb3JtaW5nIHRoYXQgY2hlY2sgKnVuZGVyKiB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgYHJjYXN0X2xvY2tgLiBUaGlzIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBmaXggbGllcywgZW5zdXJpbmcgdGhhdCB0aGUgcGVlciBjaGVjayBhbmQgdGhlIGxpc3QgdXBkYXRlIGhhcHBlbiBhdG9taWNhbGx5LCBwcmV2ZW50aW5nIHRoYXQgcmFjZSBjb25kaXRpb24uIEZ1cnRoZXIsIHRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgbG9ja2luZyB0byB0aGUgYGNsZWFudXBfYmVhcmVyYCBmdW5jdGlvbiwgbGlrZWx5IHRvIGVuc3VyZSB0aGF0IG5vIGlzc3VlcyBhcmlzZSB3aGVuIHRoZSBiZWFyZXIgaXMgYmVpbmcgY2xlYW5lZCB1cC4KClNvLCBmdW5jdGlvbmFsbHksIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gSSYjMzk7ZCBleHBlY3QgdGhpcyBwYXRjaCB0byBpbXByb3ZlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBVRFAgcmVwbGljYXN0IGZ1bmN0aW9uYWxpdHkgaW4gVElQQy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIENPTkZJRyBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGlzIHBhdGNoLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlYXJjaCB0aGUgYG5ldC90aXBjL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgZWl0aGVyIGB0aXBjX3VkcF9yY2FzdF9hZGRgIG9yIGp1c3QgdGhlIGdlbmVyYWwgYFRJUENgIG9wdGlvbnMuIFRoaXMgc2hvdWxkIHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggS2NvbmZpZyBvcHRpb25zIGFyZSByZWxhdGVkIHRvIHRoaXMgY29kZSBhbmQsIHRoZXJlZm9yZSwgd2hldGhlciB0aGlzIHBhdGNoIGFwcGxpZXMgdG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIEkmIzM5O20gdXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRJUEMgVURQIENoYW5nZXMqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSB3ZSAqbmVlZCogYm90aCBgQ09ORklHX1RJUENgIGFuZCBgQ09ORklHX1RJUENfTUVESUFfVURQYCBlbmFibGVkLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE5vdywgSSB3YW50IHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIGBjbGVhbnVwX2JlYXJlcmAuCgpSaWdodCwgYHRpcGNfdWRwX3JjYXN0X2FkZGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgdGlwY191ZHBfcmNhc3RfZGlzY2AgYW5kIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgY29udGV4dC4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biB0aGUgVURQIGJyb2FkY2FzdCBmdW5jdGlvbmFsaXR5LiBOb3csIGB0aXBjX3VkcF9yY2FzdF9kaXNjYC4uLiBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoaXMgaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBteSBhdHRlbnRpb24gdGhlcmUgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24sIG9mIGNvdXJzZSwgYnV0IHRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTI4Mz1zdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtMzMwLVxubmV0L3RpcGMvdWRwX21lZGlhLmM6MzMxOnN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfZGlzYyhzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy0zMzIte1xuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jPTM2Nj1zdGF0aWMgaW50IHRpcGNfdWRwX3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM5MS1cdGlmICh1bmxpa2VseShtc2dfdXNlcihoZHIpID09IExJTktfQ09ORklHKSkge1xubmV0L3RpcGMvdWRwX21lZGlhLmM6MzkyOlx0XHRlcnIgPSB0aXBjX3VkcF9yY2FzdF9kaXNjKGIsIHNrYik7XG5uZXQvdGlwYy91ZHBfbWVkaWEuYy0zOTMtXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFRJUEMgVURQIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgaW4gb24gdGhlIHJlY2VpdmUgcGF0aCB3aXRoaW4gdGhlIFRJUEMgb3ZlciBVRFAgaW1wbGVtZW50YXRpb24uIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRhdGEgYWN0dWFsbHkgYXJyaXZlcyBhbmQgaXMgaGFuZGxlZC4gTXkgcHJpbWFyeSB0YXJnZXQgcmlnaHQgbm93IGlzIHRoZSBgdGlwY191ZHBfcmVjdmAgZnVuY3Rpb24uIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHNvIHRvIHNwZWFrLCB0aGUgY29yZSBvZiByZWNlaXZpbmcgVURQIHBhY2tldHMgd2l0aGluIHRoZSBUSVBDIGZyYW1ld29yay4KClRvIHN0YXJ0LCBJIHRoaW5rIEkmIzM5O2xsIGJhY2stdHJhY2sgYSBiaXQuIFRoZSBgdGlwY191ZHBfcmVjdmAgZnVuY3Rpb24gaGFuZGxlcyB0aGUgcmVjZXB0aW9uLCBidXQgaG93IGRvZXMgdGhlIGJlYXJlciBnZXQgc2V0dXA/IEkgbmVlZCB0byBjaGVjayBob3cgdGhlIGJlYXJlciBnZXRzIGFkZGVkLiBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoYXQgc2hvdWxkIGJlIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYC4gS25vd2luZyBob3cgdGhlIGJlYXJlciBpcyBhZGRlZCBhbmQgY29uZmlndXJlZCBwcm92aWRlcyBjb250ZXh0IGZvciBob3cgdGhlIGB0aXBjX3VkcF9yZWN2YCBmdW5jdGlvbiBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTU3OD1zdGF0aWMgaW50IHRpcGNfcGFyc2VfdWRwX2FkZHIoc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIsXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjE4LVxubmV0L3RpcGMvdWRwX21lZGlhLmM6NjE5OmludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTYyMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMwOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOZXRsaW5rIElucXVpcnk6IGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgZnVuY3Rpb24gYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIE5ldGxpbmsgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmV4cG9ydGVkKiB0byB0aGUgTmV0bGluayBBUEksIG9yIGlzIGl0IHVzZWQgKndpdGhpbiogTmV0bGluayYjMzk7cyBpbnRlcm5hbCB3b3JraW5ncz8gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBteSBjdXJyZW50IGxpbmUgb2YgaW5xdWlyeS4gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudCBsYW5kc2NhcGUuIEtub3dpbmcgaXRzIHVzYWdlIG1vZGVsIGlzIGNlbnRyYWwgdG8gaXRzIHV0aWxpdHkuIElzIGl0IGFuIGVudHJ5IHBvaW50IGZvciBjb25maWd1cmF0aW9uIHRocm91Z2ggTmV0bGluayBtZXNzYWdlcywgb3IgaXMgaXQgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBOZXRsaW5rIG1pZ2h0IGNhbGwgZHVyaW5nIHNvbWUgb3RoZXIgb3BlcmF0aW9uPyBUaGlzIGRpc3RpbmN0aW9uIGZ1bmRhbWVudGFsbHkgaW1wYWN0cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBhbmFseXppbmcgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgbmV0d29yayBjb21wb25lbnRzLiBUaGlzIG5lZWRzIHRvIGJlIGNsYXJpZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYz0xMDYzPWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDk5LVxubmV0L3RpcGMvYmVhcmVyLmM6MTEwMDpcdFx0ZXJyID0gdGlwY191ZHBfbmxfYmVhcmVyX2FkZChiLFxubmV0L3RpcGMvYmVhcmVyLmMtMTEwMS1cdFx0XHRcdFx0ICAgICBhdHRyc1tUSVBDX05MQV9CRUFSRVJfVURQX09QVFNdKTtcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz01Nzg9c3RhdGljIGludCB0aXBjX3BhcnNlX3VkcF9hZGRyKHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyLFxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTYxOC1cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjYxOTppbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02MjAte1xuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQzLVxubmV0L3RpcGMvdWRwX21lZGlhLmg6NDQ6aW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQ1LWludCB0aXBjX3VkcF9ubF9hZGRfYmVhcmVyX2RhdGEoc3RydWN0IHRpcGNfbmxfbXNnICptc2csIHN0cnVjdCB0aXBjX2JlYXJlciAqYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MTgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUSVBDIE5ldGxpbmsgQmVhcmVyIEFkZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gdGhlIGB0aXBjX25sX2JlYXJlcl9hZGRgIG5ldGxpbmsgaGFuZGxlci4gUmlnaHQsIHRoZSBjb3JlIGlzc3VlIGlzIGEgcmFjZSBjb25kaXRpb24uIEl0IHNlZW1zIGNvbmN1cnJlbnQgcGFja2V0cyBvciBuZXRsaW5rIGNhbGxzIHdlcmUgcG90ZW50aWFsbHkgdHJ5aW5nIHRvIGFkZCB0aGUgc2FtZSBwZWVyIHNpbXVsdGFuZW91c2x5LiBUaGlzIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIG1lbW9yeSBsZWFrcyBvciwgd29yc2UsIGNvcnJ1cHRpbmcgdGhlIGxpbmtlZCBsaXN0LiBUaGUgZml4IHRoZXkmIzM5O3ZlIGludHJvZHVjZWQsIHRoZSBgcmNhc3RfbG9ja2Agc3BpbmxvY2sgcHJvdGVjdGluZyBgcmNhc3QubGlzdGAsIG1ha2VzIGltbWVkaWF0ZSBzZW5zZS4gTG9ja2luZyBkb3duIHRoZSBsaXN0IGFuZCB0aGVuIGNoZWNraW5nIGZvciBkdXBsaWNhdGVzICp3aXRoaW4qIHRoYXQgY3JpdGljYWwgc2VjdGlvbiBpcyBhIHNvdW5kIGFwcHJvYWNoIHRvIHByZXZlbnQgY29uY3VycmVudCBtb2RpZmljYXRpb25zLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGEgYml0IGJldHRlci4gVGhlIGNvZGUgbWVudGlvbnMgYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIHRoYXQgYGNsZWFudXBfYmVhcmVyYCBmdW5jdGlvbi4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsLWNoYWlucyBhbmQgcmVsYXRpb25zaGlwcywgSSYjMzk7bGwgcGF5IHBhcnRpY3VsYXIgYXR0ZW50aW9uIHRvIHRob3NlIHN5bWJvbHMsIHBhcnRpY3VsYXJseSBgY2xlYW51cF9iZWFyZXJgLiBXYWl0LCBgY2xlYW51cF9iZWFyZXJgIGlzIGhhbmRsZWQgYnkgYSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgYSBkZWZlcnJhbCBzdHJhdGVneSwgYW5kIGl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHdoZXJlIGFuZCB3aHkgdGhpcyBkZWZlcnJlZCBjbGVhbnVwIGlzIHRha2luZyBwbGFjZS4gSSBzaG91bGQgZmluZCB3aGVyZSBgY2xlYW51cF9iZWFyZXJgIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2xlYW51cF9iZWFyZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy91ZHBfbWVkaWEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy91ZHBfbWVkaWEuYz04MDA9c3RhdGljIHZvaWQgcmNhc3RfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtODA3LVxubmV0L3RpcGMvdWRwX21lZGlhLmM6ODA4Oi8qIGNsZWFudXBfYmVhcmVyIC0gYnJlYWsgdGhlIHNvY2tldC9iZWFyZXIgYXNzb2NpYXRpb24gKi9cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjgwOTpzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04MTAte1xuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jPTgzNT1zdGF0aWMgdm9pZCB0aXBjX3VkcF9kaXNhYmxlKHN0cnVjdCB0aXBjX2JlYXJlciAqYilcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NDgtXHRhdG9taWNfaW5jKFx1MDAyNnRpcGNfbmV0KHNvY2tfbmV0KHViLVx1MDAzZXNrKSktXHUwMDNld3FfY291bnQpO1xubmV0L3RpcGMvdWRwX21lZGlhLmM6ODQ5Olx0SU5JVF9XT1JLKFx1MDAyNnViLVx1MDAzZXdvcmssIGNsZWFudXBfYmVhcmVyKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1MC1cdHNjaGVkdWxlX3dvcmsoXHUwMDI2dWItXHUwMDNld29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRJUEMgVURQIFJlcGxpY2FzdCBQZWVyIEFkZGl0aW9uIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgaXMgdGhlIGNvcmUgZnVuY3Rpb24gYmVpbmcgYWRkcmVzc2VkIGluIHRoZSBjb250ZXh0IG9mIGB0aXBjX3VkcF9kaXNhYmxlYC4gTXkgaW1tZWRpYXRlIGZvY3VzIHBvaW50cyBhcmUgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgdHJpZ2dlciBmb3IgYGNsZWFudXBfYmVhcmVyYCwgd2hpY2ggaXMgYHRpcGNfdWRwX2Rpc2FibGVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aG9zZSBmdW5jdGlvbnMgaW50ZXJhY3QsIHBhcnRpY3VsYXJseSBhcm91bmQgdGhlIGVuYWJsZS9kaXNhYmxlIGN5Y2xlLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkIOKAkyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcmFjZSBjb25kaXRpb24gd2hlbiBhZGRpbmcgcmVwbGljYXN0IHBlZXJzIGluIHRoZSBVRFAgaW1wbGVtZW50YXRpb24uIFRoZSBmaXgsIGEgc3BpbmxvY2ssIGlzIGludGVuZGVkIHRvIHNlcmlhbGl6ZSB0aG9zZSB1cGRhdGVzLCB0aGVyZWJ5IHByZXZlbnRpbmcgdGhlIGRyZWFkZWQgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBjb25jdXJyZW50IG9wZXJhdGlvbnMgYXJlIGhhcHBlbmluZyB2aWEgcGFja2V0cyBvciBOZXRsaW5rIGNvbW1hbmRzLiBUaGlzIGlzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBzY2VuYXJpbywgc28gdGhlIGFwcHJvYWNoIG9mIHNlcmlhbGl6aW5nIGFjY2VzcyB0byB0aGUgc2hhcmVkIHJlcGxpY2FzdCBsaXN0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24uIEkmIzM5O20gbm90aW5nIHRoZSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzIGhlcmU7IHRoZSBOZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycyBhcmUgbm93IGNsZWFybHkgcHJpbWUgdGFyZ2V0cyBmb3IgdGVzdGluZyB0aGUgZml4LgoKSSYjMzk7bSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0byBxdWlja2x5IGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAsIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gSSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBidWlsZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBzbyBJIGNhbiByZXByb2R1Y2UgdGhlIGJ1ZyBhbmQgdGVzdCB0aGUgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVElQQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTEyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVElQQyBVRFAgRnVuY3Rpb25zKioKCk9rYXksIGFmdGVyIHJldmlld2luZyB0aGUgcmVsZXZhbnQgY29kZSwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBpbmNsdWRpbmcgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGBUSVBDYCBhbmQgc3BlY2lmaWNhbGx5IGBUSVBDX01FRElBX1VEUGAgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyBhcmUgcHJvcGVybHkgY29udGFpbmVkIGhlcmUuCgpJIHdlbnQgdGhyb3VnaCB0aGUga2V5IGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2suIEkgd2FudGVkIHRvIHZlcmlmeSBhIGZldyB0aGluZ3MuIEZpcnN0LCBpdCBsb29rcyBsaWtlIGB0aXBjX3VkcF9yY2FzdF9hZGRgIGFuZCBgdGlwY191ZHBfcmNhc3RfZGlzY2AgYXJlIGRlZmluZWQgYXMgc3RhdGljLCB3aGljaCBhbGlnbnMgd2l0aCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBtb2R1bGUuIFRoZW4gSSBmb3VuZCB0aGF0IGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBUSVBDIGZpbGVzLCB3aGljaCBpcyBhcyBleHBlY3RlZC4gRmluYWxseSwgSSBjb25maXJtZWQgdGhhdCBgdGlwY191ZHBfZW5hYmxlYCBhbmQgYGNsZWFudXBfYmVhcmVyYCBhcmUgYWxzbyBzdGF0aWMgZnVuY3Rpb25zLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7dmUgZGVjaWRlZCB0byBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGluIHRoZSB1cGRhdGU6IGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCBgY2xlYW51cF9iZWFyZXJgLiBUaGV5IHNlZW0gdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN1cHBvcnQgZm9yIHRoZSBVRFAgbWVkaWEgbGF5ZXIgd2l0aGluIFRJUEMuCgpOb3csIEkmIzM5O20ganVzdCBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgdGlwY191ZHBfZW5hYmxlYCBoYXMgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZW4gSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTYxOT1pbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjQ1LS8qKlxubmV0L3RpcGMvdWRwX21lZGlhLmM6NjQ2OiAqIHRpcGNfdWRwX2VuYWJsZSAtIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIG5ldyB1ZHAgYmVhcmVyIGluc3RhbmNlXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDctICogQG5ldDpcdG5ldHdvcmsgbmFtZXNwYWNlXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjUzLSAqL1xubmV0L3RpcGMvdWRwX21lZGlhLmM6NjU0OnN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjU1LVx0XHRcdCAgIHN0cnVjdCBubGF0dHIgKmF0dHJzW10pXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmM9ODUzPXN0cnVjdCB0aXBjX21lZGlhIHVkcF9tZWRpYV9pbmZvID0ge1xubmV0L3RpcGMvdWRwX21lZGlhLmMtODU0LVx0LnNlbmRfbXNnXHQ9IHRpcGNfdWRwX3NlbmRfbXNnLFxubmV0L3RpcGMvdWRwX21lZGlhLmM6ODU1Olx0LmVuYWJsZV9tZWRpYVx0PSB0aXBjX3VkcF9lbmFibGUsXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NTYtXHQuZGlzYWJsZV9tZWRpYVx0PSB0aXBjX3VkcF9kaXNhYmxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzY2CgkJCQkJCQlvdXRwdXQ6IDE2MgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbmZpcm1pbmcgYW5kIFByb2NlZWRpbmcqKgoKQWxyaWdodCwgKnRpcGNcX3VkcFxfZW5hYmxlKiBjaGVja3Mgb3V0LCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZCBhbmQgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3cgdGhhdCB0aGF0JiMzOTtzIHZlcmlmaWVkLCBJIG5lZWQgdG8gZ2V0IHRoaXMgbW92aW5nLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFRJUEMgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3BpbmxvY2sgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIHJlcGxpY2FzdCBsaXN0LiBUaGlzIHByZXZlbnRzIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBwb3RlbnRpYWwgbGlzdCBjb3JydXB0aW9uIHdoZW4gbXVsdGlwbGUgcGFja2V0cyBvciBuZXRsaW5rIGNvbW1hbmRzIGF0dGVtcHQgdG8gYWRkIHRoZSBzYW1lIHBlZXIgY29uY3VycmVudGx5LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFRJUEMgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3BpbmxvY2sgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIHJlcGxpY2FzdCBsaXN0LiBUaGlzIHByZXZlbnRzIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBwb3RlbnRpYWwgbGlzdCBjb3JydXB0aW9uIHdoZW4gbXVsdGlwbGUgcGFja2V0cyBvciBuZXRsaW5rIGNvbW1hbmRzIGF0dGVtcHQgdG8gYWRkIHRoZSBzYW1lIHBlZXIgY29uY3VycmVudGx5LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDo1OTo0My4zNzU2OTUyMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ3MzYwNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDMuMzc1NzAxODQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAyODkzNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNGE0YjU1MmUwNjllNDI3MDlmZTI0M2ZhZTdhODQyNWUzYTA1YjY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDE0OjU5OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5jIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcXG5pbmRleCA2MmFlN2Y1YjU4NDA5Yy4uM2YwZDc1ZDcyNGVlMTUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvdWRwX21lZGlhLmNcXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xcbkBAIC05NCw2ICs5NCw3IEBAIHN0cnVjdCB1ZHBfcmVwbGljYXN0IHtcXG4gICogQGlmaW5kZXg6XFx0bG9jYWwgYWRkcmVzcyBzY29wZVxcbiAgKiBAd29yazpcXHR1c2VkIHRvIHNjaGVkdWxlIGRlZmVycmVkIHdvcmsgb24gYSBiZWFyZXJcXG4gICogQHJjYXN0OlxcdGFzc29jaWF0ZWQgdWRwX3JlcGxpY2FzdCBjb250YWluZXJcXG4rICogQHJjYXN0X2xvY2s6XFx0c2VyaWFsaXplIHVwZGF0ZXMgdG8gQHJjYXN0Lmxpc3QgYWdhaW5zdCBjb25jdXJyZW50IHVwZGF0ZXJzXFxuICAqL1xcbiBzdHJ1Y3QgdWRwX2JlYXJlciB7XFxuIFxcdHN0cnVjdCB0aXBjX2JlYXJlciBfX3JjdSAqYmVhcmVyO1xcbkBAIC0xMDEsNiArMTAyLDcgQEAgc3RydWN0IHVkcF9iZWFyZXIge1xcbiBcXHR1MzIgaWZpbmRleDtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XFxuIFxcdHN0cnVjdCB1ZHBfcmVwbGljYXN0IHJjYXN0O1xcbitcXHRzcGlubG9ja190IHJjYXN0X2xvY2s7IC8qIHByb3RlY3RzIHJjYXN0Lmxpc3QgKi9cXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuQEAgLTI3OCwyNiArMjgwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuLXtcXG4tXFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgKnJjYXN0LCAqdG1wO1xcbi1cXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XFxuLVxcbi1cXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXFx1MDAzZW1lZGlhX3B0cik7XFxuLVxcdGlmICghdWIpIHtcXG4tXFx0XFx0cHJfZXJyX3JhdGVsaW1pdGVkKFxcXCJVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tXFx0fVxcbi1cXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbi1cXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSlcXG4tXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLVxcdH1cXG4tXFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuIHtcXG5AQCAtMzA4LDE2ICsyOTAsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRpZiAoIXViKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFxuK1xcdC8qIFNlcmlhbGl6ZSB3aXRoIG90aGVyIHVwZGF0ZXJzIGFuZCByZWplY3QgYSBkdXBsaWNhdGUgYmVmb3JlXFxuK1xcdCAqIGFsbG9jYXRpbmcsIHNvIGEgZmxvb2Qgb2YgdGhlIHNhbWUgYWRkcmVzcyBjYW4ndCBjaHVybiB0aGVcXG4rXFx0ICogYWxsb2NhdG9yLlxcbitcXHQgKi9cXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkocmNhc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbitcXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZigqYWRkcikpKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCFyY2FzdClcXG4rXFx0aWYgKCFyY2FzdCkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGRzdF9jYWNoZV9pbml0KFxcdTAwMjZyY2FzdC1cXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRrZnJlZShyY2FzdCk7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XFxuK1xcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdGItXFx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnViLVxcdTAwM2VyY2FzdF9sb2NrKTtcXG4gXFxuIFxcdGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVApXFxuIFxcdFxcdHByX2luZm8oXFxcIk5ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcXFxuXFxcIiwgXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLmlwdjQpO1xcbkBAIC0zMjUsOCArMzI1LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRlbHNlIGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVBWNilcXG4gXFx0XFx0cHJfaW5mbyhcXFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxcXG5cXFwiLCBcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIuaXB2Nik7XFxuICNlbmRpZlxcbi1cXHRiLVxcdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XFxuLVxcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0zNjEsOSArMzU5LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcXHUwMDI2c3JjKSkpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4gXFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcXHUwMDI2c3JjKTtcXG4gfVxcbiBcXG5AQCAtNjQ0LDkgKzYzOSw2IEBAIGludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFxcdTAwMjZhZGRyKSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcbiBcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZhZGRyKTtcXG4gfVxcbiBcXG5AQCAtNjc5LDYgKzY3MSw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXFxuIFxcdFxcdGdvdG8gZXJyO1xcbkBAIC04MTksMTAgKzgxMiwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcXG4gXFx0c3RydWN0IHRpcGNfbmV0ICp0bjtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXFx1MDAyNnViLVxcdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxpc3RfZGVsX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRjYWxsX3JjdV9odXJyeShcXHUwMDI2cmNhc3QtXFx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xcbiBcXHR9XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVxcdTAwM2VzaykpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDMuODY2NzI1NjM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk4MjU2ODUzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNGE0YjU1MmUwNjllNDI3MDlmZTI0M2ZhZTdhODQyNWUzYTA1YjY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTQ6NTk6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy91ZHBfbWVkaWEuYyBiL25ldC90aXBjL3VkcF9tZWRpYS5jXG5pbmRleCA2MmFlN2Y1YjU4NDA5Yy4uM2YwZDc1ZDcyNGVlMTUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuKysrIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcbkBAIC05NCw2ICs5NCw3IEBAIHN0cnVjdCB1ZHBfcmVwbGljYXN0IHtcbiAgKiBAaWZpbmRleDpcdGxvY2FsIGFkZHJlc3Mgc2NvcGVcbiAgKiBAd29yazpcdHVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlclxuICAqIEByY2FzdDpcdGFzc29jaWF0ZWQgdWRwX3JlcGxpY2FzdCBjb250YWluZXJcbisgKiBAcmNhc3RfbG9jazpcdHNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVyc1xuICAqL1xuIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHN0cnVjdCB0aXBjX2JlYXJlciBfX3JjdSAqYmVhcmVyO1xuQEAgLTEwMSw2ICsxMDIsNyBAQCBzdHJ1Y3QgdWRwX2JlYXJlciB7XG4gXHR1MzIgaWZpbmRleDtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuIFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgcmNhc3Q7XG4rXHRzcGlubG9ja190IHJjYXN0X2xvY2s7IC8qIHByb3RlY3RzIHJjYXN0Lmxpc3QgKi9cbiB9O1xuIFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXG5AQCAtMjc4LDI2ICsyODAsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3NlbmRfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuLVx0XHRcdFx0ICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuLXtcbi1cdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcbi1cdHN0cnVjdCB1ZHBfYmVhcmVyICp1Yjtcbi1cbi1cdHViID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYi1cdTAwM2VtZWRpYV9wdHIpO1xuLVx0aWYgKCF1Yikge1xuLVx0XHRwcl9lcnJfcmF0ZWxpbWl0ZWQoXCJVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxcblwiKTtcbi1cdFx0cmV0dXJuIGZhbHNlO1xuLVx0fVxuLVxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbi1cdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpKVxuLVx0XHRcdHJldHVybiB0cnVlO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGZhbHNlO1xuLX1cbi1cbiBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRcdFx0ICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuIHtcbkBAIC0zMDgsMTYgKzI5MCwzNCBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRpZiAoIXViKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbitcdC8qIFNlcmlhbGl6ZSB3aXRoIG90aGVyIHVwZGF0ZXJzIGFuZCByZWplY3QgYSBkdXBsaWNhdGUgYmVmb3JlXG4rXHQgKiBhbGxvY2F0aW5nLCBzbyBhIGZsb29kIG9mIHRoZSBzYW1lIGFkZHJlc3MgY2FuJ3QgY2h1cm4gdGhlXG4rXHQgKiBhbGxvY2F0b3IuXG4rXHQgKi9cbitcdHNwaW5fbG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocmNhc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbitcdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0fVxuK1x0fVxuK1xuIFx0cmNhc3QgPSBrbWFsbG9jX29iaigqcmNhc3QsIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCFyY2FzdClcbitcdGlmICghcmNhc3QpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0fVxuIFxuIFx0aWYgKGRzdF9jYWNoZV9pbml0KFx1MDAyNnJjYXN0LVx1MDAzZWRzdF9jYWNoZSwgR0ZQX0FUT01JQykpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdGtmcmVlKHJjYXN0KTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRtZW1jcHkoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpO1xuK1x0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuK1x0Yi1cdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcbiBcdGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUClcbiBcdFx0cHJfaW5mbyhcIk5ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcblwiLCBcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLmlwdjQpO1xuQEAgLTMyNSw4ICszMjUsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRlbHNlIGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUFY2KVxuIFx0XHRwcl9pbmZvKFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxuXCIsIFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIuaXB2Nik7XG4gI2VuZGlmXG4tXHRiLVx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcbi1cdGxpc3RfYWRkX3JjdShcdTAwMjZyY2FzdC1cdTAwM2VsaXN0LCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0KTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0zNjEsOSArMzU5LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KHRpcGNfdWRwX2lzX2tub3duX3BlZXIoYiwgXHUwMDI2c3JjKSkpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcdTAwMjZzcmMpO1xuIH1cbiBcbkBAIC02NDQsOSArNjM5LDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFx1MDAyNmFkZHIpKVxuLVx0XHRyZXR1cm4gMDtcbi1cbiBcdHJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2YWRkcik7XG4gfVxuIFxuQEAgLTY3OSw2ICs2NzEsNyBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0KTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKCFhdHRyc1tUSVBDX05MQV9CRUFSRVJfVURQX09QVFNdKVxuIFx0XHRnb3RvIGVycjtcbkBAIC04MTksMTAgKzgxMiwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4gXHRzdHJ1Y3QgdGlwY19uZXQgKnRuO1xuIFxuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbiBcdFx0bGlzdF9kZWxfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QpO1xuIFx0XHRjYWxsX3JjdV9odXJyeShcdTAwMjZyY2FzdC1cdTAwM2VyY3UsIHJjYXN0X2ZyZWVfcmN1KTtcbiBcdH1cbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0dG4gPSB0aXBjX25ldChzb2NrX25ldCh1Yi1cdTAwM2VzaykpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDMuODY2NzI2OTg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4ODkwNDg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRJUEMgVURQIE1lZGlhIEJlYXJlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvdGlwYy91ZHBfbWVkaWEuY2AuIEl0IHNlZW1zIHRoZXkncmUgYWRkcmVzc2luZyBhIGNvbmN1cnJlbmN5IGlzc3VlLCBhIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIHdpdGhpbiB0aGUgVElQQyBzdWJzeXN0ZW0uIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBjZW50ZXJlZCBhcm91bmQgcHJvdGVjdGluZyB0aGUgYHJjYXN0Lmxpc3RgIHdpdGhpbiB0aGUgYHN0cnVjdCB1ZHBfYmVhcmVyYC4gVGhleSd2ZSBpbnRyb2R1Y2VkIGEgYHJjYXN0X2xvY2tgIHRvIG1hbmFnZSBhY2Nlc3MgYW5kIHVwZGF0ZXMgdG8gdGhpcyBsaXN0LCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBlZmZlY3RpdmUgc3RyYXRlZ3kuXG5cblRoZSBvdGhlciBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBgdGlwY191ZHBfaXNfa25vd25fcGVlcmAgZnVuY3Rpb24uIEluc3RlYWQgb2YgdGhhdCBmdW5jdGlvbiB0aGV5J3ZlIGNvbnNvbGlkYXRlZCBpdHMgbG9naWMgZGlyZWN0bHkgd2l0aGluIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBidXQgY3J1Y2lhbGx5LCB0aGV5J3JlIG5vdyBwZXJmb3JtaW5nIHRoYXQgY2hlY2sgKnVuZGVyKiB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgYHJjYXN0X2xvY2tgLiBUaGlzIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBmaXggbGllcywgZW5zdXJpbmcgdGhhdCB0aGUgcGVlciBjaGVjayBhbmQgdGhlIGxpc3QgdXBkYXRlIGhhcHBlbiBhdG9taWNhbGx5LCBwcmV2ZW50aW5nIHRoYXQgcmFjZSBjb25kaXRpb24uIEZ1cnRoZXIsIHRoZXkndmUgYWxzbyBhZGRlZCBsb2NraW5nIHRvIHRoZSBgY2xlYW51cF9iZWFyZXJgIGZ1bmN0aW9uLCBsaWtlbHkgdG8gZW5zdXJlIHRoYXQgbm8gaXNzdWVzIGFyaXNlIHdoZW4gdGhlIGJlYXJlciBpcyBiZWluZyBjbGVhbmVkIHVwLlxuXG5TbywgZnVuY3Rpb25hbGx5LCBpdCdzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gSSdkIGV4cGVjdCB0aGlzIHBhdGNoIHRvIGltcHJvdmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIFVEUCByZXBsaWNhc3QgZnVuY3Rpb25hbGl0eSBpbiBUSVBDLlxuXG5Ob3csIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIENPTkZJRyBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGlzIHBhdGNoLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlYXJjaCB0aGUgYG5ldC90aXBjL0tjb25maWdgIGZpbGUuIEknbGwgc2VhcmNoIGZvciBlaXRoZXIgYHRpcGNfdWRwX3JjYXN0X2FkZGAgb3IganVzdCB0aGUgZ2VuZXJhbCBgVElQQ2Agb3B0aW9ucy4gVGhpcyBzaG91bGQgcXVpY2tseSBpZGVudGlmeSB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIGFuZCwgdGhlcmVmb3JlLCB3aGV0aGVyIHRoaXMgcGF0Y2ggYXBwbGllcyB0byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gSSdtIHVzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzE0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDguOTU1NjM0MDAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDY4NTgwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDo1OTo0OS4wNTYzMjU2MTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDgwNjY1MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBVRFAgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2Ugd2UgKm5lZWQqIGJvdGggYENPTkZJR19USVBDYCBhbmQgYENPTkZJR19USVBDX01FRElBX1VEUGAgZW5hYmxlZC4gVGhhdCBtdWNoIGlzIGNsZWFyLiBOb3csIEkgd2FudCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjaGFuZ2UuIExldCdzIGRpZyBpbnRvIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIGBjbGVhbnVwX2JlYXJlcmAuXG5cblJpZ2h0LCBgdGlwY191ZHBfcmNhc3RfYWRkYCBpcyBiZWluZyBjYWxsZWQgZnJvbSBib3RoIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCBhbmQgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLiBUaGF0J3MgaW1wb3J0YW50IGNvbnRleHQuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biB0aGUgVURQIGJyb2FkY2FzdCBmdW5jdGlvbmFsaXR5LiBOb3csIGB0aXBjX3VkcF9yY2FzdF9kaXNjYC4uLiBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoaXMgaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBteSBhdHRlbnRpb24gdGhlcmUgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHN1c3BpY2lvbiwgb2YgY291cnNlLCBidXQgdGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTkyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjU5OjUzLjEzNjk5MzE0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyMTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuYz0yODM9c3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMzMwLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjMzMTpzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTMzMi17XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz0zNjY9c3RhdGljIGludCB0aXBjX3VkcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM5MS1cXHRpZiAodW5saWtlbHkobXNnX3VzZXIoaGRyKSA9PSBMSU5LX0NPTkZJRykpIHtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzozOTI6XFx0XFx0ZXJyID0gdGlwY191ZHBfcmNhc3RfZGlzYyhiLCBza2IpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM5My1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDo1OTo1My4yNTQyMTIzMzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMxNTU1OTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBUSVBDIFVEUCBSZWNlaXZlIFBhdGgqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSByZWNlaXZlIHBhdGggd2l0aGluIHRoZSBUSVBDIG92ZXIgVURQIGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGFjdHVhbGx5IGFycml2ZXMgYW5kIGlzIGhhbmRsZWQuIE15IHByaW1hcnkgdGFyZ2V0IHJpZ2h0IG5vdyBpcyB0aGUgYHRpcGNfdWRwX3JlY3ZgIGZ1bmN0aW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyB0byBzcGVhaywgdGhlIGNvcmUgb2YgcmVjZWl2aW5nIFVEUCBwYWNrZXRzIHdpdGhpbiB0aGUgVElQQyBmcmFtZXdvcmsuXG5cblRvIHN0YXJ0LCBJIHRoaW5rIEknbGwgYmFjay10cmFjayBhIGJpdC4gVGhlIGB0aXBjX3VkcF9yZWN2YCBmdW5jdGlvbiBoYW5kbGVzIHRoZSByZWNlcHRpb24sIGJ1dCBob3cgZG9lcyB0aGUgYmVhcmVyIGdldCBzZXR1cD8gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgYmVhcmVyIGdldHMgYWRkZWQuIFRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgdGhhdCBzaG91bGQgYmUgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLiBLbm93aW5nIGhvdyB0aGUgYmVhcmVyIGlzIGFkZGVkIGFuZCBjb25maWd1cmVkIHByb3ZpZGVzIGNvbnRleHQgZm9yIGhvdyB0aGUgYHRpcGNfdWRwX3JlY3ZgIGZ1bmN0aW9uIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjU5OjU2LjU4NTc3MDgyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEzODQyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuYz01Nzg9c3RhdGljIGludCB0aXBjX3BhcnNlX3VkcF9hZGRyKHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjE4LVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjYxOTppbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjIwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NTYuNzA3MTY3MDk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzMjk0MzQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5ldGxpbmsgSW5xdWlyeTogYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgZnVuY3Rpb24gYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIE5ldGxpbmsgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmV4cG9ydGVkKiB0byB0aGUgTmV0bGluayBBUEksIG9yIGlzIGl0IHVzZWQgKndpdGhpbiogTmV0bGluaydzIGludGVybmFsIHdvcmtpbmdzPyBUaGF0J3MgdGhlIGNvcmUgb2YgbXkgY3VycmVudCBsaW5lIG9mIGlucXVpcnkuIFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGNydWNpYWwgdG8gZmlndXJpbmcgb3V0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYW5kIG1hbmFnZW1lbnQgbGFuZHNjYXBlLiBLbm93aW5nIGl0cyB1c2FnZSBtb2RlbCBpcyBjZW50cmFsIHRvIGl0cyB1dGlsaXR5LiBJcyBpdCBhbiBlbnRyeSBwb2ludCBmb3IgY29uZmlndXJhdGlvbiB0aHJvdWdoIE5ldGxpbmsgbWVzc2FnZXMsIG9yIGlzIGl0IGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgTmV0bGluayBtaWdodCBjYWxsIGR1cmluZyBzb21lIG90aGVyIG9wZXJhdGlvbj8gVGhpcyBkaXN0aW5jdGlvbiBmdW5kYW1lbnRhbGx5IGltcGFjdHMgaG93IEknZCBhcHByb2FjaCBhbmFseXppbmcgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgbmV0d29yayBjb21wb25lbnRzLiBUaGlzIG5lZWRzIHRvIGJlIGNsYXJpZmllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjU5OjU5LjY0MDExMjI4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NzE2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfdWRwX25sX2JlYXJlcl9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL2JlYXJlci5jPTEwNjM9aW50IHRpcGNfbmxfYmVhcmVyX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTA5OS1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTAwOlxcdFxcdGVyciA9IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoYixcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTAxLVxcdFxcdFxcdFxcdFxcdCAgICAgYXR0cnNbVElQQ19OTEFfQkVBUkVSX1VEUF9PUFRTXSk7XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz01Nzg9c3RhdGljIGludCB0aXBjX3BhcnNlX3VkcF9hZGRyKHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjE4LVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjYxOTppbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjIwLXtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQzLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ0OmludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cik7XFxubmV0L3RpcGMvdWRwX21lZGlhLmgtNDUtaW50IHRpcGNfdWRwX25sX2FkZF9iZWFyZXJfZGF0YShzdHJ1Y3QgdGlwY19ubF9tc2cgKm1zZywgc3RydWN0IHRpcGNfYmVhcmVyICpiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NTkuNzU3ODMzNjg3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODY3ODg2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUSVBDIE5ldGxpbmsgQmVhcmVyIEFkZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgdGlwY19ubF9iZWFyZXJfYWRkYCBuZXRsaW5rIGhhbmRsZXIuIFJpZ2h0LCB0aGUgY29yZSBpc3N1ZSBpcyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzZWVtcyBjb25jdXJyZW50IHBhY2tldHMgb3IgbmV0bGluayBjYWxscyB3ZXJlIHBvdGVudGlhbGx5IHRyeWluZyB0byBhZGQgdGhlIHNhbWUgcGVlciBzaW11bHRhbmVvdXNseS4gVGhpcyBpcyBhIGNsYXNzaWMgcmVjaXBlIGZvciBtZW1vcnkgbGVha3Mgb3IsIHdvcnNlLCBjb3JydXB0aW5nIHRoZSBsaW5rZWQgbGlzdC4gVGhlIGZpeCB0aGV5J3ZlIGludHJvZHVjZWQsIHRoZSBgcmNhc3RfbG9ja2Agc3BpbmxvY2sgcHJvdGVjdGluZyBgcmNhc3QubGlzdGAsIG1ha2VzIGltbWVkaWF0ZSBzZW5zZS4gTG9ja2luZyBkb3duIHRoZSBsaXN0IGFuZCB0aGVuIGNoZWNraW5nIGZvciBkdXBsaWNhdGVzICp3aXRoaW4qIHRoYXQgY3JpdGljYWwgc2VjdGlvbiBpcyBhIHNvdW5kIGFwcHJvYWNoIHRvIHByZXZlbnQgY29uY3VycmVudCBtb2RpZmljYXRpb25zLlxuXG5Ob3csIGxldCdzIHNlZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBhIGJpdCBiZXR0ZXIuIFRoZSBjb2RlIG1lbnRpb25zIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgZnVuY3Rpb24uIExldCBtZSBjaGVjayB0aGUgY2FsbC1jaGFpbnMgYW5kIHJlbGF0aW9uc2hpcHMsIEknbGwgcGF5IHBhcnRpY3VsYXIgYXR0ZW50aW9uIHRvIHRob3NlIHN5bWJvbHMsIHBhcnRpY3VsYXJseSBgY2xlYW51cF9iZWFyZXJgLiBXYWl0LCBgY2xlYW51cF9iZWFyZXJgIGlzIGhhbmRsZWQgYnkgYSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgYSBkZWZlcnJhbCBzdHJhdGVneSwgYW5kIGl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgYW5kIHdoeSB0aGlzIGRlZmVycmVkIGNsZWFudXAgaXMgdGFraW5nIHBsYWNlLiBJIHNob3VsZCBmaW5kIHdoZXJlIGBjbGVhbnVwX2JlYXJlcmAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTE4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE1OjAwOjA0Ljg0NDYyNDExM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExNzUzMDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsZWFudXBfYmVhcmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3VkcF9tZWRpYS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3VkcF9tZWRpYS5jPTgwMD1zdGF0aWMgdm9pZCByY2FzdF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTgwNy1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4MDg6LyogY2xlYW51cF9iZWFyZXIgLSBicmVhayB0aGUgc29ja2V0L2JlYXJlciBhc3NvY2lhdGlvbiAqL1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjgwOTpzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtODEwLXtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jPTgzNT1zdGF0aWMgdm9pZCB0aXBjX3VkcF9kaXNhYmxlKHN0cnVjdCB0aXBjX2JlYXJlciAqYilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg0OC1cXHRhdG9taWNfaW5jKFxcdTAwMjZ0aXBjX25ldChzb2NrX25ldCh1Yi1cXHUwMDNlc2spKS1cXHUwMDNld3FfY291bnQpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjg0OTpcXHRJTklUX1dPUksoXFx1MDAyNnViLVxcdTAwM2V3b3JrLCBjbGVhbnVwX2JlYXJlcik7XFxubmV0L3RpcGMvdWRwX21lZGlhLmMtODUwLVxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnViLVxcdTAwM2V3b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MDQuOTU2Mzg1MDE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzYzNjk5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRJUEMgVURQIFJlcGxpY2FzdCBQZWVyIEFkZGl0aW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgY2xlYW51cF9iZWFyZXJgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGJlaW5nIGFkZHJlc3NlZCBpbiB0aGUgY29udGV4dCBvZiBgdGlwY191ZHBfZGlzYWJsZWAuIE15IGltbWVkaWF0ZSBmb2N1cyBwb2ludHMgYXJlIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBgdGlwY191ZHBfcmNhc3RfYWRkYCwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgLCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAsIGB0aXBjX3VkcF9lbmFibGVgLCBhbmQsIG9mIGNvdXJzZSwgdGhlIHRyaWdnZXIgZm9yIGBjbGVhbnVwX2JlYXJlcmAsIHdoaWNoIGlzIGB0aXBjX3VkcF9kaXNhYmxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhvc2UgZnVuY3Rpb25zIGludGVyYWN0LCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRoZSBlbmFibGUvZGlzYWJsZSBjeWNsZS5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkIOKAkyB3ZSdyZSBkZWFsaW5nIHdpdGggYSByYWNlIGNvbmRpdGlvbiB3aGVuIGFkZGluZyByZXBsaWNhc3QgcGVlcnMgaW4gdGhlIFVEUCBpbXBsZW1lbnRhdGlvbi4gVGhlIGZpeCwgYSBzcGlubG9jaywgaXMgaW50ZW5kZWQgdG8gc2VyaWFsaXplIHRob3NlIHVwZGF0ZXMsIHRoZXJlYnkgcHJldmVudGluZyB0aGUgZHJlYWRlZCBkdXBsaWNhdGUgZW50cmllcyBhbmQgcG90ZW50aWFsIGxpc3QgY29ycnVwdGlvbiB3aGVuIGNvbmN1cnJlbnQgb3BlcmF0aW9ucyBhcmUgaGFwcGVuaW5nIHZpYSBwYWNrZXRzIG9yIE5ldGxpbmsgY29tbWFuZHMuIFRoaXMgaXMgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIHNjZW5hcmlvLCBzbyB0aGUgYXBwcm9hY2ggb2Ygc2VyaWFsaXppbmcgYWNjZXNzIHRvIHRoZSBzaGFyZWQgcmVwbGljYXN0IGxpc3QgaXMgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gSSdtIG5vdGluZyB0aGUgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cyBoZXJlOyB0aGUgTmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMgYXJlIG5vdyBjbGVhcmx5IHByaW1lIHRhcmdldHMgZm9yIHRlc3RpbmcgdGhlIGZpeC5cblxuSSdtIG1ha2luZyBhIG1lbnRhbCBub3RlIHRvIHF1aWNrbHkgZG91YmxlIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYCwgdG8gZW5zdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBJIGFsd2F5cyB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHNvIEkgY2FuIHJlcHJvZHVjZSB0aGUgYnVnIGFuZCB0ZXN0IHRoZSBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MDkuODkyNzU4NDg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE5NTY0MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRJUENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNTowMDoxMC4wMDQ3MjA0MTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxNDU0MTM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRJUEMgVURQIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGUgcmVsZXZhbnQgY29kZSwgSSdtIGNvbmZpZGVudCB0aGF0IGluY2x1ZGluZyB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYFRJUENgIGFuZCBzcGVjaWZpY2FsbHkgYFRJUENfTUVESUFfVURQYCBpcyB0aGUgcmlnaHQgYXBwcm9hY2guIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcm9wZXJseSBjb250YWluZWQgaGVyZS5cblxuSSB3ZW50IHRocm91Z2ggdGhlIGtleSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLiBJIHdhbnRlZCB0byB2ZXJpZnkgYSBmZXcgdGhpbmdzLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgdGlwY191ZHBfcmNhc3RfYWRkYCBhbmQgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGFyZSBkZWZpbmVkIGFzIHN0YXRpYywgd2hpY2ggYWxpZ25zIHdpdGggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwdXJwb3NlIHdpdGhpbiB0aGUgbW9kdWxlLiBUaGVuIEkgZm91bmQgdGhhdCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgVElQQyBmaWxlcywgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuIEZpbmFsbHksIEkgY29uZmlybWVkIHRoYXQgYHRpcGNfdWRwX2VuYWJsZWAgYW5kIGBjbGVhbnVwX2JlYXJlcmAgYXJlIGFsc28gc3RhdGljIGZ1bmN0aW9ucy5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSd2ZSBkZWNpZGVkIHRvIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW4gdGhlIHVwZGF0ZTogYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIGBjbGVhbnVwX2JlYXJlcmAuIFRoZXkgc2VlbSB0byBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCBmb3IgdGhlIFVEUCBtZWRpYSBsYXllciB3aXRoaW4gVElQQy5cblxuTm93LCBJJ20ganVzdCBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgdGlwY191ZHBfZW5hYmxlYCBoYXMgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZW4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNTowMDoxNC4zMTkyNjQ1NzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjQwNzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3VkcF9lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmM9NjE5PWludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTY0NS0vKipcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo2NDY6ICogdGlwY191ZHBfZW5hYmxlIC0gY2FsbGJhY2sgdG8gY3JlYXRlIGEgbmV3IHVkcCBiZWFyZXIgaW5zdGFuY2VcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDctICogQG5ldDpcXHRuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjUzLSAqL1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjY1NDpzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYixcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NTUtXFx0XFx0XFx0ICAgc3RydWN0IG5sYXR0ciAqYXR0cnNbXSlcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jPTg1Mz1zdHJ1Y3QgdGlwY19tZWRpYSB1ZHBfbWVkaWFfaW5mbyA9IHtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NTQtXFx0LnNlbmRfbXNnXFx0PSB0aXBjX3VkcF9zZW5kX21zZyxcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4NTU6XFx0LmVuYWJsZV9tZWRpYVxcdD0gdGlwY191ZHBfZW5hYmxlLFxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1Ni1cXHQuZGlzYWJsZV9tZWRpYVxcdD0gdGlwY191ZHBfZGlzYWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MTQuNDM1Njc2OTczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDcwMjIyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbmZpcm1pbmcgYW5kIFByb2NlZWRpbmcqKlxuXG5BbHJpZ2h0LCAqdGlwY1xcX3VkcFxcX2VuYWJsZSogY2hlY2tzIG91dCwgdGhhdCdzIHdoYXQgSSBleHBlY3RlZCBhbmQgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3cgdGhhdCB0aGF0J3MgdmVyaWZpZWQsIEkgbmVlZCB0byBnZXQgdGhpcyBtb3ZpbmcuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuIExldCdzIGdldCB0aGF0IGRvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNjYsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MTcuNjgyNzAxNzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTg3NjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-11 14:34:16 +0000 UTC FinishedAt: 2026-07-11 15:00:19 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "1cd23ca80784223fa2204e16203f754da4e821f8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TIPC", "TIPC_MEDIA_UDP" ], "series_id": "86ff341a-17ce-470d-98d5-07a5f39b6153" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "tipc_udp_rcast_add", "tipc_udp_rcast_disc", "tipc_udp_nl_bearer_add", "tipc_udp_enable", "cleanup_bearer" ], "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+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFRJUEMgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3BpbmxvY2sgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIHJlcGxpY2FzdCBsaXN0LiBUaGlzIHByZXZlbnRzIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBwb3RlbnRpYWwgbGlzdCBjb3JydXB0aW9uIHdoZW4gbXVsdGlwbGUgcGFja2V0cyBvciBuZXRsaW5rIGNvbW1hbmRzIGF0dGVtcHQgdG8gYWRkIHRoZSBzYW1lIHBlZXIgY29uY3VycmVudGx5LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkNGE0YjU1MmUwNjllNDI3MDlmZTI0M2ZhZTdhODQyNWUzYTA1YjY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTQ6NTk6NDIgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuaW5kZXggNjJhZTdmNWI1ODQwOWMuLjNmMGQ3NWQ3MjRlZTE1IDEwMDY0NFxuLS0tIGEvbmV0L3RpcGMvdWRwX21lZGlhLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL3VkcF9tZWRpYS5jXG5AQCAtOTQsNiAmIzQzOzk0LDcgQEAgc3RydWN0IHVkcF9yZXBsaWNhc3Qge1xuICAqIEBpZmluZGV4Olx0bG9jYWwgYWRkcmVzcyBzY29wZVxuICAqIEB3b3JrOlx0dXNlZCB0byBzY2hlZHVsZSBkZWZlcnJlZCB3b3JrIG9uIGEgYmVhcmVyXG4gICogQHJjYXN0Olx0YXNzb2NpYXRlZCB1ZHBfcmVwbGljYXN0IGNvbnRhaW5lclxuJiM0MzsgKiBAcmNhc3RfbG9jazpcdHNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVyc1xuICAqL1xuIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHN0cnVjdCB0aXBjX2JlYXJlciBfX3JjdSAqYmVhcmVyO1xuQEAgLTEwMSw2ICYjNDM7MTAyLDcgQEAgc3RydWN0IHVkcF9iZWFyZXIge1xuIFx0dTMyIGlmaW5kZXg7XG4gXHRzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yaztcbiBcdHN0cnVjdCB1ZHBfcmVwbGljYXN0IHJjYXN0O1xuJiM0MztcdHNwaW5sb2NrX3QgcmNhc3RfbG9jazsgLyogcHJvdGVjdHMgcmNhc3QubGlzdCAqL1xuIH07XG4gXG4gc3RhdGljIGludCB0aXBjX3VkcF9pc19tY2FzdF9hZGRyKHN0cnVjdCB1ZHBfbWVkaWFfYWRkciAqYWRkcilcbkBAIC0yNzgsMjYgJiM0MzsyODAsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3NlbmRfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuLVx0XHRcdFx0ICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuLXtcbi1cdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcbi1cdHN0cnVjdCB1ZHBfYmVhcmVyICp1Yjtcbi1cbi1cdHViID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYi1cdTAwM2VtZWRpYV9wdHIpO1xuLVx0aWYgKCF1Yikge1xuLVx0XHRwcl9lcnJfcmF0ZWxpbWl0ZWQoXCYjMzQ7VURQIGJlYXJlciBpbnN0YW5jZSBub3QgZm91bmRcXG5cJiMzNDspO1xuLVx0XHRyZXR1cm4gZmFsc2U7XG4tXHR9XG4tXG4tXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xuLVx0XHRpZiAoIW1lbWNtcChcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSkpXG4tXHRcdFx0cmV0dXJuIHRydWU7XG4tXHR9XG4tXG4tXHRyZXR1cm4gZmFsc2U7XG4tfVxuLVxuIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdFx0XHQgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXG4ge1xuQEAgLTMwOCwxNiAmIzQzOzI5MCwzNCBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRpZiAoIXViKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbiYjNDM7XHQvKiBTZXJpYWxpemUgd2l0aCBvdGhlciB1cGRhdGVycyBhbmQgcmVqZWN0IGEgZHVwbGljYXRlIGJlZm9yZVxuJiM0MztcdCAqIGFsbG9jYXRpbmcsIHNvIGEgZmxvb2Qgb2YgdGhlIHNhbWUgYWRkcmVzcyBjYW4mIzM5O3QgY2h1cm4gdGhlXG4mIzQzO1x0ICogYWxsb2NhdG9yLlxuJiM0MztcdCAqL1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiYjNDM7XHRsaXN0X2Zvcl9lYWNoX2VudHJ5KHJjYXN0LCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XG4mIzQzO1x0XHRpZiAoIW1lbWNtcChcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2YoKmFkZHIpKSkge1xuJiM0MztcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiYjNDM7XHRcdFx0cmV0dXJuIDA7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcbiBcdHJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTtcbi1cdGlmICghcmNhc3QpXG4mIzQzO1x0aWYgKCFyY2FzdCkge1xuJiM0MztcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuJiM0MztcdH1cbiBcbiBcdGlmIChkc3RfY2FjaGVfaW5pdChcdTAwMjZyY2FzdC1cdTAwM2Vkc3RfY2FjaGUsIEdGUF9BVE9NSUMpKSB7XG4mIzQzO1x0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdFx0a2ZyZWUocmNhc3QpO1xuIFx0XHRyZXR1cm4gLUVOT01FTTtcbiBcdH1cbiBcbiBcdG1lbWNweShcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XG4mIzQzO1x0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuJiM0MztcdGItXHUwMDNlYmNhc3RfYWRkci5icm9hZGNhc3QgPSBUSVBDX1JFUExJQ0FTVF9TVVBQT1JUO1xuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQKVxuIFx0XHRwcl9pbmZvKFwmIzM0O05ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcblwmIzM0OywgXHUwMDI2cmNhc3QtXHUwMDNlYWRkci5pcHY0KTtcbkBAIC0zMjUsOCAmIzQzOzMyNSw2IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdGVsc2UgaWYgKG50b2hzKGFkZHItXHUwMDNlcHJvdG8pID09IEVUSF9QX0lQVjYpXG4gXHRcdHByX2luZm8oXCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxuXCYjMzQ7LCBcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLmlwdjYpO1xuICNlbmRpZlxuLVx0Yi1cdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XG4tXHRsaXN0X2FkZF9yY3UoXHUwMDI2cmNhc3QtXHUwMDNlbGlzdCwgXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCk7XG4gXHRyZXR1cm4gMDtcbiB9XG4gXG5AQCAtMzYxLDkgJiM0MzszNTksNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuIFx0XHRyZXR1cm4gMDtcbiBcdH1cbiBcbi1cdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcdTAwMjZzcmMpKSlcbi1cdFx0cmV0dXJuIDA7XG4tXG4gXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFx1MDAyNnNyYyk7XG4gfVxuIFxuQEAgLTY0NCw5ICYjNDM7NjM5LDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFx1MDAyNmFkZHIpKVxuLVx0XHRyZXR1cm4gMDtcbi1cbiBcdHJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2YWRkcik7XG4gfVxuIFxuQEAgLTY3OSw2ICYjNDM7NjcxLDcgQEAgc3RhdGljIGludCB0aXBjX3VkcF9lbmFibGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRcdHJldHVybiAtRU5PTUVNO1xuIFxuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2dWItXHUwMDNlcmNhc3QubGlzdCk7XG4mIzQzO1x0c3Bpbl9sb2NrX2luaXQoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXG4gXHRcdGdvdG8gZXJyO1xuQEAgLTgxOSwxMCAmIzQzOzgxMiwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4gXHRzdHJ1Y3QgdGlwY19uZXQgKnRuO1xuIFxuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcdGxpc3RfZm9yX2VhY2hfZW50cnlfc2FmZShyY2FzdCwgdG1wLCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XG4gXHRcdGxpc3RfZGVsX3JjdShcdTAwMjZyY2FzdC1cdTAwM2VsaXN0KTtcbiBcdFx0Y2FsbF9yY3VfaHVycnkoXHUwMDI2cmNhc3QtXHUwMDNlcmN1LCByY2FzdF9mcmVlX3JjdSk7XG4gXHR9XG4mIzQzO1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXG4gXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVx1MDAzZXNrKSk7XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7VElQQyYjMzQ7LAogICAgJiMzNDtUSVBDX01FRElBX1VEUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3RpcGNfdWRwX3JjYXN0X2FkZCYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9kaXNjJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX25sX2JlYXJlcl9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfZW5hYmxlJiMzNDssCiAgICAmIzM0O2NsZWFudXBfYmVhcmVyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZDRhNGI1NTJlMDY5ZTQyNzA5ZmUyNDNmYWU3YTg0MjVlM2EwNWI2NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgSnVsIDExIDE0OjU5OjQyIDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3RpcGMvdWRwX21lZGlhLmMgYi9uZXQvdGlwYy91ZHBfbWVkaWEuYwppbmRleCA2MmFlN2Y1YjU4NDA5Yy4uM2YwZDc1ZDcyNGVlMTUgMTAwNjQ0Ci0tLSBhL25ldC90aXBjL3VkcF9tZWRpYS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC90aXBjL3VkcF9tZWRpYS5jCkBAIC05NCw2ICYjNDM7OTQsNyBAQCBzdHJ1Y3QgdWRwX3JlcGxpY2FzdCB7CiAgKiBAaWZpbmRleDoJbG9jYWwgYWRkcmVzcyBzY29wZQogICogQHdvcms6CXVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlcgogICogQHJjYXN0Oglhc3NvY2lhdGVkIHVkcF9yZXBsaWNhc3QgY29udGFpbmVyCiYjNDM7ICogQHJjYXN0X2xvY2s6CXNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVycwogICovCiBzdHJ1Y3QgdWRwX2JlYXJlciB7CiAJc3RydWN0IHRpcGNfYmVhcmVyIF9fcmN1ICpiZWFyZXI7CkBAIC0xMDEsNiAmIzQzOzEwMiw3IEBAIHN0cnVjdCB1ZHBfYmVhcmVyIHsKIAl1MzIgaWZpbmRleDsKIAlzdHJ1Y3Qgd29ya19zdHJ1Y3Qgd29yazsKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCByY2FzdDsKJiM0MzsJc3BpbmxvY2tfdCByY2FzdF9sb2NrOyAvKiBwcm90ZWN0cyByY2FzdC5saXN0ICovCiB9OwogCiBzdGF0aWMgaW50IHRpcGNfdWRwX2lzX21jYXN0X2FkZHIoc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKQpAQCAtMjc4LDI2ICYjNDM7MjgwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsCiAJcmV0dXJuIGVycjsKIH0KIAotc3RhdGljIGJvb2wgdGlwY191ZHBfaXNfa25vd25fcGVlcihzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsCi0JCQkJICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKQotewotCXN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDsKLQlzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7Ci0KLQl1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItJmd0O21lZGlhX3B0cik7Ci0JaWYgKCF1YikgewotCQlwcl9lcnJfcmF0ZWxpbWl0ZWQoJiMzNDtVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxuJiMzNDspOwotCQlyZXR1cm4gZmFsc2U7Ci0JfQotCi0JbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsICZhbXA7dWItJmd0O3JjYXN0Lmxpc3QsIGxpc3QpIHsKLQkJaWYgKCFtZW1jbXAoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpKQotCQkJcmV0dXJuIHRydWU7Ci0JfQotCi0JcmV0dXJuIGZhbHNlOwotfQotCiBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsCiAJCQkgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpCiB7CkBAIC0zMDgsMTYgJiM0MzsyOTAsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCWlmICghdWIpCiAJCXJldHVybiAtRU5PREVWOwogCiYjNDM7CS8qIFNlcmlhbGl6ZSB3aXRoIG90aGVyIHVwZGF0ZXJzIGFuZCByZWplY3QgYSBkdXBsaWNhdGUgYmVmb3JlCiYjNDM7CSAqIGFsbG9jYXRpbmcsIHNvIGEgZmxvb2Qgb2YgdGhlIHNhbWUgYWRkcmVzcyBjYW4mIzM5O3QgY2h1cm4gdGhlCiYjNDM7CSAqIGFsbG9jYXRvci4KJiM0MzsJICovCiYjNDM7CXNwaW5fbG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKJiM0MzsJbGlzdF9mb3JfZWFjaF9lbnRyeShyY2FzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCwgbGlzdCkgewomIzQzOwkJaWYgKCFtZW1jbXAoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHsKJiM0MzsJCQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKJiM0MzsJCQlyZXR1cm4gMDsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwogCXJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTsKLQlpZiAoIXJjYXN0KQomIzQzOwlpZiAoIXJjYXN0KSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJcmV0dXJuIC1FTk9NRU07CiYjNDM7CX0KIAogCWlmIChkc3RfY2FjaGVfaW5pdCgmYW1wO3JjYXN0LSZndDtkc3RfY2FjaGUsIEdGUF9BVE9NSUMpKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO3ViLSZndDtyY2FzdF9sb2NrKTsKIAkJa2ZyZWUocmNhc3QpOwogCQlyZXR1cm4gLUVOT01FTTsKIAl9CiAKIAltZW1jcHkoJmFtcDtyY2FzdC0mZ3Q7YWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpOwomIzQzOwlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiYjNDM7CWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAobnRvaHMoYWRkci0mZ3Q7cHJvdG8pID09IEVUSF9QX0lQKQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk0XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY0KTsKQEAgLTMyNSw4ICYjNDM7MzI1LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLAogCWVsc2UgaWYgKG50b2hzKGFkZHItJmd0O3Byb3RvKSA9PSBFVEhfUF9JUFY2KQogCQlwcl9pbmZvKCYjMzQ7TmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XG4mIzM0OywgJmFtcDtyY2FzdC0mZ3Q7YWRkci5pcHY2KTsKICNlbmRpZgotCWItJmd0O2JjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDsKLQlsaXN0X2FkZF9yY3UoJmFtcDtyY2FzdC0mZ3Q7bGlzdCwgJmFtcDt1Yi0mZ3Q7cmNhc3QubGlzdCk7CiAJcmV0dXJuIDA7CiB9CiAKQEAgLTM2MSw5ICYjNDM7MzU5LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYikKIAkJcmV0dXJuIDA7CiAJfQogCi0JaWYgKGxpa2VseSh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsICZhbXA7c3JjKSkpCi0JCXJldHVybiAwOwotCiAJcmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCAmYW1wO3NyYyk7CiB9CiAKQEAgLTY0NCw5ICYjNDM7NjM5LDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKQogCQlyZXR1cm4gLUVJTlZBTDsKIAl9CiAKLQlpZiAodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCAmYW1wO2FkZHIpKQotCQlyZXR1cm4gMDsKLQogCXJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgJmFtcDthZGRyKTsKIH0KIApAQCAtNjc5LDYgJiM0Mzs2NzEsNyBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYiwKIAkJcmV0dXJuIC1FTk9NRU07CiAKIAlJTklUX0xJU1RfSEVBRCgmYW1wO3ViLSZndDtyY2FzdC5saXN0KTsKJiM0MzsJc3Bpbl9sb2NrX2luaXQoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAKIAlpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pCiAJCWdvdG8gZXJyOwpAQCAtODE5LDEwICYjNDM7ODEyLDEyIEBAIHN0YXRpYyB2b2lkIGNsZWFudXBfYmVhcmVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKIAlzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7CiAJc3RydWN0IHRpcGNfbmV0ICp0bjsKIAomIzQzOwlzcGluX2xvY2tfYmgoJmFtcDt1Yi0mZ3Q7cmNhc3RfbG9jayk7CiAJbGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsICZhbXA7dWItJmd0O3JjYXN0Lmxpc3QsIGxpc3QpIHsKIAkJbGlzdF9kZWxfcmN1KCZhbXA7cmNhc3QtJmd0O2xpc3QpOwogCQljYWxsX3JjdV9odXJyeSgmYW1wO3JjYXN0LSZndDtyY3UsIHJjYXN0X2ZyZWVfcmN1KTsKIAl9CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7dWItJmd0O3JjYXN0X2xvY2spOwogCiAJdG4gPSB0aXBjX25ldChzb2NrX25ldCh1Yi0mZ3Q7c2spKTsKIAo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNDo1OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMzE0CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMTgwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgVElQQyBVRFAgTWVkaWEgQmVhcmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3RpcGMvdWRwX21lZGlhLmNgLiBJdCBzZWVtcyB0aGV5JiMzOTtyZSBhZGRyZXNzaW5nIGEgY29uY3VycmVuY3kgaXNzdWUsIGEgcmFjZSBjb25kaXRpb24sIHNwZWNpZmljYWxseSByZWxhdGVkIHRvIHRoZSBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gd2l0aGluIHRoZSBUSVBDIHN1YnN5c3RlbS4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGNlbnRlcmVkIGFyb3VuZCBwcm90ZWN0aW5nIHRoZSBgcmNhc3QubGlzdGAgd2l0aGluIHRoZSBgc3RydWN0IHVkcF9iZWFyZXJgLiBUaGV5JiMzOTt2ZSBpbnRyb2R1Y2VkIGEgYHJjYXN0X2xvY2tgIHRvIG1hbmFnZSBhY2Nlc3MgYW5kIHVwZGF0ZXMgdG8gdGhpcyBsaXN0LCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBlZmZlY3RpdmUgc3RyYXRlZ3kuCgpUaGUgb3RoZXIga2V5IGNoYW5nZSBpcyB0aGUgcmVtb3ZhbCBvZiB0aGUgYHRpcGNfdWRwX2lzX2tub3duX3BlZXJgIGZ1bmN0aW9uLiBJbnN0ZWFkIG9mIHRoYXQgZnVuY3Rpb24gdGhleSYjMzk7dmUgY29uc29saWRhdGVkIGl0cyBsb2dpYyBkaXJlY3RseSB3aXRoaW4gYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGJ1dCBjcnVjaWFsbHksIHRoZXkmIzM5O3JlIG5vdyBwZXJmb3JtaW5nIHRoYXQgY2hlY2sgKnVuZGVyKiB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgYHJjYXN0X2xvY2tgLiBUaGlzIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBmaXggbGllcywgZW5zdXJpbmcgdGhhdCB0aGUgcGVlciBjaGVjayBhbmQgdGhlIGxpc3QgdXBkYXRlIGhhcHBlbiBhdG9taWNhbGx5LCBwcmV2ZW50aW5nIHRoYXQgcmFjZSBjb25kaXRpb24uIEZ1cnRoZXIsIHRoZXkmIzM5O3ZlIGFsc28gYWRkZWQgbG9ja2luZyB0byB0aGUgYGNsZWFudXBfYmVhcmVyYCBmdW5jdGlvbiwgbGlrZWx5IHRvIGVuc3VyZSB0aGF0IG5vIGlzc3VlcyBhcmlzZSB3aGVuIHRoZSBiZWFyZXIgaXMgYmVpbmcgY2xlYW5lZCB1cC4KClNvLCBmdW5jdGlvbmFsbHksIGl0JiMzOTtzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gSSYjMzk7ZCBleHBlY3QgdGhpcyBwYXRjaCB0byBpbXByb3ZlIHRoZSByb2J1c3RuZXNzIG9mIHRoZSBVRFAgcmVwbGljYXN0IGZ1bmN0aW9uYWxpdHkgaW4gVElQQy4KCk5vdywgSSYjMzk7bGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIENPTkZJRyBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGlzIHBhdGNoLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlYXJjaCB0aGUgYG5ldC90aXBjL0tjb25maWdgIGZpbGUuIEkmIzM5O2xsIHNlYXJjaCBmb3IgZWl0aGVyIGB0aXBjX3VkcF9yY2FzdF9hZGRgIG9yIGp1c3QgdGhlIGdlbmVyYWwgYFRJUENgIG9wdGlvbnMuIFRoaXMgc2hvdWxkIHF1aWNrbHkgaWRlbnRpZnkgd2hpY2ggS2NvbmZpZyBvcHRpb25zIGFyZSByZWxhdGVkIHRvIHRoaXMgY29kZSBhbmQsIHRoZXJlZm9yZSwgd2hldGhlciB0aGlzIHBhdGNoIGFwcGxpZXMgdG8gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIEkmIzM5O20gdXNpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRJUEMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL0tjb25maWctNS1cbm5ldC90aXBjL0tjb25maWc6NjptZW51Y29uZmlnIFRJUENcbm5ldC90aXBjL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBUSVBDIFByb3RvY29sXCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yMy1cbm5ldC90aXBjL0tjb25maWc6MjQ6Y29uZmlnIFRJUENfTUVESUFfSUJcbm5ldC90aXBjL0tjb25maWctMjUtXHRib29sIFwmIzM0O0luZmluaUJhbmQgbWVkaWEgdHlwZSBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy0yOS1cdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXG5uZXQvdGlwYy9LY29uZmlnOjMwOmNvbmZpZyBUSVBDX01FRElBX1VEUFxubmV0L3RpcGMvS2NvbmZpZy0zMS1cdGJvb2wgXCYjMzQ7SVAvVURQIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMzctXG5uZXQvdGlwYy9LY29uZmlnOjM4OmNvbmZpZyBUSVBDX0NSWVBUT1xubmV0L3RpcGMvS2NvbmZpZy0zOS1cdGJvb2wgXCYjMzQ7VElQQyBlbmNyeXB0aW9uIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTUyLVxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXG5uZXQvdGlwYy9LY29uZmlnLTU0LVx0dHJpc3RhdGUgXCYjMzQ7VElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDE5MgoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE2NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFRJUEMgVURQIENoYW5nZXMqKgoKT2theSwgc28gaXQgbG9va3MgbGlrZSB3ZSAqbmVlZCogYm90aCBgQ09ORklHX1RJUENgIGFuZCBgQ09ORklHX1RJUENfTUVESUFfVURQYCBlbmFibGVkLiBUaGF0IG11Y2ggaXMgY2xlYXIuIE5vdywgSSB3YW50IHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgY29kZSBtb2RpZmljYXRpb25zIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNoYW5nZS4gTGV0JiMzOTtzIGRpZyBpbnRvIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIGBjbGVhbnVwX2JlYXJlcmAuCgpSaWdodCwgYHRpcGNfdWRwX3JjYXN0X2FkZGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBgdGlwY191ZHBfcmNhc3RfZGlzY2AgYW5kIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQgY29udGV4dC4gSXQmIzM5O3MgbGlrZWx5IGludm9sdmVkIGluIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biB0aGUgVURQIGJyb2FkY2FzdCBmdW5jdGlvbmFsaXR5LiBOb3csIGB0aXBjX3VkcF9yY2FzdF9kaXNjYC4uLiBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoaXMgaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBteSBhdHRlbnRpb24gdGhlcmUgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlLiBJJiMzOTtsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCBzdXNwaWNpb24sIG9mIGNvdXJzZSwgYnV0IHRoYXQmIzM5O3MgYSBnb29kIHBsYWNlIHRvIHN0YXJ0IG15IGludmVzdGlnYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTI4Mz1zdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtMzMwLVxubmV0L3RpcGMvdWRwX21lZGlhLmM6MzMxOnN0YXRpYyBpbnQgdGlwY191ZHBfcmNhc3RfZGlzYyhzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy0zMzIte1xuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jPTM2Nj1zdGF0aWMgaW50IHRpcGNfdWRwX3JlY3Yoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM5MS1cdGlmICh1bmxpa2VseShtc2dfdXNlcihoZHIpID09IExJTktfQ09ORklHKSkge1xubmV0L3RpcGMvdWRwX21lZGlhLmM6MzkyOlx0XHRlcnIgPSB0aXBjX3VkcF9yY2FzdF9kaXNjKGIsIHNrYik7XG5uZXQvdGlwYy91ZHBfbWVkaWEuYy0zOTMtXHRcdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkwNQoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDMwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkludmVzdGlnYXRpbmcgdGhlIFRJUEMgVURQIFJlY2VpdmUgUGF0aCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkmIzM5O20gZm9jdXNpbmcgaW4gb24gdGhlIHJlY2VpdmUgcGF0aCB3aXRoaW4gdGhlIFRJUEMgb3ZlciBVRFAgaW1wbGVtZW50YXRpb24uIFRoYXQgbWVhbnMgSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IGRhdGEgYWN0dWFsbHkgYXJyaXZlcyBhbmQgaXMgaGFuZGxlZC4gTXkgcHJpbWFyeSB0YXJnZXQgcmlnaHQgbm93IGlzIHRoZSBgdGlwY191ZHBfcmVjdmAgZnVuY3Rpb24uIFRoaXMgaXMgd2hlcmUgdGhlIG1hZ2ljIGhhcHBlbnMsIHNvIHRvIHNwZWFrLCB0aGUgY29yZSBvZiByZWNlaXZpbmcgVURQIHBhY2tldHMgd2l0aGluIHRoZSBUSVBDIGZyYW1ld29yay4KClRvIHN0YXJ0LCBJIHRoaW5rIEkmIzM5O2xsIGJhY2stdHJhY2sgYSBiaXQuIFRoZSBgdGlwY191ZHBfcmVjdmAgZnVuY3Rpb24gaGFuZGxlcyB0aGUgcmVjZXB0aW9uLCBidXQgaG93IGRvZXMgdGhlIGJlYXJlciBnZXQgc2V0dXA/IEkgbmVlZCB0byBjaGVjayBob3cgdGhlIGJlYXJlciBnZXRzIGFkZGVkLiBUaGUgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIHRoYXQgc2hvdWxkIGJlIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYC4gS25vd2luZyBob3cgdGhlIGJlYXJlciBpcyBhZGRlZCBhbmQgY29uZmlndXJlZCBwcm92aWRlcyBjb250ZXh0IGZvciBob3cgdGhlIGB0aXBjX3VkcF9yZWN2YCBmdW5jdGlvbiBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTU3OD1zdGF0aWMgaW50IHRpcGNfcGFyc2VfdWRwX2FkZHIoc3RydWN0IG5sYXR0ciAqbmxhLCBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIsXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjE4LVxubmV0L3RpcGMvdWRwX21lZGlhLmM6NjE5OmludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTYyMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMwOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipOZXRsaW5rIElucXVpcnk6IGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCoqCgpPa2F5LCBzbyBJJiMzOTttIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgZnVuY3Rpb24gYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIE5ldGxpbmsgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmV4cG9ydGVkKiB0byB0aGUgTmV0bGluayBBUEksIG9yIGlzIGl0IHVzZWQgKndpdGhpbiogTmV0bGluayYjMzk7cyBpbnRlcm5hbCB3b3JraW5ncz8gVGhhdCYjMzk7cyB0aGUgY29yZSBvZiBteSBjdXJyZW50IGxpbmUgb2YgaW5xdWlyeS4gVW5kZXJzdGFuZGluZyBpdHMgc2NvcGUgaXMgY3J1Y2lhbCB0byBmaWd1cmluZyBvdXQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIG5ldHdvcmsgY29uZmlndXJhdGlvbiBhbmQgbWFuYWdlbWVudCBsYW5kc2NhcGUuIEtub3dpbmcgaXRzIHVzYWdlIG1vZGVsIGlzIGNlbnRyYWwgdG8gaXRzIHV0aWxpdHkuIElzIGl0IGFuIGVudHJ5IHBvaW50IGZvciBjb25maWd1cmF0aW9uIHRocm91Z2ggTmV0bGluayBtZXNzYWdlcywgb3IgaXMgaXQgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCBOZXRsaW5rIG1pZ2h0IGNhbGwgZHVyaW5nIHNvbWUgb3RoZXIgb3BlcmF0aW9uPyBUaGlzIGRpc3RpbmN0aW9uIGZ1bmRhbWVudGFsbHkgaW1wYWN0cyBob3cgSSYjMzk7ZCBhcHByb2FjaCBhbmFseXppbmcgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgbmV0d29yayBjb21wb25lbnRzLiBUaGlzIG5lZWRzIHRvIGJlIGNsYXJpZmllZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTQ6NTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7dGlwY191ZHBfbmxfYmVhcmVyX2FkZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9iZWFyZXIuYz0xMDYzPWludCB0aXBjX25sX2JlYXJlcl9hZGQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbi0tXG5uZXQvdGlwYy9iZWFyZXIuYy0xMDk5LVxubmV0L3RpcGMvYmVhcmVyLmM6MTEwMDpcdFx0ZXJyID0gdGlwY191ZHBfbmxfYmVhcmVyX2FkZChiLFxubmV0L3RpcGMvYmVhcmVyLmMtMTEwMS1cdFx0XHRcdFx0ICAgICBhdHRyc1tUSVBDX05MQV9CRUFSRVJfVURQX09QVFNdKTtcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz01Nzg9c3RhdGljIGludCB0aXBjX3BhcnNlX3VkcF9hZGRyKHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyLFxuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jLTYxOC1cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjYxOTppbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02MjAte1xuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQzLVxubmV0L3RpcGMvdWRwX21lZGlhLmg6NDQ6aW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQ1LWludCB0aXBjX3VkcF9ubF9hZGRfYmVhcmVyX2RhdGEoc3RydWN0IHRpcGNfbmxfbXNnICptc2csIHN0cnVjdCB0aXBjX2JlYXJlciAqYik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE0OjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU5MTgKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAxNjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBUSVBDIE5ldGxpbmsgQmVhcmVyIEFkZGl0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHJlbGF0ZWQgdG8gdGhlIGB0aXBjX25sX2JlYXJlcl9hZGRgIG5ldGxpbmsgaGFuZGxlci4gUmlnaHQsIHRoZSBjb3JlIGlzc3VlIGlzIGEgcmFjZSBjb25kaXRpb24uIEl0IHNlZW1zIGNvbmN1cnJlbnQgcGFja2V0cyBvciBuZXRsaW5rIGNhbGxzIHdlcmUgcG90ZW50aWFsbHkgdHJ5aW5nIHRvIGFkZCB0aGUgc2FtZSBwZWVyIHNpbXVsdGFuZW91c2x5LiBUaGlzIGlzIGEgY2xhc3NpYyByZWNpcGUgZm9yIG1lbW9yeSBsZWFrcyBvciwgd29yc2UsIGNvcnJ1cHRpbmcgdGhlIGxpbmtlZCBsaXN0LiBUaGUgZml4IHRoZXkmIzM5O3ZlIGludHJvZHVjZWQsIHRoZSBgcmNhc3RfbG9ja2Agc3BpbmxvY2sgcHJvdGVjdGluZyBgcmNhc3QubGlzdGAsIG1ha2VzIGltbWVkaWF0ZSBzZW5zZS4gTG9ja2luZyBkb3duIHRoZSBsaXN0IGFuZCB0aGVuIGNoZWNraW5nIGZvciBkdXBsaWNhdGVzICp3aXRoaW4qIHRoYXQgY3JpdGljYWwgc2VjdGlvbiBpcyBhIHNvdW5kIGFwcHJvYWNoIHRvIHByZXZlbnQgY29uY3VycmVudCBtb2RpZmljYXRpb25zLgoKTm93LCBsZXQmIzM5O3Mgc2VlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGEgYml0IGJldHRlci4gVGhlIGNvZGUgbWVudGlvbnMgYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIHRoYXQgYGNsZWFudXBfYmVhcmVyYCBmdW5jdGlvbi4gTGV0IG1lIGNoZWNrIHRoZSBjYWxsLWNoYWlucyBhbmQgcmVsYXRpb25zaGlwcywgSSYjMzk7bGwgcGF5IHBhcnRpY3VsYXIgYXR0ZW50aW9uIHRvIHRob3NlIHN5bWJvbHMsIHBhcnRpY3VsYXJseSBgY2xlYW51cF9iZWFyZXJgLiBXYWl0LCBgY2xlYW51cF9iZWFyZXJgIGlzIGhhbmRsZWQgYnkgYSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgYSBkZWZlcnJhbCBzdHJhdGVneSwgYW5kIGl0JiMzOTtzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHdoZXJlIGFuZCB3aHkgdGhpcyBkZWZlcnJlZCBjbGVhbnVwIGlzIHRha2luZyBwbGFjZS4gSSBzaG91bGQgZmluZCB3aGVyZSBgY2xlYW51cF9iZWFyZXJgIGlzIGFjdHVhbGx5IGJlaW5nIGNhbGxlZCB0byBnZXQgdGhlIGZ1bGwgcGljdHVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y2xlYW51cF9iZWFyZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvdGlwYy91ZHBfbWVkaWEuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy91ZHBfbWVkaWEuYz04MDA9c3RhdGljIHZvaWQgcmNhc3RfZnJlZV9yY3Uoc3RydWN0IHJjdV9oZWFkICpyY3UpXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtODA3LVxubmV0L3RpcGMvdWRwX21lZGlhLmM6ODA4Oi8qIGNsZWFudXBfYmVhcmVyIC0gYnJlYWsgdGhlIHNvY2tldC9iZWFyZXIgYXNzb2NpYXRpb24gKi9cbm5ldC90aXBjL3VkcF9tZWRpYS5jOjgwOTpzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04MTAte1xuLS1cbm5ldC90aXBjL3VkcF9tZWRpYS5jPTgzNT1zdGF0aWMgdm9pZCB0aXBjX3VkcF9kaXNhYmxlKHN0cnVjdCB0aXBjX2JlYXJlciAqYilcbi0tXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NDgtXHRhdG9taWNfaW5jKFx1MDAyNnRpcGNfbmV0KHNvY2tfbmV0KHViLVx1MDAzZXNrKSktXHUwMDNld3FfY291bnQpO1xubmV0L3RpcGMvdWRwX21lZGlhLmM6ODQ5Olx0SU5JVF9XT1JLKFx1MDAyNnViLVx1MDAzZXdvcmssIGNsZWFudXBfYmVhcmVyKTtcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1MC1cdHNjaGVkdWxlX3dvcmsoXHUwMDI2dWItXHUwMDNld29yayk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE1OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY2NzMKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAxOTUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgdGhlIFRJUEMgVURQIFJlcGxpY2FzdCBQZWVyIEFkZGl0aW9uIEZpeCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQsIHJpZ2h0IG9mZiB0aGUgYmF0LCBJIHNlZSB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgaXMgdGhlIGNvcmUgZnVuY3Rpb24gYmVpbmcgYWRkcmVzc2VkIGluIHRoZSBjb250ZXh0IG9mIGB0aXBjX3VkcF9kaXNhYmxlYC4gTXkgaW1tZWRpYXRlIGZvY3VzIHBvaW50cyBhcmUgdGhlIGludGVyYWN0aW9ucyBiZXR3ZWVuIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCwgb2YgY291cnNlLCB0aGUgdHJpZ2dlciBmb3IgYGNsZWFudXBfYmVhcmVyYCwgd2hpY2ggaXMgYHRpcGNfdWRwX2Rpc2FibGVgLiBJIHdhbnQgdG8gdW5kZXJzdGFuZCBleGFjdGx5IGhvdyB0aG9zZSBmdW5jdGlvbnMgaW50ZXJhY3QsIHBhcnRpY3VsYXJseSBhcm91bmQgdGhlIGVuYWJsZS9kaXNhYmxlIGN5Y2xlLgoKVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkIOKAkyB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgcmFjZSBjb25kaXRpb24gd2hlbiBhZGRpbmcgcmVwbGljYXN0IHBlZXJzIGluIHRoZSBVRFAgaW1wbGVtZW50YXRpb24uIFRoZSBmaXgsIGEgc3BpbmxvY2ssIGlzIGludGVuZGVkIHRvIHNlcmlhbGl6ZSB0aG9zZSB1cGRhdGVzLCB0aGVyZWJ5IHByZXZlbnRpbmcgdGhlIGRyZWFkZWQgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBjb25jdXJyZW50IG9wZXJhdGlvbnMgYXJlIGhhcHBlbmluZyB2aWEgcGFja2V0cyBvciBOZXRsaW5rIGNvbW1hbmRzLiBUaGlzIGlzIGEgY2xhc3NpYyByYWNlIGNvbmRpdGlvbiBzY2VuYXJpbywgc28gdGhlIGFwcHJvYWNoIG9mIHNlcmlhbGl6aW5nIGFjY2VzcyB0byB0aGUgc2hhcmVkIHJlcGxpY2FzdCBsaXN0IGlzIHRoZSByaWdodCBkaXJlY3Rpb24uIEkmIzM5O20gbm90aW5nIHRoZSBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXRzIGhlcmU7IHRoZSBOZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycyBhcmUgbm93IGNsZWFybHkgcHJpbWUgdGFyZ2V0cyBmb3IgdGVzdGluZyB0aGUgZml4LgoKSSYjMzk7bSBtYWtpbmcgYSBtZW50YWwgbm90ZSB0byBxdWlja2x5IGRvdWJsZSBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMsIHNwZWNpZmljYWxseSBgVElQQ2AgYW5kIGBUSVBDX01FRElBX1VEUGAsIHRvIGVuc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcy4gSSBhbHdheXMgd2FudCB0byBtYWtlIHN1cmUgSSB1bmRlcnN0YW5kIHRoZSByZWxldmFudCBidWlsZCBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyBzbyBJIGNhbiByZXByb2R1Y2UgdGhlIGJ1ZyBhbmQgdGVzdCB0aGUgZml4LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNTowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgVElQQyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvdGlwYy9LY29uZmlnLTUtXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXG5uZXQvdGlwYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgVElQQyBQcm90b2NvbFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjMtXG5uZXQvdGlwYy9LY29uZmlnOjI0OmNvbmZpZyBUSVBDX01FRElBX0lCXG5uZXQvdGlwYy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtJbmZpbmlCYW5kIG1lZGlhIHR5cGUgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC90aXBjL0tjb25maWctMjktXHQgIElQLW92ZXItSW5maW5pQmFuZCBkZXZpY2VzLlxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcbm5ldC90aXBjL0tjb25maWctMzEtXHRib29sIFwmIzM0O0lQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxubmV0L3RpcGMvS2NvbmZpZzozODpjb25maWcgVElQQ19DUllQVE9cbm5ldC90aXBjL0tjb25maWctMzktXHRib29sIFwmIzM0O1RJUEMgZW5jcnlwdGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L3RpcGMvS2NvbmZpZy01Mi1cbm5ldC90aXBjL0tjb25maWc6NTM6Y29uZmlnIFRJUENfRElBR1xubmV0L3RpcGMvS2NvbmZpZy01NC1cdHRyaXN0YXRlIFwmIzM0O1RJUEM6IHNvY2tldCBtb25pdG9yaW5nIGludGVyZmFjZVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTEyCgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgVElQQyBVRFAgRnVuY3Rpb25zKioKCk9rYXksIGFmdGVyIHJldmlld2luZyB0aGUgcmVsZXZhbnQgY29kZSwgSSYjMzk7bSBjb25maWRlbnQgdGhhdCBpbmNsdWRpbmcgdGhlIGZ1bmN0aW9ucyByZWxhdGVkIHRvIGBUSVBDYCBhbmQgc3BlY2lmaWNhbGx5IGBUSVBDX01FRElBX1VEUGAgaXMgdGhlIHJpZ2h0IGFwcHJvYWNoLiBJdCBzZWVtcyBsaWtlIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdGllcyBhcmUgcHJvcGVybHkgY29udGFpbmVkIGhlcmUuCgpJIHdlbnQgdGhyb3VnaCB0aGUga2V5IGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgSSBhbSBvbiB0aGUgcmlnaHQgdHJhY2suIEkgd2FudGVkIHRvIHZlcmlmeSBhIGZldyB0aGluZ3MuIEZpcnN0LCBpdCBsb29rcyBsaWtlIGB0aXBjX3VkcF9yY2FzdF9hZGRgIGFuZCBgdGlwY191ZHBfcmNhc3RfZGlzY2AgYXJlIGRlZmluZWQgYXMgc3RhdGljLCB3aGljaCBhbGlnbnMgd2l0aCBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZWlyIHB1cnBvc2Ugd2l0aGluIHRoZSBtb2R1bGUuIFRoZW4gSSBmb3VuZCB0aGF0IGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCBpcyBleHBvcnRlZCwgbWVhbmluZyBpdCBpbnRlcmFjdHMgd2l0aCBvdGhlciBUSVBDIGZpbGVzLCB3aGljaCBpcyBhcyBleHBlY3RlZC4gRmluYWxseSwgSSBjb25maXJtZWQgdGhhdCBgdGlwY191ZHBfZW5hYmxlYCBhbmQgYGNsZWFudXBfYmVhcmVyYCBhcmUgYWxzbyBzdGF0aWMgZnVuY3Rpb25zLgoKQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSYjMzk7dmUgZGVjaWRlZCB0byBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIGluIHRoZSB1cGRhdGU6IGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCBgY2xlYW51cF9iZWFyZXJgLiBUaGV5IHNlZW0gdG8gcHJvdmlkZSB0aGUgbmVjZXNzYXJ5IHN1cHBvcnQgZm9yIHRoZSBVRFAgbWVkaWEgbGF5ZXIgd2l0aGluIFRJUEMuCgpOb3csIEkmIzM5O20ganVzdCBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgdGlwY191ZHBfZW5hYmxlYCBoYXMgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZW4gSSYjMzk7bSByZWFkeSB0byBtb3ZlIGZvcndhcmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzExIDE1OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC90aXBjL3VkcF9tZWRpYS5jPTYxOT1pbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjQ1LS8qKlxubmV0L3RpcGMvdWRwX21lZGlhLmM6NjQ2OiAqIHRpcGNfdWRwX2VuYWJsZSAtIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIG5ldyB1ZHAgYmVhcmVyIGluc3RhbmNlXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDctICogQG5ldDpcdG5ldHdvcmsgbmFtZXNwYWNlXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjUzLSAqL1xubmV0L3RpcGMvdWRwX21lZGlhLmM6NjU0OnN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjU1LVx0XHRcdCAgIHN0cnVjdCBubGF0dHIgKmF0dHJzW10pXG4tLVxubmV0L3RpcGMvdWRwX21lZGlhLmM9ODUzPXN0cnVjdCB0aXBjX21lZGlhIHVkcF9tZWRpYV9pbmZvID0ge1xubmV0L3RpcGMvdWRwX21lZGlhLmMtODU0LVx0LnNlbmRfbXNnXHQ9IHRpcGNfdWRwX3NlbmRfbXNnLFxubmV0L3RpcGMvdWRwX21lZGlhLmM6ODU1Olx0LmVuYWJsZV9tZWRpYVx0PSB0aXBjX3VkcF9lbmFibGUsXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NTYtXHQuZGlzYWJsZV9tZWRpYVx0PSB0aXBjX3VkcF9kaXNhYmxlLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xMSAxNTowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MzY2CgkJCQkJCQlvdXRwdXQ6IDE2MgoJCQkJCQkJdGhvdWdodHM6IDI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkNvbmZpcm1pbmcgYW5kIFByb2NlZWRpbmcqKgoKQWxyaWdodCwgKnRpcGNcX3VkcFxfZW5hYmxlKiBjaGVja3Mgb3V0LCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZCBhbmQgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3cgdGhhdCB0aGF0JiMzOTtzIHZlcmlmaWVkLCBJIG5lZWQgdG8gZ2V0IHRoaXMgbW92aW5nLiBUaGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLiBMZXQmIzM5O3MgZ2V0IHRoYXQgZG9uZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTEgMTU6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFRJUEMgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3BpbmxvY2sgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIHJlcGxpY2FzdCBsaXN0LiBUaGlzIHByZXZlbnRzIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBwb3RlbnRpYWwgbGlzdCBjb3JydXB0aW9uIHdoZW4gbXVsdGlwbGUgcGFja2V0cyBvciBuZXRsaW5rIGNvbW1hbmRzIGF0dGVtcHQgdG8gYWRkIHRoZSBzYW1lIHBlZXIgY29uY3VycmVudGx5LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RJUEMmIzM0OywKICAgICYjMzQ7VElQQ19NRURJQV9VRFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt0aXBjX3VkcF9yY2FzdF9hZGQmIzM0OywKICAgICYjMzQ7dGlwY191ZHBfcmNhc3RfZGlzYyYjMzQ7LAogICAgJiMzNDt0aXBjX3VkcF9ubF9iZWFyZXJfYWRkJiMzNDssCiAgICAmIzM0O3RpcGNfdWRwX2VuYWJsZSYjMzQ7LAogICAgJiMzNDtjbGVhbnVwX2JlYXJlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJhY2UgY29uZGl0aW9uIGluIFRJUEMgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIGJ5IGludHJvZHVjaW5nIGEgc3BpbmxvY2sgdG8gc2VyaWFsaXplIHVwZGF0ZXMgdG8gdGhlIHJlcGxpY2FzdCBsaXN0LiBUaGlzIHByZXZlbnRzIGR1cGxpY2F0ZSBlbnRyaWVzIGFuZCBwb3RlbnRpYWwgbGlzdCBjb3JydXB0aW9uIHdoZW4gbXVsdGlwbGUgcGFja2V0cyBvciBuZXRsaW5rIGNvbW1hbmRzIGF0dGVtcHQgdG8gYWRkIHRoZSBzYW1lIHBlZXIgY29uY3VycmVudGx5LiBGdXp6aW5nIHNob3VsZCBmb2N1cyBvbiB0aGUgbmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDo1OTo0My4zNzU2OTUyMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNDQ3MzYwNzY2NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDMuMzc1NzAxODQ5WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTAyODkzNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkNGE0YjU1MmUwNjllNDI3MDlmZTI0M2ZhZTdhODQyNWUzYTA1YjY0XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVsIDExIDE0OjU5OjQyIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC90aXBjL3VkcF9tZWRpYS5jIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcXG5pbmRleCA2MmFlN2Y1YjU4NDA5Yy4uM2YwZDc1ZDcyNGVlMTUgMTAwNjQ0XFxuLS0tIGEvbmV0L3RpcGMvdWRwX21lZGlhLmNcXG4rKysgYi9uZXQvdGlwYy91ZHBfbWVkaWEuY1xcbkBAIC05NCw2ICs5NCw3IEBAIHN0cnVjdCB1ZHBfcmVwbGljYXN0IHtcXG4gICogQGlmaW5kZXg6XFx0bG9jYWwgYWRkcmVzcyBzY29wZVxcbiAgKiBAd29yazpcXHR1c2VkIHRvIHNjaGVkdWxlIGRlZmVycmVkIHdvcmsgb24gYSBiZWFyZXJcXG4gICogQHJjYXN0OlxcdGFzc29jaWF0ZWQgdWRwX3JlcGxpY2FzdCBjb250YWluZXJcXG4rICogQHJjYXN0X2xvY2s6XFx0c2VyaWFsaXplIHVwZGF0ZXMgdG8gQHJjYXN0Lmxpc3QgYWdhaW5zdCBjb25jdXJyZW50IHVwZGF0ZXJzXFxuICAqL1xcbiBzdHJ1Y3QgdWRwX2JlYXJlciB7XFxuIFxcdHN0cnVjdCB0aXBjX2JlYXJlciBfX3JjdSAqYmVhcmVyO1xcbkBAIC0xMDEsNiArMTAyLDcgQEAgc3RydWN0IHVkcF9iZWFyZXIge1xcbiBcXHR1MzIgaWZpbmRleDtcXG4gXFx0c3RydWN0IHdvcmtfc3RydWN0IHdvcms7XFxuIFxcdHN0cnVjdCB1ZHBfcmVwbGljYXN0IHJjYXN0O1xcbitcXHRzcGlubG9ja190IHJjYXN0X2xvY2s7IC8qIHByb3RlY3RzIHJjYXN0Lmxpc3QgKi9cXG4gfTtcXG4gXFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuQEAgLTI3OCwyNiArMjgwLDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9zZW5kX21zZyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG4gXFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuLXtcXG4tXFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgKnJjYXN0LCAqdG1wO1xcbi1cXHRzdHJ1Y3QgdWRwX2JlYXJlciAqdWI7XFxuLVxcbi1cXHR1YiA9IHJjdV9kZXJlZmVyZW5jZV9ydG5sKGItXFx1MDAzZW1lZGlhX3B0cik7XFxuLVxcdGlmICghdWIpIHtcXG4tXFx0XFx0cHJfZXJyX3JhdGVsaW1pdGVkKFxcXCJVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxcXFxuXFxcIik7XFxuLVxcdFxcdHJldHVybiBmYWxzZTtcXG4tXFx0fVxcbi1cXG4tXFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbi1cXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIpKSlcXG4tXFx0XFx0XFx0cmV0dXJuIHRydWU7XFxuLVxcdH1cXG4tXFxuLVxcdHJldHVybiBmYWxzZTtcXG4tfVxcbi1cXG4gc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRcXHQgICAgICBzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXFxuIHtcXG5AQCAtMzA4LDE2ICsyOTAsMzQgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRpZiAoIXViKVxcbiBcXHRcXHRyZXR1cm4gLUVOT0RFVjtcXG4gXFxuK1xcdC8qIFNlcmlhbGl6ZSB3aXRoIG90aGVyIHVwZGF0ZXJzIGFuZCByZWplY3QgYSBkdXBsaWNhdGUgYmVmb3JlXFxuK1xcdCAqIGFsbG9jYXRpbmcsIHNvIGEgZmxvb2Qgb2YgdGhlIHNhbWUgYWRkcmVzcyBjYW4ndCBjaHVybiB0aGVcXG4rXFx0ICogYWxsb2NhdG9yLlxcbitcXHQgKi9cXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkocmNhc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCwgbGlzdCkge1xcbitcXHRcXHRpZiAoIW1lbWNtcChcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIsIGFkZHIsIHNpemVvZigqYWRkcikpKSB7XFxuK1xcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuK1xcdFxcdFxcdHJldHVybiAwO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFxuIFxcdHJjYXN0ID0ga21hbGxvY19vYmooKnJjYXN0LCBHRlBfQVRPTUlDKTtcXG4tXFx0aWYgKCFyY2FzdClcXG4rXFx0aWYgKCFyY2FzdCkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4rXFx0fVxcbiBcXG4gXFx0aWYgKGRzdF9jYWNoZV9pbml0KFxcdTAwMjZyY2FzdC1cXHUwMDNlZHN0X2NhY2hlLCBHRlBfQVRPTUlDKSkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRcXHRrZnJlZShyY2FzdCk7XFxuIFxcdFxcdHJldHVybiAtRU5PTUVNO1xcbiBcXHR9XFxuIFxcbiBcXHRtZW1jcHkoXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLCBhZGRyLCBzaXplb2Yoc3RydWN0IHVkcF9tZWRpYV9hZGRyKSk7XFxuK1xcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdGItXFx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNnViLVxcdTAwM2VyY2FzdF9sb2NrKTtcXG4gXFxuIFxcdGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVApXFxuIFxcdFxcdHByX2luZm8oXFxcIk5ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcXFxuXFxcIiwgXFx1MDAyNnJjYXN0LVxcdTAwM2VhZGRyLmlwdjQpO1xcbkBAIC0zMjUsOCArMzI1LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRlbHNlIGlmIChudG9ocyhhZGRyLVxcdTAwM2Vwcm90bykgPT0gRVRIX1BfSVBWNilcXG4gXFx0XFx0cHJfaW5mbyhcXFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxcXG5cXFwiLCBcXHUwMDI2cmNhc3QtXFx1MDAzZWFkZHIuaXB2Nik7XFxuICNlbmRpZlxcbi1cXHRiLVxcdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XFxuLVxcdGxpc3RfYWRkX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QsIFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuIFxcdHJldHVybiAwO1xcbiB9XFxuIFxcbkBAIC0zNjEsOSArMzU5LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcdH1cXG4gXFxuLVxcdGlmIChsaWtlbHkodGlwY191ZHBfaXNfa25vd25fcGVlcihiLCBcXHUwMDI2c3JjKSkpXFxuLVxcdFxcdHJldHVybiAwO1xcbi1cXG4gXFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcXHUwMDI2c3JjKTtcXG4gfVxcbiBcXG5AQCAtNjQ0LDkgKzYzOSw2IEBAIGludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcdH1cXG4gXFxuLVxcdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFxcdTAwMjZhZGRyKSlcXG4tXFx0XFx0cmV0dXJuIDA7XFxuLVxcbiBcXHRyZXR1cm4gdGlwY191ZHBfcmNhc3RfYWRkKGIsIFxcdTAwMjZhZGRyKTtcXG4gfVxcbiBcXG5AQCAtNjc5LDYgKzY3MSw3IEBAIHN0YXRpYyBpbnQgdGlwY191ZHBfZW5hYmxlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbiBcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4gXFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3QubGlzdCk7XFxuK1xcdHNwaW5fbG9ja19pbml0KFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHRpZiAoIWF0dHJzW1RJUENfTkxBX0JFQVJFUl9VRFBfT1BUU10pXFxuIFxcdFxcdGdvdG8gZXJyO1xcbkBAIC04MTksMTAgKzgxMiwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuIFxcdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcXG4gXFx0c3RydWN0IHRpcGNfbmV0ICp0bjtcXG4gXFxuK1xcdHNwaW5fbG9ja19iaChcXHUwMDI2dWItXFx1MDAzZXJjYXN0X2xvY2spO1xcbiBcXHRsaXN0X2Zvcl9lYWNoX2VudHJ5X3NhZmUocmNhc3QsIHRtcCwgXFx1MDAyNnViLVxcdTAwM2VyY2FzdC5saXN0LCBsaXN0KSB7XFxuIFxcdFxcdGxpc3RfZGVsX3JjdShcXHUwMDI2cmNhc3QtXFx1MDAzZWxpc3QpO1xcbiBcXHRcXHRjYWxsX3JjdV9odXJyeShcXHUwMDI2cmNhc3QtXFx1MDAzZXJjdSwgcmNhc3RfZnJlZV9yY3UpO1xcbiBcXHR9XFxuK1xcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZ1Yi1cXHUwMDNlcmNhc3RfbG9jayk7XFxuIFxcbiBcXHR0biA9IHRpcGNfbmV0KHNvY2tfbmV0KHViLVxcdTAwM2VzaykpO1xcbiBcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDMuODY2NzI1NjM2WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk4MjU2ODUzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBkNGE0YjU1MmUwNjllNDI3MDlmZTI0M2ZhZTdhODQyNWUzYTA1YjY0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBKdWwgMTEgMTQ6NTk6NDIgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvdGlwYy91ZHBfbWVkaWEuYyBiL25ldC90aXBjL3VkcF9tZWRpYS5jXG5pbmRleCA2MmFlN2Y1YjU4NDA5Yy4uM2YwZDc1ZDcyNGVlMTUgMTAwNjQ0XG4tLS0gYS9uZXQvdGlwYy91ZHBfbWVkaWEuY1xuKysrIGIvbmV0L3RpcGMvdWRwX21lZGlhLmNcbkBAIC05NCw2ICs5NCw3IEBAIHN0cnVjdCB1ZHBfcmVwbGljYXN0IHtcbiAgKiBAaWZpbmRleDpcdGxvY2FsIGFkZHJlc3Mgc2NvcGVcbiAgKiBAd29yazpcdHVzZWQgdG8gc2NoZWR1bGUgZGVmZXJyZWQgd29yayBvbiBhIGJlYXJlclxuICAqIEByY2FzdDpcdGFzc29jaWF0ZWQgdWRwX3JlcGxpY2FzdCBjb250YWluZXJcbisgKiBAcmNhc3RfbG9jazpcdHNlcmlhbGl6ZSB1cGRhdGVzIHRvIEByY2FzdC5saXN0IGFnYWluc3QgY29uY3VycmVudCB1cGRhdGVyc1xuICAqL1xuIHN0cnVjdCB1ZHBfYmVhcmVyIHtcbiBcdHN0cnVjdCB0aXBjX2JlYXJlciBfX3JjdSAqYmVhcmVyO1xuQEAgLTEwMSw2ICsxMDIsNyBAQCBzdHJ1Y3QgdWRwX2JlYXJlciB7XG4gXHR1MzIgaWZpbmRleDtcbiBcdHN0cnVjdCB3b3JrX3N0cnVjdCB3b3JrO1xuIFx0c3RydWN0IHVkcF9yZXBsaWNhc3QgcmNhc3Q7XG4rXHRzcGlubG9ja190IHJjYXN0X2xvY2s7IC8qIHByb3RlY3RzIHJjYXN0Lmxpc3QgKi9cbiB9O1xuIFxuIHN0YXRpYyBpbnQgdGlwY191ZHBfaXNfbWNhc3RfYWRkcihzdHJ1Y3QgdWRwX21lZGlhX2FkZHIgKmFkZHIpXG5AQCAtMjc4LDI2ICsyODAsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3NlbmRfbXNnKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbiBcdHJldHVybiBlcnI7XG4gfVxuIFxuLXN0YXRpYyBib29sIHRpcGNfdWRwX2lzX2tub3duX3BlZXIoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxuLVx0XHRcdFx0ICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuLXtcbi1cdHN0cnVjdCB1ZHBfcmVwbGljYXN0ICpyY2FzdCwgKnRtcDtcbi1cdHN0cnVjdCB1ZHBfYmVhcmVyICp1Yjtcbi1cbi1cdHViID0gcmN1X2RlcmVmZXJlbmNlX3J0bmwoYi1cdTAwM2VtZWRpYV9wdHIpO1xuLVx0aWYgKCF1Yikge1xuLVx0XHRwcl9lcnJfcmF0ZWxpbWl0ZWQoXCJVRFAgYmVhcmVyIGluc3RhbmNlIG5vdCBmb3VuZFxcblwiKTtcbi1cdFx0cmV0dXJuIGZhbHNlO1xuLVx0fVxuLVxuLVx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbi1cdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpKVxuLVx0XHRcdHJldHVybiB0cnVlO1xuLVx0fVxuLVxuLVx0cmV0dXJuIGZhbHNlO1xuLX1cbi1cbiBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRcdFx0ICAgICAgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyKVxuIHtcbkBAIC0zMDgsMTYgKzI5MCwzNCBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRpZiAoIXViKVxuIFx0XHRyZXR1cm4gLUVOT0RFVjtcbiBcbitcdC8qIFNlcmlhbGl6ZSB3aXRoIG90aGVyIHVwZGF0ZXJzIGFuZCByZWplY3QgYSBkdXBsaWNhdGUgYmVmb3JlXG4rXHQgKiBhbGxvY2F0aW5nLCBzbyBhIGZsb29kIG9mIHRoZSBzYW1lIGFkZHJlc3MgY2FuJ3QgY2h1cm4gdGhlXG4rXHQgKiBhbGxvY2F0b3IuXG4rXHQgKi9cbitcdHNwaW5fbG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbitcdGxpc3RfZm9yX2VhY2hfZW50cnkocmNhc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbitcdFx0aWYgKCFtZW1jbXAoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKCphZGRyKSkpIHtcbitcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbitcdFx0XHRyZXR1cm4gMDtcbitcdFx0fVxuK1x0fVxuK1xuIFx0cmNhc3QgPSBrbWFsbG9jX29iaigqcmNhc3QsIEdGUF9BVE9NSUMpO1xuLVx0aWYgKCFyY2FzdClcbitcdGlmICghcmNhc3QpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdHJldHVybiAtRU5PTUVNO1xuK1x0fVxuIFxuIFx0aWYgKGRzdF9jYWNoZV9pbml0KFx1MDAyNnJjYXN0LVx1MDAzZWRzdF9jYWNoZSwgR0ZQX0FUT01JQykpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2dWItXHUwMDNlcmNhc3RfbG9jayk7XG4gXHRcdGtmcmVlKHJjYXN0KTtcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXHR9XG4gXG4gXHRtZW1jcHkoXHUwMDI2cmNhc3QtXHUwMDNlYWRkciwgYWRkciwgc2l6ZW9mKHN0cnVjdCB1ZHBfbWVkaWFfYWRkcikpO1xuK1x0bGlzdF9hZGRfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QpO1xuK1x0Yi1cdTAwM2ViY2FzdF9hZGRyLmJyb2FkY2FzdCA9IFRJUENfUkVQTElDQVNUX1NVUFBPUlQ7XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZ1Yi1cdTAwM2VyY2FzdF9sb2NrKTtcbiBcbiBcdGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUClcbiBcdFx0cHJfaW5mbyhcIk5ldyByZXBsaWNhc3QgcGVlcjogJXBJNFxcblwiLCBcdTAwMjZyY2FzdC1cdTAwM2VhZGRyLmlwdjQpO1xuQEAgLTMyNSw4ICszMjUsNiBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsXG4gXHRlbHNlIGlmIChudG9ocyhhZGRyLVx1MDAzZXByb3RvKSA9PSBFVEhfUF9JUFY2KVxuIFx0XHRwcl9pbmZvKFwiTmV3IHJlcGxpY2FzdCBwZWVyOiAlcEk2XFxuXCIsIFx1MDAyNnJjYXN0LVx1MDAzZWFkZHIuaXB2Nik7XG4gI2VuZGlmXG4tXHRiLVx1MDAzZWJjYXN0X2FkZHIuYnJvYWRjYXN0ID0gVElQQ19SRVBMSUNBU1RfU1VQUE9SVDtcbi1cdGxpc3RfYWRkX3JjdShcdTAwMjZyY2FzdC1cdTAwM2VsaXN0LCBcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0KTtcbiBcdHJldHVybiAwO1xuIH1cbiBcbkBAIC0zNjEsOSArMzU5LDYgQEAgc3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9kaXNjKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG4tXHRpZiAobGlrZWx5KHRpcGNfdWRwX2lzX2tub3duX3BlZXIoYiwgXHUwMDI2c3JjKSkpXG4tXHRcdHJldHVybiAwO1xuLVxuIFx0cmV0dXJuIHRpcGNfdWRwX3JjYXN0X2FkZChiLCBcdTAwMjZzcmMpO1xuIH1cbiBcbkBAIC02NDQsOSArNjM5LDYgQEAgaW50IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3QgbmxhdHRyICphdHRyKVxuIFx0XHRyZXR1cm4gLUVJTlZBTDtcbiBcdH1cbiBcbi1cdGlmICh0aXBjX3VkcF9pc19rbm93bl9wZWVyKGIsIFx1MDAyNmFkZHIpKVxuLVx0XHRyZXR1cm4gMDtcbi1cbiBcdHJldHVybiB0aXBjX3VkcF9yY2FzdF9hZGQoYiwgXHUwMDI2YWRkcik7XG4gfVxuIFxuQEAgLTY3OSw2ICs2NzEsNyBAQCBzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYixcbiBcdFx0cmV0dXJuIC1FTk9NRU07XG4gXG4gXHRJTklUX0xJU1RfSEVBRChcdTAwMjZ1Yi1cdTAwM2VyY2FzdC5saXN0KTtcbitcdHNwaW5fbG9ja19pbml0KFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0aWYgKCFhdHRyc1tUSVBDX05MQV9CRUFSRVJfVURQX09QVFNdKVxuIFx0XHRnb3RvIGVycjtcbkBAIC04MTksMTAgKzgxMiwxMiBAQCBzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgdWRwX3JlcGxpY2FzdCAqcmNhc3QsICp0bXA7XG4gXHRzdHJ1Y3QgdGlwY19uZXQgKnRuO1xuIFxuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFx0bGlzdF9mb3JfZWFjaF9lbnRyeV9zYWZlKHJjYXN0LCB0bXAsIFx1MDAyNnViLVx1MDAzZXJjYXN0Lmxpc3QsIGxpc3QpIHtcbiBcdFx0bGlzdF9kZWxfcmN1KFx1MDAyNnJjYXN0LVx1MDAzZWxpc3QpO1xuIFx0XHRjYWxsX3JjdV9odXJyeShcdTAwMjZyY2FzdC1cdTAwM2VyY3UsIHJjYXN0X2ZyZWVfcmN1KTtcbiBcdH1cbitcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNnViLVx1MDAzZXJjYXN0X2xvY2spO1xuIFxuIFx0dG4gPSB0aXBjX25ldChzb2NrX25ldCh1Yi1cdTAwM2VzaykpO1xuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDMuODY2NzI2OTg1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTA4ODkwNDg5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIFRJUEMgVURQIE1lZGlhIEJlYXJlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQvdGlwYy91ZHBfbWVkaWEuY2AuIEl0IHNlZW1zIHRoZXkncmUgYWRkcmVzc2luZyBhIGNvbmN1cnJlbmN5IGlzc3VlLCBhIHJhY2UgY29uZGl0aW9uLCBzcGVjaWZpY2FsbHkgcmVsYXRlZCB0byB0aGUgVURQIHJlcGxpY2FzdCBwZWVyIGFkZGl0aW9uIHdpdGhpbiB0aGUgVElQQyBzdWJzeXN0ZW0uIFRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBjZW50ZXJlZCBhcm91bmQgcHJvdGVjdGluZyB0aGUgYHJjYXN0Lmxpc3RgIHdpdGhpbiB0aGUgYHN0cnVjdCB1ZHBfYmVhcmVyYC4gVGhleSd2ZSBpbnRyb2R1Y2VkIGEgYHJjYXN0X2xvY2tgIHRvIG1hbmFnZSBhY2Nlc3MgYW5kIHVwZGF0ZXMgdG8gdGhpcyBsaXN0LCB3aGljaCBpcyBhIGNvbW1vbiBhbmQgdXN1YWxseSBlZmZlY3RpdmUgc3RyYXRlZ3kuXG5cblRoZSBvdGhlciBrZXkgY2hhbmdlIGlzIHRoZSByZW1vdmFsIG9mIHRoZSBgdGlwY191ZHBfaXNfa25vd25fcGVlcmAgZnVuY3Rpb24uIEluc3RlYWQgb2YgdGhhdCBmdW5jdGlvbiB0aGV5J3ZlIGNvbnNvbGlkYXRlZCBpdHMgbG9naWMgZGlyZWN0bHkgd2l0aGluIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBidXQgY3J1Y2lhbGx5LCB0aGV5J3JlIG5vdyBwZXJmb3JtaW5nIHRoYXQgY2hlY2sgKnVuZGVyKiB0aGUgbmV3bHkgaW1wbGVtZW50ZWQgYHJjYXN0X2xvY2tgLiBUaGlzIGlzIHByb2JhYmx5IHdoZXJlIHRoZSBjb3JlIG9mIHRoZSBmaXggbGllcywgZW5zdXJpbmcgdGhhdCB0aGUgcGVlciBjaGVjayBhbmQgdGhlIGxpc3QgdXBkYXRlIGhhcHBlbiBhdG9taWNhbGx5LCBwcmV2ZW50aW5nIHRoYXQgcmFjZSBjb25kaXRpb24uIEZ1cnRoZXIsIHRoZXkndmUgYWxzbyBhZGRlZCBsb2NraW5nIHRvIHRoZSBgY2xlYW51cF9iZWFyZXJgIGZ1bmN0aW9uLCBsaWtlbHkgdG8gZW5zdXJlIHRoYXQgbm8gaXNzdWVzIGFyaXNlIHdoZW4gdGhlIGJlYXJlciBpcyBiZWluZyBjbGVhbmVkIHVwLlxuXG5TbywgZnVuY3Rpb25hbGx5LCBpdCdzIGEgcmVsYXRpdmVseSBmb2N1c2VkIGNoYW5nZS4gSSdkIGV4cGVjdCB0aGlzIHBhdGNoIHRvIGltcHJvdmUgdGhlIHJvYnVzdG5lc3Mgb2YgdGhlIFVEUCByZXBsaWNhc3QgZnVuY3Rpb25hbGl0eSBpbiBUSVBDLlxuXG5Ob3csIEknbGwgbmVlZCB0byBmaWd1cmUgb3V0IHdoaWNoIENPTkZJRyBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGlzIHBhdGNoLiBMZXQgbWUgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIHNlYXJjaCB0aGUgYG5ldC90aXBjL0tjb25maWdgIGZpbGUuIEknbGwgc2VhcmNoIGZvciBlaXRoZXIgYHRpcGNfdWRwX3JjYXN0X2FkZGAgb3IganVzdCB0aGUgZ2VuZXJhbCBgVElQQ2Agb3B0aW9ucy4gVGhpcyBzaG91bGQgcXVpY2tseSBpZGVudGlmeSB3aGljaCBLY29uZmlnIG9wdGlvbnMgYXJlIHJlbGF0ZWQgdG8gdGhpcyBjb2RlIGFuZCwgdGhlcmVmb3JlLCB3aGV0aGVyIHRoaXMgcGF0Y2ggYXBwbGllcyB0byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gSSdtIHVzaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzE0LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NDguOTU1NjM0MDAxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwMDY4NTgwMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgVElQQ1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDo1OTo0OS4wNTYzMjU2MTRaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDgwNjY1MTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVElQQyBVRFAgQ2hhbmdlcyoqXG5cbk9rYXksIHNvIGl0IGxvb2tzIGxpa2Ugd2UgKm5lZWQqIGJvdGggYENPTkZJR19USVBDYCBhbmQgYENPTkZJR19USVBDX01FRElBX1VEUGAgZW5hYmxlZC4gVGhhdCBtdWNoIGlzIGNsZWFyLiBOb3csIEkgd2FudCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIGNvZGUgbW9kaWZpY2F0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjaGFuZ2UuIExldCdzIGRpZyBpbnRvIHRoZSBmdW5jdGlvbnMgdGhhdCBoYXZlIGJlZW4gdG91Y2hlZDogYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIGBjbGVhbnVwX2JlYXJlcmAuXG5cblJpZ2h0LCBgdGlwY191ZHBfcmNhc3RfYWRkYCBpcyBiZWluZyBjYWxsZWQgZnJvbSBib3RoIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCBhbmQgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLiBUaGF0J3MgaW1wb3J0YW50IGNvbnRleHQuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIHNldHRpbmcgdXAgYW5kIHRlYXJpbmcgZG93biB0aGUgVURQIGJyb2FkY2FzdCBmdW5jdGlvbmFsaXR5LiBOb3csIGB0aXBjX3VkcF9yY2FzdF9kaXNjYC4uLiBteSBpbnR1aXRpb24gaXMgdGVsbGluZyBtZSB0aGF0IHRoaXMgaXMgY2FsbGVkIGR1cmluZyBwYWNrZXQgcmVjZXB0aW9uLiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBteSBhdHRlbnRpb24gdGhlcmUgYW5kIHRha2UgYSBsb29rIGF0IHRoZSBjb2RlLiBJJ2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHN1c3BpY2lvbiwgb2YgY291cnNlLCBidXQgdGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBteSBpbnZlc3RpZ2F0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTkyLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjU5OjUzLjEzNjk5MzE0MVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTcyMTQ0MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuYz0yODM9c3RhdGljIGludCB0aXBjX3VkcF9yY2FzdF9hZGQoc3RydWN0IHRpcGNfYmVhcmVyICpiLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtMzMwLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjMzMTpzdGF0aWMgaW50IHRpcGNfdWRwX3JjYXN0X2Rpc2Moc3RydWN0IHRpcGNfYmVhcmVyICpiLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTMzMi17XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz0zNjY9c3RhdGljIGludCB0aXBjX3VkcF9yZWN2KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM5MS1cXHRpZiAodW5saWtlbHkobXNnX3VzZXIoaGRyKSA9PSBMSU5LX0NPTkZJRykpIHtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzozOTI6XFx0XFx0ZXJyID0gdGlwY191ZHBfcmNhc3RfZGlzYyhiLCBza2IpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTM5My1cXHRcXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNDo1OTo1My4yNTQyMTIzMzFaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzMxNTU1OTU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBUSVBDIFVEUCBSZWNlaXZlIFBhdGgqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSdtIGZvY3VzaW5nIGluIG9uIHRoZSByZWNlaXZlIHBhdGggd2l0aGluIHRoZSBUSVBDIG92ZXIgVURQIGltcGxlbWVudGF0aW9uLiBUaGF0IG1lYW5zIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyBkYXRhIGFjdHVhbGx5IGFycml2ZXMgYW5kIGlzIGhhbmRsZWQuIE15IHByaW1hcnkgdGFyZ2V0IHJpZ2h0IG5vdyBpcyB0aGUgYHRpcGNfdWRwX3JlY3ZgIGZ1bmN0aW9uLiBUaGlzIGlzIHdoZXJlIHRoZSBtYWdpYyBoYXBwZW5zLCBzbyB0byBzcGVhaywgdGhlIGNvcmUgb2YgcmVjZWl2aW5nIFVEUCBwYWNrZXRzIHdpdGhpbiB0aGUgVElQQyBmcmFtZXdvcmsuXG5cblRvIHN0YXJ0LCBJIHRoaW5rIEknbGwgYmFjay10cmFjayBhIGJpdC4gVGhlIGB0aXBjX3VkcF9yZWN2YCBmdW5jdGlvbiBoYW5kbGVzIHRoZSByZWNlcHRpb24sIGJ1dCBob3cgZG9lcyB0aGUgYmVhcmVyIGdldCBzZXR1cD8gSSBuZWVkIHRvIGNoZWNrIGhvdyB0aGUgYmVhcmVyIGdldHMgYWRkZWQuIFRoZSBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgdGhhdCBzaG91bGQgYmUgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLiBLbm93aW5nIGhvdyB0aGUgYmVhcmVyIGlzIGFkZGVkIGFuZCBjb25maWd1cmVkIHByb3ZpZGVzIGNvbnRleHQgZm9yIGhvdyB0aGUgYHRpcGNfdWRwX3JlY3ZgIGZ1bmN0aW9uIGZ1bmN0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDkwNSwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjU5OjU2LjU4NTc3MDgyNVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjEzODQyMDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvdGlwYy91ZHBfbWVkaWEuYz01Nzg9c3RhdGljIGludCB0aXBjX3BhcnNlX3VkcF9hZGRyKHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjE4LVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjYxOTppbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjIwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NTYuNzA3MTY3MDk1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjkzMjk0MzQ3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5ldGxpbmsgSW5xdWlyeTogYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBnZXQgYSBoYW5kbGUgb24gdGhpcyBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgZnVuY3Rpb24gYW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIE5ldGxpbmsgc3Vic3lzdGVtLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXM6IElzIHRoaXMgZnVuY3Rpb24gYWN0dWFsbHkgKmV4cG9ydGVkKiB0byB0aGUgTmV0bGluayBBUEksIG9yIGlzIGl0IHVzZWQgKndpdGhpbiogTmV0bGluaydzIGludGVybmFsIHdvcmtpbmdzPyBUaGF0J3MgdGhlIGNvcmUgb2YgbXkgY3VycmVudCBsaW5lIG9mIGlucXVpcnkuIFVuZGVyc3RhbmRpbmcgaXRzIHNjb3BlIGlzIGNydWNpYWwgdG8gZmlndXJpbmcgb3V0IGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgYnJvYWRlciBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gYW5kIG1hbmFnZW1lbnQgbGFuZHNjYXBlLiBLbm93aW5nIGl0cyB1c2FnZSBtb2RlbCBpcyBjZW50cmFsIHRvIGl0cyB1dGlsaXR5LiBJcyBpdCBhbiBlbnRyeSBwb2ludCBmb3IgY29uZmlndXJhdGlvbiB0aHJvdWdoIE5ldGxpbmsgbWVzc2FnZXMsIG9yIGlzIGl0IGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgTmV0bGluayBtaWdodCBjYWxsIGR1cmluZyBzb21lIG90aGVyIG9wZXJhdGlvbj8gVGhpcyBkaXN0aW5jdGlvbiBmdW5kYW1lbnRhbGx5IGltcGFjdHMgaG93IEknZCBhcHByb2FjaCBhbmFseXppbmcgaXRzIGZ1bmN0aW9uYWxpdHkgYW5kIGludGVncmF0aW9uIHdpdGggb3RoZXIgbmV0d29yayBjb21wb25lbnRzLiBUaGlzIG5lZWRzIHRvIGJlIGNsYXJpZmllZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTMwOSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE0OjU5OjU5LjY0MDExMjI4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE3NzE2OTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRpcGNfdWRwX25sX2JlYXJlcl9hZGRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL2JlYXJlci5jPTEwNjM9aW50IHRpcGNfbmxfYmVhcmVyX2FkZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgZ2VubF9pbmZvICppbmZvKVxcbi0tXFxubmV0L3RpcGMvYmVhcmVyLmMtMTA5OS1cXG5uZXQvdGlwYy9iZWFyZXIuYzoxMTAwOlxcdFxcdGVyciA9IHRpcGNfdWRwX25sX2JlYXJlcl9hZGQoYixcXG5uZXQvdGlwYy9iZWFyZXIuYy0xMTAxLVxcdFxcdFxcdFxcdFxcdCAgICAgYXR0cnNbVElQQ19OTEFfQkVBUkVSX1VEUF9PUFRTXSk7XFxuLS1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYz01Nzg9c3RhdGljIGludCB0aXBjX3BhcnNlX3VkcF9hZGRyKHN0cnVjdCBubGF0dHIgKm5sYSwgc3RydWN0IHVkcF9tZWRpYV9hZGRyICphZGRyLFxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjE4LVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjYxOTppbnQgdGlwY191ZHBfbmxfYmVhcmVyX2FkZChzdHJ1Y3QgdGlwY19iZWFyZXIgKmIsIHN0cnVjdCBubGF0dHIgKmF0dHIpXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjIwLXtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oLTQzLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5oOjQ0OmludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cik7XFxubmV0L3RpcGMvdWRwX21lZGlhLmgtNDUtaW50IHRpcGNfdWRwX25sX2FkZF9iZWFyZXJfZGF0YShzdHJ1Y3QgdGlwY19ubF9tc2cgKm1zZywgc3RydWN0IHRpcGNfYmVhcmVyICpiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTQ6NTk6NTkuNzU3ODMzNjg3WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUwODY3ODg2MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBUSVBDIE5ldGxpbmsgQmVhcmVyIEFkZGl0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCByZWxhdGVkIHRvIHRoZSBgdGlwY19ubF9iZWFyZXJfYWRkYCBuZXRsaW5rIGhhbmRsZXIuIFJpZ2h0LCB0aGUgY29yZSBpc3N1ZSBpcyBhIHJhY2UgY29uZGl0aW9uLiBJdCBzZWVtcyBjb25jdXJyZW50IHBhY2tldHMgb3IgbmV0bGluayBjYWxscyB3ZXJlIHBvdGVudGlhbGx5IHRyeWluZyB0byBhZGQgdGhlIHNhbWUgcGVlciBzaW11bHRhbmVvdXNseS4gVGhpcyBpcyBhIGNsYXNzaWMgcmVjaXBlIGZvciBtZW1vcnkgbGVha3Mgb3IsIHdvcnNlLCBjb3JydXB0aW5nIHRoZSBsaW5rZWQgbGlzdC4gVGhlIGZpeCB0aGV5J3ZlIGludHJvZHVjZWQsIHRoZSBgcmNhc3RfbG9ja2Agc3BpbmxvY2sgcHJvdGVjdGluZyBgcmNhc3QubGlzdGAsIG1ha2VzIGltbWVkaWF0ZSBzZW5zZS4gTG9ja2luZyBkb3duIHRoZSBsaXN0IGFuZCB0aGVuIGNoZWNraW5nIGZvciBkdXBsaWNhdGVzICp3aXRoaW4qIHRoYXQgY3JpdGljYWwgc2VjdGlvbiBpcyBhIHNvdW5kIGFwcHJvYWNoIHRvIHByZXZlbnQgY29uY3VycmVudCBtb2RpZmljYXRpb25zLlxuXG5Ob3csIGxldCdzIHNlZSwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBhIGJpdCBiZXR0ZXIuIFRoZSBjb2RlIG1lbnRpb25zIGB0aXBjX3VkcF9yY2FzdF9hZGRgLCBgdGlwY191ZHBfcmNhc3RfZGlzY2AsIGB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkYCwgYHRpcGNfdWRwX2VuYWJsZWAsIGFuZCB0aGF0IGBjbGVhbnVwX2JlYXJlcmAgZnVuY3Rpb24uIExldCBtZSBjaGVjayB0aGUgY2FsbC1jaGFpbnMgYW5kIHJlbGF0aW9uc2hpcHMsIEknbGwgcGF5IHBhcnRpY3VsYXIgYXR0ZW50aW9uIHRvIHRob3NlIHN5bWJvbHMsIHBhcnRpY3VsYXJseSBgY2xlYW51cF9iZWFyZXJgLiBXYWl0LCBgY2xlYW51cF9iZWFyZXJgIGlzIGhhbmRsZWQgYnkgYSB3b3JrcXVldWUuIFRoaXMgc3VnZ2VzdHMgYSBkZWZlcnJhbCBzdHJhdGVneSwgYW5kIGl0J3MgZXNzZW50aWFsIHRvIHVuZGVyc3RhbmQgd2hlcmUgYW5kIHdoeSB0aGlzIGRlZmVycmVkIGNsZWFudXAgaXMgdGFraW5nIHBsYWNlLiBJIHNob3VsZCBmaW5kIHdoZXJlIGBjbGVhbnVwX2JlYXJlcmAgaXMgYWN0dWFsbHkgYmVpbmcgY2FsbGVkIHRvIGdldCB0aGUgZnVsbCBwaWN0dXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTE4LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTExVDE1OjAwOjA0Ljg0NDYyNDExM1oiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTExNzUzMDAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNsZWFudXBfYmVhcmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC90aXBjL3VkcF9tZWRpYS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL3VkcF9tZWRpYS5jPTgwMD1zdGF0aWMgdm9pZCByY2FzdF9mcmVlX3JjdShzdHJ1Y3QgcmN1X2hlYWQgKnJjdSlcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTgwNy1cXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4MDg6LyogY2xlYW51cF9iZWFyZXIgLSBicmVhayB0aGUgc29ja2V0L2JlYXJlciBhc3NvY2lhdGlvbiAqL1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjgwOTpzdGF0aWMgdm9pZCBjbGVhbnVwX2JlYXJlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtODEwLXtcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jPTgzNT1zdGF0aWMgdm9pZCB0aXBjX3VkcF9kaXNhYmxlKHN0cnVjdCB0aXBjX2JlYXJlciAqYilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg0OC1cXHRhdG9taWNfaW5jKFxcdTAwMjZ0aXBjX25ldChzb2NrX25ldCh1Yi1cXHUwMDNlc2spKS1cXHUwMDNld3FfY291bnQpO1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjg0OTpcXHRJTklUX1dPUksoXFx1MDAyNnViLVxcdTAwM2V3b3JrLCBjbGVhbnVwX2JlYXJlcik7XFxubmV0L3RpcGMvdWRwX21lZGlhLmMtODUwLVxcdHNjaGVkdWxlX3dvcmsoXFx1MDAyNnViLVxcdTAwM2V3b3JrKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MDQuOTU2Mzg1MDE0WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ5MzYzNjk5MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFRJUEMgVURQIFJlcGxpY2FzdCBQZWVyIEFkZGl0aW9uIEZpeCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBgY2xlYW51cF9iZWFyZXJgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uIGJlaW5nIGFkZHJlc3NlZCBpbiB0aGUgY29udGV4dCBvZiBgdGlwY191ZHBfZGlzYWJsZWAuIE15IGltbWVkaWF0ZSBmb2N1cyBwb2ludHMgYXJlIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBgdGlwY191ZHBfcmNhc3RfYWRkYCwgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgLCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAsIGB0aXBjX3VkcF9lbmFibGVgLCBhbmQsIG9mIGNvdXJzZSwgdGhlIHRyaWdnZXIgZm9yIGBjbGVhbnVwX2JlYXJlcmAsIHdoaWNoIGlzIGB0aXBjX3VkcF9kaXNhYmxlYC4gSSB3YW50IHRvIHVuZGVyc3RhbmQgZXhhY3RseSBob3cgdGhvc2UgZnVuY3Rpb25zIGludGVyYWN0LCBwYXJ0aWN1bGFybHkgYXJvdW5kIHRoZSBlbmFibGUvZGlzYWJsZSBjeWNsZS5cblxuVGhlIHJlYXNvbmluZyBoZXJlIGlzIHNvbGlkIOKAkyB3ZSdyZSBkZWFsaW5nIHdpdGggYSByYWNlIGNvbmRpdGlvbiB3aGVuIGFkZGluZyByZXBsaWNhc3QgcGVlcnMgaW4gdGhlIFVEUCBpbXBsZW1lbnRhdGlvbi4gVGhlIGZpeCwgYSBzcGlubG9jaywgaXMgaW50ZW5kZWQgdG8gc2VyaWFsaXplIHRob3NlIHVwZGF0ZXMsIHRoZXJlYnkgcHJldmVudGluZyB0aGUgZHJlYWRlZCBkdXBsaWNhdGUgZW50cmllcyBhbmQgcG90ZW50aWFsIGxpc3QgY29ycnVwdGlvbiB3aGVuIGNvbmN1cnJlbnQgb3BlcmF0aW9ucyBhcmUgaGFwcGVuaW5nIHZpYSBwYWNrZXRzIG9yIE5ldGxpbmsgY29tbWFuZHMuIFRoaXMgaXMgYSBjbGFzc2ljIHJhY2UgY29uZGl0aW9uIHNjZW5hcmlvLCBzbyB0aGUgYXBwcm9hY2ggb2Ygc2VyaWFsaXppbmcgYWNjZXNzIHRvIHRoZSBzaGFyZWQgcmVwbGljYXN0IGxpc3QgaXMgdGhlIHJpZ2h0IGRpcmVjdGlvbi4gSSdtIG5vdGluZyB0aGUgcG90ZW50aWFsIGZ1enppbmcgdGFyZ2V0cyBoZXJlOyB0aGUgTmV0bGluayBhbmQgcmVjZWl2ZSBwYXRocyBmb3IgVURQIGJlYXJlcnMgYXJlIG5vdyBjbGVhcmx5IHByaW1lIHRhcmdldHMgZm9yIHRlc3RpbmcgdGhlIGZpeC5cblxuSSdtIG1ha2luZyBhIG1lbnRhbCBub3RlIHRvIHF1aWNrbHkgZG91YmxlIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBUSVBDYCBhbmQgYFRJUENfTUVESUFfVURQYCwgdG8gZW5zdXJlIEkgdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBJIGFsd2F5cyB3YW50IHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGV2YW50IGJ1aWxkIGNvbmZpZ3VyYXRpb24gZGVwZW5kZW5jaWVzIHNvIEkgY2FuIHJlcHJvZHVjZSB0aGUgYnVnIGFuZCB0ZXN0IHRoZSBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY2NzMsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MDkuODkyNzU4NDg1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTE5NTY0MTEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFRJUENcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC90aXBjL0tjb25maWctNS1cXG5uZXQvdGlwYy9LY29uZmlnOjY6bWVudWNvbmZpZyBUSVBDXFxubmV0L3RpcGMvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgVElQQyBQcm90b2NvbFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctMjMtXFxubmV0L3RpcGMvS2NvbmZpZzoyNDpjb25maWcgVElQQ19NRURJQV9JQlxcbm5ldC90aXBjL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiSW5maW5pQmFuZCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTI5LVxcdCAgSVAtb3Zlci1JbmZpbmlCYW5kIGRldmljZXMuXFxubmV0L3RpcGMvS2NvbmZpZzozMDpjb25maWcgVElQQ19NRURJQV9VRFBcXG5uZXQvdGlwYy9LY29uZmlnLTMxLVxcdGJvb2wgXFxcIklQL1VEUCBtZWRpYSB0eXBlIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvdGlwYy9LY29uZmlnLTM3LVxcbm5ldC90aXBjL0tjb25maWc6Mzg6Y29uZmlnIFRJUENfQ1JZUFRPXFxubmV0L3RpcGMvS2NvbmZpZy0zOS1cXHRib29sIFxcXCJUSVBDIGVuY3J5cHRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC90aXBjL0tjb25maWctNTItXFxubmV0L3RpcGMvS2NvbmZpZzo1Mzpjb25maWcgVElQQ19ESUFHXFxubmV0L3RpcGMvS2NvbmZpZy01NC1cXHR0cmlzdGF0ZSBcXFwiVElQQzogc29ja2V0IG1vbml0b3JpbmcgaW50ZXJmYWNlXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNTowMDoxMC4wMDQ3MjA0MTZaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDMxNDU0MTM3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIFRJUEMgVURQIEZ1bmN0aW9ucyoqXG5cbk9rYXksIGFmdGVyIHJldmlld2luZyB0aGUgcmVsZXZhbnQgY29kZSwgSSdtIGNvbmZpZGVudCB0aGF0IGluY2x1ZGluZyB0aGUgZnVuY3Rpb25zIHJlbGF0ZWQgdG8gYFRJUENgIGFuZCBzcGVjaWZpY2FsbHkgYFRJUENfTUVESUFfVURQYCBpcyB0aGUgcmlnaHQgYXBwcm9hY2guIEl0IHNlZW1zIGxpa2UgdGhlIGNvcmUgZnVuY3Rpb25hbGl0aWVzIGFyZSBwcm9wZXJseSBjb250YWluZWQgaGVyZS5cblxuSSB3ZW50IHRocm91Z2ggdGhlIGtleSBmdW5jdGlvbnMgdG8gbWFrZSBzdXJlIEkgYW0gb24gdGhlIHJpZ2h0IHRyYWNrLiBJIHdhbnRlZCB0byB2ZXJpZnkgYSBmZXcgdGhpbmdzLiBGaXJzdCwgaXQgbG9va3MgbGlrZSBgdGlwY191ZHBfcmNhc3RfYWRkYCBhbmQgYHRpcGNfdWRwX3JjYXN0X2Rpc2NgIGFyZSBkZWZpbmVkIGFzIHN0YXRpYywgd2hpY2ggYWxpZ25zIHdpdGggbXkgdW5kZXJzdGFuZGluZyBvZiB0aGVpciBwdXJwb3NlIHdpdGhpbiB0aGUgbW9kdWxlLiBUaGVuIEkgZm91bmQgdGhhdCBgdGlwY191ZHBfbmxfYmVhcmVyX2FkZGAgaXMgZXhwb3J0ZWQsIG1lYW5pbmcgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgVElQQyBmaWxlcywgd2hpY2ggaXMgYXMgZXhwZWN0ZWQuIEZpbmFsbHksIEkgY29uZmlybWVkIHRoYXQgYHRpcGNfdWRwX2VuYWJsZWAgYW5kIGBjbGVhbnVwX2JlYXJlcmAgYXJlIGFsc28gc3RhdGljIGZ1bmN0aW9ucy5cblxuQmFzZWQgb24gdGhpcyBhbmFseXNpcywgSSd2ZSBkZWNpZGVkIHRvIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgaW4gdGhlIHVwZGF0ZTogYHRpcGNfdWRwX3JjYXN0X2FkZGAsIGB0aXBjX3VkcF9yY2FzdF9kaXNjYCwgYHRpcGNfdWRwX25sX2JlYXJlcl9hZGRgLCBgdGlwY191ZHBfZW5hYmxlYCwgYW5kIGBjbGVhbnVwX2JlYXJlcmAuIFRoZXkgc2VlbSB0byBwcm92aWRlIHRoZSBuZWNlc3Nhcnkgc3VwcG9ydCBmb3IgdGhlIFVEUCBtZWRpYSBsYXllciB3aXRoaW4gVElQQy5cblxuTm93LCBJJ20ganVzdCBnb2luZyB0byBkb3VibGUtY2hlY2sgdGhhdCBgdGlwY191ZHBfZW5hYmxlYCBoYXMgdGhlIGNvcnJlY3QgbmFtZSwgYW5kIHRoZW4gSSdtIHJlYWR5IHRvIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxMiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xMVQxNTowMDoxNC4zMTkyNjQ1NzNaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjQwNzEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ0aXBjX3VkcF9lbmFibGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3RpcGMvdWRwX21lZGlhLmM9NjE5PWludCB0aXBjX3VkcF9ubF9iZWFyZXJfYWRkKHN0cnVjdCB0aXBjX2JlYXJlciAqYiwgc3RydWN0IG5sYXR0ciAqYXR0cilcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTY0NS0vKipcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo2NDY6ICogdGlwY191ZHBfZW5hYmxlIC0gY2FsbGJhY2sgdG8gY3JlYXRlIGEgbmV3IHVkcCBiZWFyZXIgaW5zdGFuY2VcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NDctICogQG5ldDpcXHRuZXR3b3JrIG5hbWVzcGFjZVxcbi0tXFxubmV0L3RpcGMvdWRwX21lZGlhLmMtNjUzLSAqL1xcbm5ldC90aXBjL3VkcF9tZWRpYS5jOjY1NDpzdGF0aWMgaW50IHRpcGNfdWRwX2VuYWJsZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCB0aXBjX2JlYXJlciAqYixcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy02NTUtXFx0XFx0XFx0ICAgc3RydWN0IG5sYXR0ciAqYXR0cnNbXSlcXG4tLVxcbm5ldC90aXBjL3VkcF9tZWRpYS5jPTg1Mz1zdHJ1Y3QgdGlwY19tZWRpYSB1ZHBfbWVkaWFfaW5mbyA9IHtcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYy04NTQtXFx0LnNlbmRfbXNnXFx0PSB0aXBjX3VkcF9zZW5kX21zZyxcXG5uZXQvdGlwYy91ZHBfbWVkaWEuYzo4NTU6XFx0LmVuYWJsZV9tZWRpYVxcdD0gdGlwY191ZHBfZW5hYmxlLFxcbm5ldC90aXBjL3VkcF9tZWRpYS5jLTg1Ni1cXHQuZGlzYWJsZV9tZWRpYVxcdD0gdGlwY191ZHBfZGlzYWJsZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MTQuNDM1Njc2OTczWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNDcwMjIyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNvbmZpcm1pbmcgYW5kIFByb2NlZWRpbmcqKlxuXG5BbHJpZ2h0LCAqdGlwY1xcX3VkcFxcX2VuYWJsZSogY2hlY2tzIG91dCwgdGhhdCdzIHdoYXQgSSBleHBlY3RlZCBhbmQgY29uZmlybXMgbXkgaW5pdGlhbCBhc3Nlc3NtZW50LiBOb3cgdGhhdCB0aGF0J3MgdmVyaWZpZWQsIEkgbmVlZCB0byBnZXQgdGhpcyBtb3ZpbmcuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjYWxsIGBzZXQtcmVzdWx0c2AuIExldCdzIGdldCB0aGF0IGRvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgzNjYsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTFUMTU6MDA6MTcuNjgyNzAxNzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2NTg3NjgyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUSVBDXCIsXG4gICAgXCJUSVBDX01FRElBX1VEUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInRpcGNfdWRwX3JjYXN0X2FkZFwiLFxuICAgIFwidGlwY191ZHBfcmNhc3RfZGlzY1wiLFxuICAgIFwidGlwY191ZHBfbmxfYmVhcmVyX2FkZFwiLFxuICAgIFwidGlwY191ZHBfZW5hYmxlXCIsXG4gICAgXCJjbGVhbnVwX2JlYXJlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW4gVElQQyBVRFAgcmVwbGljYXN0IHBlZXIgYWRkaXRpb24gYnkgaW50cm9kdWNpbmcgYSBzcGlubG9jayB0byBzZXJpYWxpemUgdXBkYXRlcyB0byB0aGUgcmVwbGljYXN0IGxpc3QuIFRoaXMgcHJldmVudHMgZHVwbGljYXRlIGVudHJpZXMgYW5kIHBvdGVudGlhbCBsaXN0IGNvcnJ1cHRpb24gd2hlbiBtdWx0aXBsZSBwYWNrZXRzIG9yIG5ldGxpbmsgY29tbWFuZHMgYXR0ZW1wdCB0byBhZGQgdGhlIHNhbWUgcGVlciBjb25jdXJyZW50bHkuIEZ1enppbmcgc2hvdWxkIGZvY3VzIG9uIHRoZSBuZXRsaW5rIGFuZCByZWNlaXZlIHBhdGhzIGZvciBVRFAgYmVhcmVycy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[1] Phase: Succeeded StartedAt: 2026-07-11 15:00:29 +0000 UTC FinishedAt: 2026-07-11 15:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-11 15:00:29 +0000 UTC FinishedAt: 2026-07-11 15:00:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2] Phase: Succeeded StartedAt: 2026-07-11 15:00:29 +0000 UTC FinishedAt: 2026-07-11 19:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-11 15:00:29 +0000 UTC FinishedAt: 2026-07-11 19:06:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-11 15:00:29 +0000 UTC FinishedAt: 2026-07-11 15:00:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-11 15:00:30 +0000 UTC FinishedAt: 2026-07-11 15:00:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowff7nf/series-workflowff7nf-convert-artifact-2289354577/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-11 15:00:40 +0000 UTC FinishedAt: 2026-07-11 15:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-11 15:00:40 +0000 UTC FinishedAt: 2026-07-11 15:32:59 +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:*8d3cc9b1-0338-40ff-9e2c-7a407892c577,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-workflowff7nf/series-workflowff7nf-convert-artifact-2289354577/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": "bb36e6b4-47b6-4a02-9c9e-c9cd98da2bc4", "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-workflowff7nf/series-workflowff7nf-build-action-863330559/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-11 15:00:40 +0000 UTC FinishedAt: 2026-07-11 15:32:49 +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:*8d3cc9b1-0338-40ff-9e2c-7a407892c577,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-workflowff7nf/series-workflowff7nf-convert-artifact-2289354577/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": "bb36e6b4-47b6-4a02-9c9e-c9cd98da2bc4", "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-workflowff7nf/series-workflowff7nf-build-action-863330559/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-11 15:32:59 +0000 UTC FinishedAt: 2026-07-11 15:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-11 15:32:59 +0000 UTC FinishedAt: 2026-07-11 15:32:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-11 15:32:59 +0000 UTC FinishedAt: 2026-07-11 15:33:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-11 15:32:59 +0000 UTC FinishedAt: 2026-07-11 15:33:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowff7nf/series-workflowff7nf-convert-artifact-510994724/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-11 15:33:09 +0000 UTC FinishedAt: 2026-07-11 15:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-11 15:33:09 +0000 UTC FinishedAt: 2026-07-11 15:35:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bb36e6b4-47b6-4a02-9c9e-c9cd98da2bc4,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-workflowff7nf/series-workflowff7nf-build-action-863330559/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-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-11 15:35:12 +0000 UTC FinishedAt: 2026-07-11 15:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-11 15:35:12 +0000 UTC FinishedAt: 2026-07-11 15:35:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-11 15:35:12 +0000 UTC FinishedAt: 2026-07-11 16:02:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-11 15:35:12 +0000 UTC FinishedAt: 2026-07-11 16:02:24 +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:*8d3cc9b1-0338-40ff-9e2c-7a407892c577,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-workflowff7nf/series-workflowff7nf-convert-artifact-510994724/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": "3afd10c8-06fb-48bf-ad0a-3e1352a1aefa", "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-workflowff7nf/series-workflowff7nf-build-action-1957928880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-11 15:35:12 +0000 UTC FinishedAt: 2026-07-11 16:02:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*8d3cc9b1-0338-40ff-9e2c-7a407892c577,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-workflowff7nf/series-workflowff7nf-convert-artifact-510994724/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": "3afd10c8-06fb-48bf-ad0a-3e1352a1aefa", "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-workflowff7nf/series-workflowff7nf-build-action-1957928880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-11 16:02:24 +0000 UTC FinishedAt: 2026-07-11 16:02:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-11 16:02:24 +0000 UTC FinishedAt: 2026-07-11 16:02:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-11 16:02:24 +0000 UTC FinishedAt: 2026-07-11 16:04:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-11 16:02:24 +0000 UTC FinishedAt: 2026-07-11 16:04:16 +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:*3afd10c8-06fb-48bf-ad0a-3e1352a1aefa,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-workflowff7nf/series-workflowff7nf-build-action-1957928880/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-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 19:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 19:06:58 +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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"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:*bb36e6b4-47b6-4a02-9c9e-c9cd98da2bc4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3afd10c8-06fb-48bf-ad0a-3e1352a1aefa,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-workflowff7nf/series-workflowff7nf-build-action-863330559/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-workflowff7nf/series-workflowff7nf-build-action-1957928880/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 16:04:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 16:04:30 +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":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"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-workflowff7nf/series-workflowff7nf-convert-artifact-1132073645/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 16:04:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 16:04:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-11 16:04:26 +0000 UTC FinishedAt: 2026-07-11 16:04:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-11 16:04:36 +0000 UTC FinishedAt: 2026-07-11 19:06:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowff7nf[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["tipc_udp_rcast_add","tipc_udp_rcast_disc","tipc_udp_nl_bearer_add","tipc_udp_enable","cleanup_bearer"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"1cd23ca80784223fa2204e16203f754da4e821f8","config_name":"upstream-apparmor-kasan.config","enable_configs":["TIPC","TIPC_MEDIA_UDP"],"series_id":"86ff341a-17ce-470d-98d5-07a5f39b6153","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-11 16:04:36 +0000 UTC FinishedAt: 2026-07-11 19:06:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*bb36e6b4-47b6-4a02-9c9e-c9cd98da2bc4,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3afd10c8-06fb-48bf-ad0a-3e1352a1aefa,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-workflowff7nf/series-workflowff7nf-build-action-863330559/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-workflowff7nf/series-workflowff7nf-build-action-1957928880/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-workflowff7nf/series-workflowff7nf-convert-artifact-1132073645/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}