Name: series-workflowmdtxs Phase: Succeeded StartedAt: 2026-06-24 23:22:15 +0000 UTC FinishedAt: 2026-06-25 03:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[0] Phase: Succeeded StartedAt: 2026-06-24 23:22:15 +0000 UTC FinishedAt: 2026-06-24 23:31:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[0].run-triage Phase: Succeeded StartedAt: 2026-06-24 23:22:15 +0000 UTC FinishedAt: 2026-06-24 23:31:14 +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": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP", "SCTP_DEFAULT_COOKIE_HMAC_NONE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP", "SCTP_DEFAULT_COOKIE_HMAC_NONE" ], "series_id": "741f8974-d6ca-4997-9532-e95451fb5a24" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_unpack_cookie", "sctp_verify_init", "sctp_sf_do_5_1D_ce", "sctp_sf_do_5_2_4_dupcook" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7U0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF92ZXJpZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvXzVfMURfY2UmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzJfNF9kdXBjb29rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFjZDY4MjVlOThkMWZjNzFkN2U5OWU5ZTg5ZGM2YmEzMTk0MzVkNzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAyMzozMDoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDQxOTU4YjhlNTlmZDUzLi44YWRhYzllMGNkNjZiZSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMTc2MSw2ICYjNDM7MTc2MSw4IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXG4gXHRiZWFyX2Nvb2tpZSA9IFx1MDAyNmNvb2tpZS1cdTAwM2VjO1xuIFxuIFx0Y2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKikoYmVhcl9jb29raWUgJiM0MzsgMSk7XG4mIzQzO1x0aWYgKGNoLVx1MDAzZXR5cGUgIT0gU0NUUF9DSURfSU5JVClcbiYjNDM7XHRcdGdvdG8gbWFsZm9ybWVkO1xuIFx0Y2hsZW4gPSBudG9ocyhjaC1cdTAwM2VsZW5ndGgpO1xuIFx0aWYgKGNobGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpXG4gXHRcdGdvdG8gbWFsZm9ybWVkO1xuQEAgLTIyOTgsNyAmIzQzOzIzMDAsOCBAQCBpbnQgc2N0cF92ZXJpZnlfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiBcdCAqIFZJT0xBVElPTiBlcnJvci4gIFdlIGJ1aWxkIHRoZSBFUlJPUiBjaHVuayBoZXJlIGFuZCBsZXQgdGhlIG5vcm1hbFxuIFx0ICogZXJyb3IgaGFuZGxpbmcgY29kZSBidWlsZCBhbmQgc2VuZCB0aGUgcGFja2V0LlxuIFx0ICovXG4tXHRpZiAocGFyYW0udiAhPSAodm9pZCAqKWNodW5rLVx1MDAzZWNodW5rX2VuZClcbiYjNDM7XHRpZiAocGFyYW0udiAhPSAodm9pZCAqKXBlZXJfaW5pdCAmIzQzO1xuJiM0MztcdFx0ICAgICAgIFNDVFBfUEFENChudG9ocyhwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLmxlbmd0aCkpKVxuIFx0XHRyZXR1cm4gc2N0cF9wcm9jZXNzX2ludl9wYXJhbWxlbmd0aChhc29jLCBwYXJhbS5wLCBjaHVuaywgZXJycCk7XG4gXG4gXHQvKiBUaGUgb25seSBtaXNzaW5nIG1hbmRhdG9yeSBwYXJhbSBwb3NzaWJsZSB0b2RheSBpc1xuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbmluZGV4IDhlOTIwY2VmMDg1OGNmLi5kMjNkOTM1ZTEyOGU5NiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuQEAgLTcwNywxMSAmIzQzOzcwNywxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHRcdFx0IHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3VscGV2ZW50ICpldiwgKmFpX2V2ID0gTlVMTCwgKmF1dGhfZXYgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3AgPSBOVUxMO1xuIFx0c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKm5ld19hc29jO1xuIFx0c3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0O1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXJnO1xuLVx0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcDtcbiBcdHN0cnVjdCBzY3RwX2NodW5rICpyZXBsO1xuJiM0MztcdGVudW0gc2N0cF9jaWQgY2lkO1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuIFx0aW50IGVycm9yID0gMDtcbiBcbkBAIC03ODUsNiAmIzQzOzc4NiwxOSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopKGNodW5rLVx1MDAzZXN1YmguY29va2llX2hkciAmIzQzOyAxKTtcbiYjNDM7XHRjaWQgPSBwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLnR5cGU7XG4mIzQzO1x0aWYgKCFzY3RwX3NrKHNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcbiYjNDM7XHRcdFx0ICAgICAgXHUwMDI2ZXJyX2Noa19wKSkge1xuJiM0MztcdFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcbiYjNDM7XHRcdGlmIChlcnJfY2hrX3ApXG4mIzQzO1x0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuJiM0MztcdFx0cmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChlcnJfY2hrX3ApXG4mIzQzO1x0XHRzY3RwX2NodW5rX2ZyZWUoZXJyX2Noa19wKTtcbiYjNDM7XG4gXHRpZiAoc2VjdXJpdHlfc2N0cF9hc3NvY19yZXF1ZXN0KG5ld19hc29jLCBjaHVuay1cdTAwM2VoZWFkX3NrYiA/OiBjaHVuay1cdTAwM2Vza2IpKSB7XG4gXHRcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XG4gXHRcdHJldHVybiBzY3RwX3NmX3BkaXNjYXJkKG5ldCwgZXAsIGFzb2MsIHR5cGUsIGFyZywgY29tbWFuZHMpO1xuQEAgLTc5OCw3ICYjNDM7ODEyLDYgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHQvKiBUaGlzIGlzIGEgYnJhbmQtbmV3IGFzc29jaWF0aW9uLCBzbyB0aGVzZSBhcmUgbm90IHlldCBzaWRlXG4gXHQgKiBlZmZlY3RzLS1pdCBpcyBzYWZlIHRvIHJ1biB0aGVtIGhlcmUuXG4gXHQgKi9cbi1cdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopKGNodW5rLVx1MDAzZXN1YmguY29va2llX2hkciAmIzQzOyAxKTtcbiBcdGlmICghc2N0cF9wcm9jZXNzX2luaXQobmV3X2Fzb2MsIGNodW5rLFxuIFx0XHRcdCAgICAgICBcdTAwMjZjaHVuay1cdTAwM2VzdWJoLmNvb2tpZV9oZHItXHUwMDNlYy5wZWVyX2FkZHIsXG4gXHRcdFx0ICAgICAgIHBlZXJfaW5pdCwgR0ZQX0FUT01JQykpXG5AQCAtMjIxNSwxMCAmIzQzOzIyMjgsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayhcbiBcdFx0XHRcdFx0dm9pZCAqYXJnLFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcbiB7XG4mIzQzO1x0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XG4mIzQzO1x0c3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0O1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXJnO1xuIFx0ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHJldHZhbDtcbi1cdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3A7XG4mIzQzO1x0ZW51bSBzY3RwX2NpZCBjaWQ7XG4gXHRpbnQgZXJyb3IgPSAwO1xuIFx0Y2hhciBhY3Rpb247XG4gXG5AQCAtMjI4Nyw2ICYjNDM7MjMwMiwyMSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxuIFx0c3dpdGNoIChhY3Rpb24pIHtcbiBcdGNhc2UgJiMzOTtBJiMzOTs6IC8qIEFzc29jaWF0aW9uIHJlc3RhcnQuICovXG4gXHRjYXNlICYjMzk7QiYjMzk7OiAvKiBDb2xsaXNpb24gY2FzZSBCLiAqL1xuJiM0MztcdFx0cGVlcl9pbml0ID0gKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKilcbiYjNDM7XHRcdFx0XHQoY2h1bmstXHUwMDNlc3ViaC5jb29raWVfaGRyICYjNDM7IDEpO1xuJiM0MztcdFx0Y2lkID0gcGVlcl9pbml0LVx1MDAzZWNodW5rX2hkci50eXBlO1xuJiM0MztcdFx0aWYgKCFzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhc2N0cF92ZXJpZnlfaW5pdChuZXQsIGVwLCBhc29jLCBjaWQsIHBlZXJfaW5pdCwgY2h1bmssXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2ZXJyX2Noa19wKSkge1xuJiM0MztcdFx0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuJiM0MztcdFx0XHRpZiAoZXJyX2Noa19wKVxuJiM0MztcdFx0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuJiM0MztcdFx0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsXG4mIzQzO1x0XHRcdFx0XHRcdGNvbW1hbmRzKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChlcnJfY2hrX3ApXG4mIzQzO1x0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlICYjMzk7RCYjMzk7OiAvKiBDb2xsaXNpb24gY2FzZSBELiAqL1xuIFx0XHQvKiBVcGRhdGUgc29ja2V0IHBlZXIgbGFiZWwgaWYgZmlyc3QgYXNzb2NpYXRpb24uICovXG4gXHRcdGlmIChzZWN1cml0eV9zY3RwX2Fzc29jX3JlcXVlc3QoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICopYXNvYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDssCiAgICAmIzM0O1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgICAmIzM0O3NjdHBfdmVyaWZ5X2luaXQmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzFEX2NlJiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGNodW5rIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmb3IgQ09PS0lFIEVDSE8gYW5kIElOSVQgY2h1bmtzLiBJdCBhZGRzIG5ldyBjaGVja3MgdG8gcHJldmVudCBtYWxmb3JtZWQgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGFuZCBhZGRzIHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjZDY4MjVlOThkMWZjNzFkN2U5OWU5ZTg5ZGM2YmEzMTk0MzVkNzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAyMzozMDoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCA0MTk1OGI4ZTU5ZmQ1My4uOGFkYWM5ZTBjZDY2YmUgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTE3NjEsNiAmIzQzOzE3NjEsOCBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF91bnBhY2tfY29va2llKAogCWJlYXJfY29va2llID0gJmFtcDtjb29raWUtJmd0O2M7CiAKIAljaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKShiZWFyX2Nvb2tpZSAmIzQzOyAxKTsKJiM0MzsJaWYgKGNoLSZndDt0eXBlICE9IFNDVFBfQ0lEX0lOSVQpCiYjNDM7CQlnb3RvIG1hbGZvcm1lZDsKIAljaGxlbiA9IG50b2hzKGNoLSZndDtsZW5ndGgpOwogCWlmIChjaGxlbiAmbHQ7IHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSkKIAkJZ290byBtYWxmb3JtZWQ7CkBAIC0yMjk4LDcgJiM0MzsyMzAwLDggQEAgaW50IHNjdHBfdmVyaWZ5X2luaXQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJICogVklPTEFUSU9OIGVycm9yLiAgV2UgYnVpbGQgdGhlIEVSUk9SIGNodW5rIGhlcmUgYW5kIGxldCB0aGUgbm9ybWFsCiAJICogZXJyb3IgaGFuZGxpbmcgY29kZSBidWlsZCBhbmQgc2VuZCB0aGUgcGFja2V0LgogCSAqLwotCWlmIChwYXJhbS52ICE9ICh2b2lkICopY2h1bmstJmd0O2NodW5rX2VuZCkKJiM0MzsJaWYgKHBhcmFtLnYgIT0gKHZvaWQgKilwZWVyX2luaXQgJiM0MzsKJiM0MzsJCSAgICAgICBTQ1RQX1BBRDQobnRvaHMocGVlcl9pbml0LSZndDtjaHVua19oZHIubGVuZ3RoKSkpCiAJCXJldHVybiBzY3RwX3Byb2Nlc3NfaW52X3BhcmFtbGVuZ3RoKGFzb2MsIHBhcmFtLnAsIGNodW5rLCBlcnJwKTsKIAogCS8qIFRoZSBvbmx5IG1pc3NpbmcgbWFuZGF0b3J5IHBhcmFtIHBvc3NpYmxlIHRvZGF5IGlzCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IDhlOTIwY2VmMDg1OGNmLi5kMjNkOTM1ZTEyOGU5NiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKQEAgLTcwNywxMSAmIzQzOzcwNywxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCwKIAkJCQkJIHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKQogewogCXN0cnVjdCBzY3RwX3VscGV2ZW50ICpldiwgKmFpX2V2ID0gTlVMTCwgKmF1dGhfZXYgPSBOVUxMOwomIzQzOwlzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7CiAJc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0OwogCXN0cnVjdCBzY3RwX2NodW5rICpjaHVuayA9IGFyZzsKLQlzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wOwogCXN0cnVjdCBzY3RwX2NodW5rICpyZXBsOwomIzQzOwllbnVtIHNjdHBfY2lkIGNpZDsKIAlzdHJ1Y3Qgc29jayAqc2s7CiAJaW50IGVycm9yID0gMDsKIApAQCAtNzg1LDYgJiM0Mzs3ODYsMTkgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsCiAJCX0KIAl9CiAKJiM0MzsJcGVlcl9pbml0ID0gKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKikoY2h1bmstJmd0O3N1YmguY29va2llX2hkciAmIzQzOyAxKTsKJiM0MzsJY2lkID0gcGVlcl9pbml0LSZndDtjaHVua19oZHIudHlwZTsKJiM0MzsJaWYgKCFzY3RwX3NrKHNrKS0mZ3Q7Y29va2llX2F1dGhfZW5hYmxlICZhbXA7JmFtcDsKJiM0MzsJICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuaywKJiM0MzsJCQkgICAgICAmYW1wO2Vycl9jaGtfcCkpIHsKJiM0MzsJCXNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7CiYjNDM7CQlpZiAoZXJyX2Noa19wKQomIzQzOwkJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwkJcmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7CiYjNDM7CX0KJiM0MzsJaWYgKGVycl9jaGtfcCkKJiM0MzsJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwogCWlmIChzZWN1cml0eV9zY3RwX2Fzc29jX3JlcXVlc3QobmV3X2Fzb2MsIGNodW5rLSZndDtoZWFkX3NrYiA/OiBjaHVuay0mZ3Q7c2tiKSkgewogCQlzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpOwogCQlyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsIGNvbW1hbmRzKTsKQEAgLTc5OCw3ICYjNDM7ODEyLDYgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsCiAJLyogVGhpcyBpcyBhIGJyYW5kLW5ldyBhc3NvY2lhdGlvbiwgc28gdGhlc2UgYXJlIG5vdCB5ZXQgc2lkZQogCSAqIGVmZmVjdHMtLWl0IGlzIHNhZmUgdG8gcnVuIHRoZW0gaGVyZS4KIAkgKi8KLQlwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKShjaHVuay0mZ3Q7c3ViaC5jb29raWVfaGRyICYjNDM7IDEpOwogCWlmICghc2N0cF9wcm9jZXNzX2luaXQobmV3X2Fzb2MsIGNodW5rLAogCQkJICAgICAgICZhbXA7Y2h1bmstJmd0O3N1YmguY29va2llX2hkci0mZ3Q7Yy5wZWVyX2FkZHIsCiAJCQkgICAgICAgcGVlcl9pbml0LCBHRlBfQVRPTUlDKSkKQEAgLTIyMTUsMTAgJiM0MzsyMjI4LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2soCiAJCQkJCXZvaWQgKmFyZywKIAkJCQkJc3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpCiB7CiYjNDM7CXN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3AgPSBOVUxMOwogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpuZXdfYXNvYzsKJiM0MzsJc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0OwogCXN0cnVjdCBzY3RwX2NodW5rICpjaHVuayA9IGFyZzsKIAllbnVtIHNjdHBfZGlzcG9zaXRpb24gcmV0dmFsOwotCXN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3A7CiYjNDM7CWVudW0gc2N0cF9jaWQgY2lkOwogCWludCBlcnJvciA9IDA7CiAJY2hhciBhY3Rpb247CiAKQEAgLTIyODcsNiAmIzQzOzIzMDIsMjEgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vaygKIAlzd2l0Y2ggKGFjdGlvbikgewogCWNhc2UgJiMzOTtBJiMzOTs6IC8qIEFzc29jaWF0aW9uIHJlc3RhcnQuICovCiAJY2FzZSAmIzM5O0ImIzM5OzogLyogQ29sbGlzaW9uIGNhc2UgQi4gKi8KJiM0MzsJCXBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopCiYjNDM7CQkJCShjaHVuay0mZ3Q7c3ViaC5jb29raWVfaGRyICYjNDM7IDEpOwomIzQzOwkJY2lkID0gcGVlcl9pbml0LSZndDtjaHVua19oZHIudHlwZTsKJiM0MzsJCWlmICghc2N0cF9zayhlcC0mZ3Q7YmFzZS5zayktJmd0O2Nvb2tpZV9hdXRoX2VuYWJsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIXNjdHBfdmVyaWZ5X2luaXQobmV0LCBlcCwgYXNvYywgY2lkLCBwZWVyX2luaXQsIGNodW5rLAomIzQzOwkJCQkgICAgICAmYW1wO2Vycl9jaGtfcCkpIHsKJiM0MzsJCQlzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpOwomIzQzOwkJCWlmIChlcnJfY2hrX3ApCiYjNDM7CQkJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwkJCXJldHVybiBzY3RwX3NmX3BkaXNjYXJkKG5ldCwgZXAsIGFzb2MsIHR5cGUsIGFyZywKJiM0MzsJCQkJCQljb21tYW5kcyk7CiYjNDM7CQl9CiYjNDM7CQlpZiAoZXJyX2Noa19wKQomIzQzOwkJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwkJZmFsbHRocm91Z2g7CiAJY2FzZSAmIzM5O0QmIzM5OzogLyogQ29sbGlzaW9uIGNhc2UgRC4gKi8KIAkJLyogVXBkYXRlIHNvY2tldCBwZWVyIGxhYmVsIGlmIGZpcnN0IGFzc29jaWF0aW9uLiAqLwogCQlpZiAoc2VjdXJpdHlfc2N0cF9hc3NvY19yZXF1ZXN0KChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqKWFzb2MsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFNDVFAgUGF0Y2ggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gdGhlIFNDVFAgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYCBhbmQgYG5ldC9zY3RwL3NtX3N0YXRlZnVucy5jYC4gVGhlIGNoYW5nZXMgc2VlbSB0byBjZW50ZXIgYXJvdW5kIGBzY3RwX3ZlcmlmeV9pbml0YCBhbmQgYSBjaGVjayBmb3IgYGNoLSZndDt0eXBlICE9IFNDVFBfQ0lEX0lOSVRgLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhpcyBzY3JlYW1zIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldCB0byBtZS4gSXQmIzM5O3MgdG91Y2hpbmcgY29yZSBTQ1RQIGZ1bmN0aW9uYWxpdHksIHNvIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIHRoZXJlIGNvdWxkIGJlIGludGVyZXN0aW5nLgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gTG9va3MgbGlrZSBpbiBgc21fbWFrZV9jaHVuay5jYCwgaXQmIzM5O3MgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgYW5kIGBzY3RwX3ZlcmlmeV9pbml0YC4gVGhlbiwgaW4gYHNtX3N0YXRlZnVucy5jYCwgdGhlIHBhdGNoIGFmZmVjdHMgYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgLiBUaGF0JiMzOTtzIGEgc29saWQgbGlzdCB0byBrZWVwIGluIG1pbmQuCgpUbyBtYWtlIHN1cmUgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGNvZGUsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MuIEkgYWxyZWFkeSBrbm93IHRoYXQgYElQX1NDVFBgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24gZm9yIFNDVFAsIGJ1dCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBleGFjdCBLY29uZmlnIG5hbWUgdG8gdXNlIGZvciBidWlsZGluZyB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGRvdWJsZS1jaGVjayB0byBuYWlsIGRvd24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBmb3IgdGhlIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0NUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgYElQX1NDVFBgIENvbmZpZ3VyYXRpb24gYW5kIFJlbGF0ZWQgQ29kZSoqCgpSaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBwb2ludCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGlzIGBJUF9TQ1RQYC4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgcGllY2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2V0dGluZ3MgdGhhdCBtaWdodCBiZSBkZXBlbmRlbnQgb24gaXQsIHdoaWNoIGNvdWxkIGFmZmVjdCBpdHMgYmVoYXZpb3Igb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay4KCkkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24sIGFuZCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlIG1haW4gbG9naWMgb2Z0ZW4gcmVzaWRlcyBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYCBhbmQgYG5ldC9zY3RwL3NtX3N0YXRlZnVucy5jYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBwb2tpbmcgYXJvdW5kLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgdmVyeSBjbG9zZWx5LCBiZWNhdXNlIHRoZSBjb2RlIG1pZ2h0IG5vdCBiZSBvYnZpb3VzbHkgaW1wYWN0ZWQgYnkgdGhlIGNvbmZpZy4KCk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGAjaWZkZWZgIGRpcmVjdGl2ZXMgYXJvdW5kIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdC4gSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGV4dGVudCBvZiBpdHMgaW5mbHVlbmNlIGFuZCBob3cgdGhlIGNvZGUgY2hhbmdlcyBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24uIEFueSB1c2Ugb2YgYCNpZmRlZiBJUF9TQ1RQYCBpcyB3aGF0IEkmIzM5O20gZm9jdXNlZCBvbiwgYW5kIGlmIGl0JiMzOTtzIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gdGVsbCBob3cgaXQgaXMgaW1wYWN0ZWQgYW5kIGlmIGl0JiMzOTtzIHRoZSBvbmx5IGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX3NmX2RvXzVfMURfY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NjM5PXN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNzAxLSAqL1xubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NzAyOmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNzAzLVx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYz02NT1jb25zdCBzdHJ1Y3Qgc2N0cF9zbV90YWJsZV9lbnRyeSAqc2N0cF9zbV9sb29rdXBfZXZlbnQoXG4tLVxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTI4My1cdC8qIFNDVFBfU1RBVEVfQ0xPU0VEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6Mjg0Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9kb181XzFEX2NlKSwgXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy0yODUtXHQvKiBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUICovIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU0NUUCBDb3JlIEZ1bmN0aW9ucyBmb3IgRm9jdXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlc2Ugc3BlY2lmaWMgU0NUUCBmdW5jdGlvbnM6IGBzY3RwX3VucGFja19jb29raWVgLCBgc2N0cF92ZXJpZnlfaW5pdGAsIGBzY3RwX3NmX2RvXzVfMURfY2VgLCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AuIFdlIGtub3cgdGhlc2UgYXJlIGRlZXAgaW5zaWRlIHRoZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIGNydWNpYWwgZm9yIGNodW5rIHByb2Nlc3NpbmcuIFRoZXnigJlyZSBhY3RpdmF0ZWQgd2hlbiBTQ1RQIGlzIGVuYWJsZWQsIGFzIHdlJiMzOTtkIGV4cGVjdCwgY29udHJvbGxlZCBieSBgQ09ORklHX0lQX1NDVFBgLgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgc2N0cF9zZl9kb181XzFEX2NlYCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AgYXJlIHRydWx5ICYjMzQ7aG90IHBhdGgmIzM0OyBmdW5jdGlvbnMuIFRoZXkgaGFuZGxlIENPT0tJRSBFQ0hPIGFuZCBkdXBsaWNhdGUgQ09PS0lFIEVDSE8gY2h1bmtzIHJlc3BlY3RpdmVseS4gVGhlc2UgYXJlIHByaW1hcmlseSBpbnZvbHZlZCBkdXJpbmcgdGhlIGluaXRpYWwgYXNzb2NpYXRpb24gc2V0dXAsIHRoYXQgaGFuZHNoYWtlIHByb2Nlc3MsIHNvIHRoZXkmIzM5O3JlIG5vdCBnb2luZyB0byBiZSBoYW5kbGluZyBldmVyeSBkYXRhIHBhY2tldCBsaWtlIHlvdXIgc3RhbmRhcmQgZGF0YSBjaHVuayBwcm9jZXNzaW5nIHdvdWxkLiBTdGlsbCwgdGhleSBhcmUgcmVsYXRpdmVseSBjb21tb24gZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYW5kIHRoZXnigJlyZSBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBnb29kIGZvY3VzIHN5bWJvbHMuIFNvIHRoYXQmIzM5O3MgdGhlIGFuZ2xlIEkmIzM5O20gdGFraW5nLiBUaGUgb3RoZXIgdHdvLCBgc2N0cF91bnBhY2tfY29va2llYCBhbmQgYHNjdHBfdmVyaWZ5X2luaXRgLCBhbHNvIHNlZW0gbGlrZSBzb2xpZCB0YXJnZXRzIGZvciBpbi1kZXB0aCBleGFtaW5hdGlvbi4KCk5vdywgbGV0JiMzOTtzIGRpZyBhIGJpdCBkZWVwZXIgaW50byB0aGUgY29uZmlndXJhdGlvbiBzaWRlLiBJIHNlZSBhIGNoZWNrIHJlbGF0ZWQgdG8gYGNvb2tpZV9hdXRoX2VuYWJsZWAgaW4gdGhlIHBhdGNoOiBgIXNjdHBfc2soc2spLSZndDtjb29raWVfYXV0aF9lbmFibGVgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0JiMzOTtzIGxpbmtlZCB0byB0aGlzLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBjb250cm9sbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nvb2tpZV9hdXRoX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9wcm90b2NvbC5jPTEyODg9c3RhdGljIGludCBfX25ldF9pbml0IHNjdHBfZGVmYXVsdHNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzEzLVx0LyogV2hldGhlciBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZW5hYmxlZCgxKSBvciBub3QoMCkgKi9cbm5ldC9zY3RwL3Byb3RvY29sLmM6MTMxNDpcdG5ldC1cdTAwM2VzY3RwLmNvb2tpZV9hdXRoX2VuYWJsZSA9XG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzMTUtXHRcdCFJU19FTkFCTEVEKENPTkZJR19TQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORSk7XG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTE2NDU9c3RhdGljIHN0cnVjdCBzY3RwX2Nvb2tpZV9wYXJhbSAqc2N0cF9wYWNrX2Nvb2tpZShcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcxMS1cdC8qIFNpZ24gdGhlIGNvb2tpZSwgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MTcxMjpcdGlmIChzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSkge1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTE3MTMtXHRcdHN0YXRpY19hc3NlcnQoc2l6ZW9mKGNvb2tpZS1cdTAwM2VtYWMpID09IFNIQTI1Nl9ESUdFU1RfU0laRSk7XG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTE3MjI9c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTc3NC1cdC8qIFZlcmlmeSB0aGUgY29va2llJiMzOTtzIE1BQywgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MTc3NTpcdGlmIChzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSkge1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTE3NzYtXHRcdHU4IG1hY1tTSEEyNTZfRElHRVNUX1NJWkVdO1xuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTcwMj1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy03OTAtXHRjaWQgPSBwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLnR5cGU7XG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo3OTE6XHRpZiAoIXNjdHBfc2soc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTc5Mi1cdCAgICAhc2N0cF92ZXJpZnlfaW5pdChuZXQsIGVwLCBhc29jLCBjaWQsIHBlZXJfaW5pdCwgY2h1bmssXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MjIyMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIzMDctXHRcdGNpZCA9IHBlZXJfaW5pdC1cdTAwM2VjaHVua19oZHIudHlwZTtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIzMDg6XHRcdGlmICghc2N0cF9zayhlcC1cdTAwM2ViYXNlLnNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXHUwMDI2XHUwMDI2XG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMzA5LVx0XHQgICAgIXNjdHBfdmVyaWZ5X2luaXQobmV0LCBlcCwgYXNvYywgY2lkLCBwZWVyX2luaXQsIGNodW5rLFxuLS1cbm5ldC9zY3RwL3NvY2tldC5jPTUwMjA9c3RhdGljIGludCBzY3RwX2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3NjdHAvc29ja2V0LmMtNTA1NC1cbm5ldC9zY3RwL3NvY2tldC5jOjUwNTU6XHRzcC1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgPSBuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGU7XG5uZXQvc2N0cC9zb2NrZXQuYy01MDU2LVxuLS1cbm5ldC9zY3RwL3N5c2N0bC5jPTk1PXN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHNjdHBfbmV0X3RhYmxlW10gPSB7XG4tLVxubmV0L3NjdHAvc3lzY3RsLmMtMTc2LVx0XHQucHJvY25hbWVcdD0gXCYjMzQ7Y29va2llX2htYWNfYWxnXCYjMzQ7LFxubmV0L3NjdHAvc3lzY3RsLmM6MTc3Olx0XHQuZGF0YVx0XHQ9IFx1MDAyNmluaXRfbmV0LnNjdHAuY29va2llX2F1dGhfZW5hYmxlLFxubmV0L3NjdHAvc3lzY3RsLmMtMTc4LVx0XHQubWF4bGVuXHRcdD0gOCxcbi0tXG5uZXQvc2N0cC9zeXNjdGwuYz0zODc9c3RhdGljIGludCBwcm9jX3NjdHBfZG9faG1hY19hbGcoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqY3RsLCBpbnQgd3JpdGUsXG4tLVxubmV0L3NjdHAvc3lzY3RsLmMtMzkwLVx0c3RydWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKGN0bC1cdTAwM2VkYXRhLCBzdHJ1Y3QgbmV0LFxubmV0L3NjdHAvc3lzY3RsLmM6MzkxOlx0XHRcdFx0ICAgICAgIHNjdHAuY29va2llX2F1dGhfZW5hYmxlKTtcbm5ldC9zY3RwL3N5c2N0bC5jLTM5Mi1cdHN0cnVjdCBjdGxfdGFibGUgdGJsO1xuLS1cbm5ldC9zY3RwL3N5c2N0bC5jLTQwNC1cdFx0aWYgKCFzdHJjbXAodG1wLCBcJiMzNDtzaGEyNTZcJiMzNDspKSB7XG5uZXQvc2N0cC9zeXNjdGwuYzo0MDU6XHRcdFx0bmV0LVx1MDAzZXNjdHAuY29va2llX2F1dGhfZW5hYmxlID0gMTtcbm5ldC9zY3RwL3N5c2N0bC5jLTQwNi1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvc2N0cC9zeXNjdGwuYy00MDgtXHRcdGlmICghc3RyY21wKHRtcCwgXCYjMzQ7bm9uZVwmIzM0OykpIHtcbm5ldC9zY3RwL3N5c2N0bC5jOjQwOTpcdFx0XHRuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPSAwO1xubmV0L3NjdHAvc3lzY3RsLmMtNDEwLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9zY3RwL3N5c2N0bC5jLTQxMy1cdH1cbm5ldC9zY3RwL3N5c2N0bC5jOjQxNDpcdGlmIChuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUpXG5uZXQvc2N0cC9zeXNjdGwuYy00MTUtXHRcdHRibC5kYXRhID0gKGNoYXIgKilcJiMzNDtzaGEyNTZcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBjb29raWVfYXV0aF9lbmFibGVgIExvZ2ljKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgdGhlIGBjb29raWVfYXV0aF9lbmFibGVgIGZsYWcgaXMgdGhlIGtleSB2YXJpYWJsZSBoZXJlLiBBbmQgaXQmIzM5O3MgZGlyZWN0bHkgdGllZCB0byBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYC4gSWYgKnRoYXQqIGlzICpub3QqIGVuYWJsZWQsIGBjb29raWVfYXV0aF9lbmFibGVgIGlzIHNldCB0byAxLiBHb3QgaXQuIE5vdywgdGhlIHBhdGNoIGZvY3VzZXMgb24gY2FzZXMgd2hlcmUgd2UgaGF2ZSBgIXNjdHBfc2soc2spLSZndDtjb29raWVfYXV0aF9lbmFibGVgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCEKClNvLCB0byBhY3R1YWxseSB0cmlnZ2VyIHRoZSBuZXcgbG9naWMgaW4gYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgLCB3ZSBuZWVkIGBjb29raWVfYXV0aF9lbmFibGVgIHRvIGJlIDAuIFRoYXQmIzM5O3MgdGhlIGNvbmRpdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNoZWNrZWQuIFRoaXMgaW1wbGllcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCAqaXMqIGVuYWJsZWQgZHVyaW5nIHRoZSBidWlsZC4gQWx0ZXJuYXRpdmVseSwgaXQgY2FuIGJlIGFkanVzdGVkIHZpYSBzeXNjdGwsIHdoaWNoIGlzIGxlc3MgaWRlYWwgZm9yIG91ciBwdXJwb3Nlcy4KClJpZ2h0LCBzbyB0byBjb25maXJtIHRoaXMsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCBpcyB0aGUgY29ycmVjdCBuYW1lLiBKdXN0IHRvIG1ha2Ugc3VyZSBteSByZWFzb25pbmcgaXMgc3BvdCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZz02Mj1jb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxuLS1cbm5ldC9zY3RwL0tjb25maWctNjQtXG5uZXQvc2N0cC9LY29uZmlnOjY1OmNvbmZpZyBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVxubmV0L3NjdHAvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbm5ldC9zY3RwL3Byb3RvY29sLmM9MTI4OD1zdGF0aWMgaW50IF9fbmV0X2luaXQgc2N0cF9kZWZhdWx0c19pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzMTQtXHRuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPVxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMzE1Olx0XHQhSVNfRU5BQkxFRChDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUpO1xubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzE2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTM3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV3IFNDVFAgUGF0Y2ggZm9yIFRob3JvdWdoIFRlc3RpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBTQ1RQIHBhdGNoLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3RhcnRpbmcgdG8gbWFrZSBtb3JlIHNlbnNlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCB3YXMgdGhlIGtleSwgYnV0IG5vdyBJIHNlZSBpdCYjMzk7cyBtb3JlIG51YW5jZWQuIElmIHdlIGVuYWJsZSBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgLCBgY29va2llX2F1dGhfZW5hYmxlYCBkZWZhdWx0cyB0byAwLCB3aGljaCBtZWFucyB0aGUgbmV3IGBzY3RwX3ZlcmlmeV9pbml0YCBjaGVja3MgYWN0dWFsbHkgKnJ1biouICBJZiBgY29va2llX2F1dGhfZW5hYmxlYCBpcyBzZXQgdG8gMSwgdGhvc2UgY2hlY2tzIGdldCBza2lwcGVkLiBTbywgd2hpbGUgc2V0dGluZyBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIGlzIGJlbmVmaWNpYWwgZm9yIGVuc3VyaW5nIHdlIGhpdCB0aGUgcGF0aCwgbGV0dGluZyBzeXprYWxsZXIgc2V0IHRoZSBzeXNjdGwgaXMgYWxzbyBhIHZpYWJsZSBhcHByb2FjaCwgYnV0IHByb3ZpZGluZyB0aGUgY29uZmlnIGlzIGRlZmluaXRlbHkgdGhlIHNhZmVyIG9wdGlvbi4KCkkgcXVpY2tseSByZWFsaXplZCB0aGUgbW9yZSBjZW50cmFsIGNvbmZpZyBpcyBgSVBfU0NUUGAuIEdvaW5nIGRlZXBlciwgSSBuZWVkIHRvIGNoZWNrIGBzY3RwX3ZlcmlmeV9pbml0YCBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gVGhlIHBhdGNoIGNoYW5nZXMgdGhhdCBjb2RlLCBhbmQgaXQgYXBwZWFycyB0aGUgY2hhbmdlcyBhcmUgKmFsd2F5cyogZXhlY3V0ZWQgcmVnYXJkbGVzcyBvZiBgY29va2llX2F1dGhfZW5hYmxlYCYjMzk7cyB2YWx1ZS4gU2FtZSBzdG9yeSB3aXRoIGBzY3RwX3VucGFja19jb29raWVgLiBUaGUgYWRkaXRpb25hbCBjaGVjayB3aXRoaW4gYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaXMgcmVhY2hlZCByZWdhcmRsZXNzIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBzZXR0aW5nLiBUaGF0IG1lYW5zIHRoZSBwYXRjaCBoYXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYXJlIHJlYWNoYWJsZSwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgd2FudGVkIHRvIGNvbmZpcm0uCgpTbywgdGhlIGNyaXRpY2FsIGNvbmZpZyB0byBlbmFibGUgZm9yIHRlc3RpbmcgaXMgYElQX1NDVFBgLCBubyBxdWVzdGlvbi4gVGhlbiwgYWRkaW5nIGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAgd2lsbCBndWFyYW50ZWUgdGhhdCB3ZSByZWFjaCB0aGUgbmV3IGNvZGUgaW4gYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgLgoKVGhlcmVmb3JlLCBJIHRoaW5rIHRoZSBmb2N1cyBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlOgoKKiAgIGBzY3RwX3VucGFja19jb29raWVgCiogICBgc2N0cF92ZXJpZnlfaW5pdGAKKiAgIGBzY3RwX3NmX2RvXzVfMURfY2VgCiogICBgc2N0cF9zZl9kb181XzJfNF9kdXBjb29rYAoKVGhlc2UgbG9vayBnb29kIHRvIG1lLiBUaGV5JiMzOTtyZSBub3QgdGhlIHN1cGVyIGhvdCBkYXRhIHRyYW5zbWlzc2lvbiBwYXRocywgd2hpY2ggaXMgZmluZSwgYXMgdGhleSBjb25jZXJuIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgY2h1bmsgdmFsaWRhdGlvbi4gSSBhbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudCwgYnV0IHdpbGwgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNDVFAgQ29va2llIEhNQUMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYElQX1NDVFBgIGFuZCBzcGVjaWZpY2FsbHkgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQgc2hvdWxkIGRpc2FibGUgSE1BQyBmb3IgY29va2llcyBieSBkZWZhdWx0LCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIGJlaGF2aW9yIEkmIzM5O20gdHJ5aW5nIHRvIGFjaGlldmUgdG8gdHJpZ2dlciB0aGUgYCFzY3RwX3NrKHNrKS0mZ3Q7Y29va2llX2F1dGhfZW5hYmxlYCBjb2RlIHBhdGguIE5vdywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIFRoZXJlZm9yZSwgSSB3aWxsIGNoZWNrIHRoZSBgbmV0L3NjdHAvS2NvbmZpZ2AgZmlsZS4gVGhpcyBzaG91bGQgY29udGFpbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE5cbiAgNTE6XHRcbiAgNTI6XHRjaG9pY2VcbiAgNTM6XHRcdHByb21wdCBcJiMzNDtEZWZhdWx0IFNDVFAgY29va2llIGF1dGhlbnRpY2F0aW9uIG1ldGhvZFwmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfU0hBMjU2XG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIFRoaXMgb3B0aW9uIHNldHMgdGhlIGRlZmF1bHQgU0NUUCBjb29raWUgYXV0aGVudGljYXRpb24gbWV0aG9kLCBmb3JcbiAgNTc6XHRcdCAgd2hlbiBhIG1ldGhvZCBoYXNuJiMzOTt0IGJlZW4gZXhwbGljaXRseSBzZWxlY3RlZCB2aWEgdGhlXG4gIDU4Olx0XHQgIG5ldC5zY3RwLmNvb2tpZV9obWFjX2FsZyBzeXNjdGwuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgY2hvb3NlIHRoZSBkZWZhdWx0IChITUFDLVNIQTI1NikuXG4gIDYxOlx0XG4gIDYyOlx0Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcbiAgNjM6XHRcdGJvb2wgXCYjMzQ7SE1BQy1TSEEyNTZcJiMzNDtcbiAgNjQ6XHRcbiAgNjU6XHRjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcbiAgNjY6XHRcdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuICA2NzpcdFxuICA2ODpcdGVuZGNob2ljZVxuICA2OTpcdFxuICA3MDpcdGNvbmZpZyBJTkVUX1NDVFBfRElBR1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcbiAgNzI6XHRcdGRlZl90cmlzdGF0ZSBJTkVUX0RJQUdcbiAgNzM6XHRcbiAgNzQ6XHRcbiAgNzU6XHRlbmRpZiAjIElQX1NDVFBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMzOAoJCQkJCQkJb3V0cHV0OiAxNjcKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgICppcyogYSBsZWdpdGltYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQmIzM5O3Mgc2VlLCB0aGUgcmVsZXZhbnQgY29uZmlncyBhcmUgYElQX1NDVFBgIGFuZCBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgLgoKVGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGhlYXJ0IG9mIFNDVFAgY2h1bmsgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24uIFdlJiMzOTtyZSBzcGVjaWZpY2FsbHkgdGFsa2luZyBhYm91dCBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MsIHdoaWNoIGFyZSBjcml0aWNhbCBjb21wb25lbnRzIG9mIGFzc29jaWF0aW9uIGVzdGFibGlzaG1lbnQuIFRoZSBjaGFuZ2VzIGludm9sdmUgYWRkaW5nIHNhZmVndWFyZHMgYWdhaW5zdCBtYWxmb3JtZWQgY2h1bmtzIOKAkyBlbnN1cmluZyB0aGF0IHRoZSBzdGF0ZSBtYWNoaW5lIGRvZXNuJiMzOTt0IGdldCB0cmlwcGVkIHVwIGJ5IGdhcmJhZ2UgZGF0YSDigJMgYW5kIGltcGxlbWVudGluZyBuZXcgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyB0aGUgZXN0YWJsaXNobWVudCBwcm9jZXNzLgoKRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBpcyBiZWluZyB0d2Vha2VkLiBUaGlzIGlzIGEgcmVkIGZsYWcgdGhhdCBkZW1hbmRzIHJpZ29yb3VzIGZ1enppbmchIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IsIGV2ZW4gd29yc2UsIGNyZWF0ZSBuZXcgdnVsbmVyYWJpbGl0aWVzIGJ5IG1pcy1oYW5kbGluZyBzb21lIG9mIHRoZXNlIGVkZ2UgY2FzZXMuIFdlIG5lZWQgdG8gaGl0IHRoaXMgd2l0aCBldmVyeXRoaW5nIHdlJiMzOTt2ZSBnb3QuIExldCYjMzk7cyB1c2UgYHNldC1yZXN1bHRzYCB0byBrZWVwIHRyYWNrIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDssCiAgICAmIzM0O1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgICAmIzM0O3NjdHBfdmVyaWZ5X2luaXQmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzFEX2NlJiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGNodW5rIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmb3IgQ09PS0lFIEVDSE8gYW5kIElOSVQgY2h1bmtzLiBJdCBhZGRzIG5ldyBjaGVja3MgdG8gcHJldmVudCBtYWxmb3JtZWQgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGFuZCBhZGRzIHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7U0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF92ZXJpZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvXzVfMURfY2UmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzJfNF9kdXBjb29rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjI0Ljc4MDgwMjEwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjY2NzYyNTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIlNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF91bnBhY2tfY29va2llXCIsXG4gICAgXCJzY3RwX3ZlcmlmeV9pbml0XCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgICBcInNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6MjQuNzgwODA2NDQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODI3MDM3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhY2Q2ODI1ZTk4ZDFmYzcxZDdlOTllOWU4OWRjNmJhMzE5NDM1ZDc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDIzOjMwOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbmluZGV4IDQxOTU4YjhlNTlmZDUzLi44YWRhYzllMGNkNjZiZSAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcXG4rKysgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcXG5AQCAtMTc2MSw2ICsxNzYxLDggQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcXG4gXFx0YmVhcl9jb29raWUgPSBcXHUwMDI2Y29va2llLVxcdTAwM2VjO1xcbiBcXG4gXFx0Y2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKikoYmVhcl9jb29raWUgKyAxKTtcXG4rXFx0aWYgKGNoLVxcdTAwM2V0eXBlICE9IFNDVFBfQ0lEX0lOSVQpXFxuK1xcdFxcdGdvdG8gbWFsZm9ybWVkO1xcbiBcXHRjaGxlbiA9IG50b2hzKGNoLVxcdTAwM2VsZW5ndGgpO1xcbiBcXHRpZiAoY2hsZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpXFxuIFxcdFxcdGdvdG8gbWFsZm9ybWVkO1xcbkBAIC0yMjk4LDcgKzIzMDAsOCBAQCBpbnQgc2N0cF92ZXJpZnlfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcXG4gXFx0ICogVklPTEFUSU9OIGVycm9yLiAgV2UgYnVpbGQgdGhlIEVSUk9SIGNodW5rIGhlcmUgYW5kIGxldCB0aGUgbm9ybWFsXFxuIFxcdCAqIGVycm9yIGhhbmRsaW5nIGNvZGUgYnVpbGQgYW5kIHNlbmQgdGhlIHBhY2tldC5cXG4gXFx0ICovXFxuLVxcdGlmIChwYXJhbS52ICE9ICh2b2lkICopY2h1bmstXFx1MDAzZWNodW5rX2VuZClcXG4rXFx0aWYgKHBhcmFtLnYgIT0gKHZvaWQgKilwZWVyX2luaXQgK1xcbitcXHRcXHQgICAgICAgU0NUUF9QQUQ0KG50b2hzKHBlZXJfaW5pdC1cXHUwMDNlY2h1bmtfaGRyLmxlbmd0aCkpKVxcbiBcXHRcXHRyZXR1cm4gc2N0cF9wcm9jZXNzX2ludl9wYXJhbWxlbmd0aChhc29jLCBwYXJhbS5wLCBjaHVuaywgZXJycCk7XFxuIFxcbiBcXHQvKiBUaGUgb25seSBtaXNzaW5nIG1hbmRhdG9yeSBwYXJhbSBwb3NzaWJsZSB0b2RheSBpc1xcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuaW5kZXggOGU5MjBjZWYwODU4Y2YuLmQyM2Q5MzVlMTI4ZTk2IDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcXG5AQCAtNzA3LDExICs3MDcsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2N0cF91bHBldmVudCAqZXYsICphaV9ldiA9IE5VTEwsICphdXRoX2V2ID0gTlVMTDtcXG4rXFx0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XFxuIFxcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpuZXdfYXNvYztcXG4gXFx0c3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0O1xcbiBcXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhcmc7XFxuLVxcdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3A7XFxuIFxcdHN0cnVjdCBzY3RwX2NodW5rICpyZXBsO1xcbitcXHRlbnVtIHNjdHBfY2lkIGNpZDtcXG4gXFx0c3RydWN0IHNvY2sgKnNrO1xcbiBcXHRpbnQgZXJyb3IgPSAwO1xcbiBcXG5AQCAtNzg1LDYgKzc4NiwxOSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKShjaHVuay1cXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XFxuK1xcdGNpZCA9IHBlZXJfaW5pdC1cXHUwMDNlY2h1bmtfaGRyLnR5cGU7XFxuK1xcdGlmICghc2N0cF9zayhzayktXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXNjdHBfdmVyaWZ5X2luaXQobmV0LCBlcCwgYXNvYywgY2lkLCBwZWVyX2luaXQsIGNodW5rLFxcbitcXHRcXHRcXHQgICAgICBcXHUwMDI2ZXJyX2Noa19wKSkge1xcbitcXHRcXHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xcbitcXHRcXHRpZiAoZXJyX2Noa19wKVxcbitcXHRcXHRcXHRzY3RwX2NodW5rX2ZyZWUoZXJyX2Noa19wKTtcXG4rXFx0XFx0cmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7XFxuK1xcdH1cXG4rXFx0aWYgKGVycl9jaGtfcClcXG4rXFx0XFx0c2N0cF9jaHVua19mcmVlKGVycl9jaGtfcCk7XFxuK1xcbiBcXHRpZiAoc2VjdXJpdHlfc2N0cF9hc3NvY19yZXF1ZXN0KG5ld19hc29jLCBjaHVuay1cXHUwMDNlaGVhZF9za2IgPzogY2h1bmstXFx1MDAzZXNrYikpIHtcXG4gXFx0XFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcXG4gXFx0XFx0cmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7XFxuQEAgLTc5OCw3ICs4MTIsNiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0LyogVGhpcyBpcyBhIGJyYW5kLW5ldyBhc3NvY2lhdGlvbiwgc28gdGhlc2UgYXJlIG5vdCB5ZXQgc2lkZVxcbiBcXHQgKiBlZmZlY3RzLS1pdCBpcyBzYWZlIHRvIHJ1biB0aGVtIGhlcmUuXFxuIFxcdCAqL1xcbi1cXHRwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKShjaHVuay1cXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XFxuIFxcdGlmICghc2N0cF9wcm9jZXNzX2luaXQobmV3X2Fzb2MsIGNodW5rLFxcbiBcXHRcXHRcXHQgICAgICAgXFx1MDAyNmNodW5rLVxcdTAwM2VzdWJoLmNvb2tpZV9oZHItXFx1MDAzZWMucGVlcl9hZGRyLFxcbiBcXHRcXHRcXHQgICAgICAgcGVlcl9pbml0LCBHRlBfQVRPTUlDKSlcXG5AQCAtMjIxNSwxMCArMjIyOCwxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxcbiBcXHRcXHRcXHRcXHRcXHR2b2lkICphcmcsXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxcbiB7XFxuK1xcdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3AgPSBOVUxMO1xcbiBcXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XFxuK1xcdHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKnBlZXJfaW5pdDtcXG4gXFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXJnO1xcbiBcXHRlbnVtIHNjdHBfZGlzcG9zaXRpb24gcmV0dmFsO1xcbi1cXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wO1xcbitcXHRlbnVtIHNjdHBfY2lkIGNpZDtcXG4gXFx0aW50IGVycm9yID0gMDtcXG4gXFx0Y2hhciBhY3Rpb247XFxuIFxcbkBAIC0yMjg3LDYgKzIzMDIsMjEgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayhcXG4gXFx0c3dpdGNoIChhY3Rpb24pIHtcXG4gXFx0Y2FzZSAnQSc6IC8qIEFzc29jaWF0aW9uIHJlc3RhcnQuICovXFxuIFxcdGNhc2UgJ0InOiAvKiBDb2xsaXNpb24gY2FzZSBCLiAqL1xcbitcXHRcXHRwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKVxcbitcXHRcXHRcXHRcXHQoY2h1bmstXFx1MDAzZXN1YmguY29va2llX2hkciArIDEpO1xcbitcXHRcXHRjaWQgPSBwZWVyX2luaXQtXFx1MDAzZWNodW5rX2hkci50eXBlO1xcbitcXHRcXHRpZiAoIXNjdHBfc2soZXAtXFx1MDAzZWJhc2Uuc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmVycl9jaGtfcCkpIHtcXG4rXFx0XFx0XFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcXG4rXFx0XFx0XFx0aWYgKGVycl9jaGtfcClcXG4rXFx0XFx0XFx0XFx0c2N0cF9jaHVua19mcmVlKGVycl9jaGtfcCk7XFxuK1xcdFxcdFxcdHJldHVybiBzY3RwX3NmX3BkaXNjYXJkKG5ldCwgZXAsIGFzb2MsIHR5cGUsIGFyZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0Y29tbWFuZHMpO1xcbitcXHRcXHR9XFxuK1xcdFxcdGlmIChlcnJfY2hrX3ApXFxuK1xcdFxcdFxcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0Y2FzZSAnRCc6IC8qIENvbGxpc2lvbiBjYXNlIEQuICovXFxuIFxcdFxcdC8qIFVwZGF0ZSBzb2NrZXQgcGVlciBsYWJlbCBpZiBmaXJzdCBhc3NvY2lhdGlvbi4gKi9cXG4gXFx0XFx0aWYgKHNlY3VyaXR5X3NjdHBfYXNzb2NfcmVxdWVzdCgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDoyNS4xNjQyNzc1NTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjgzMjc3NjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIlNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF91bnBhY2tfY29va2llXCIsXG4gICAgXCJzY3RwX3ZlcmlmeV9pbml0XCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgICBcInNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhY2Q2ODI1ZTk4ZDFmYzcxZDdlOTllOWU4OWRjNmJhMzE5NDM1ZDc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMjM6MzA6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDQxOTU4YjhlNTlmZDUzLi44YWRhYzllMGNkNjZiZSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMTc2MSw2ICsxNzYxLDggQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcbiBcdGJlYXJfY29va2llID0gXHUwMDI2Y29va2llLVx1MDAzZWM7XG4gXG4gXHRjaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKShiZWFyX2Nvb2tpZSArIDEpO1xuK1x0aWYgKGNoLVx1MDAzZXR5cGUgIT0gU0NUUF9DSURfSU5JVClcbitcdFx0Z290byBtYWxmb3JtZWQ7XG4gXHRjaGxlbiA9IG50b2hzKGNoLVx1MDAzZWxlbmd0aCk7XG4gXHRpZiAoY2hsZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSlcbiBcdFx0Z290byBtYWxmb3JtZWQ7XG5AQCAtMjI5OCw3ICsyMzAwLDggQEAgaW50IHNjdHBfdmVyaWZ5X2luaXQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4gXHQgKiBWSU9MQVRJT04gZXJyb3IuICBXZSBidWlsZCB0aGUgRVJST1IgY2h1bmsgaGVyZSBhbmQgbGV0IHRoZSBub3JtYWxcbiBcdCAqIGVycm9yIGhhbmRsaW5nIGNvZGUgYnVpbGQgYW5kIHNlbmQgdGhlIHBhY2tldC5cbiBcdCAqL1xuLVx0aWYgKHBhcmFtLnYgIT0gKHZvaWQgKiljaHVuay1cdTAwM2VjaHVua19lbmQpXG4rXHRpZiAocGFyYW0udiAhPSAodm9pZCAqKXBlZXJfaW5pdCArXG4rXHRcdCAgICAgICBTQ1RQX1BBRDQobnRvaHMocGVlcl9pbml0LVx1MDAzZWNodW5rX2hkci5sZW5ndGgpKSlcbiBcdFx0cmV0dXJuIHNjdHBfcHJvY2Vzc19pbnZfcGFyYW1sZW5ndGgoYXNvYywgcGFyYW0ucCwgY2h1bmssIGVycnApO1xuIFxuIFx0LyogVGhlIG9ubHkgbWlzc2luZyBtYW5kYXRvcnkgcGFyYW0gcG9zc2libGUgdG9kYXkgaXNcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA4ZTkyMGNlZjA4NThjZi4uZDIzZDkzNWUxMjhlOTYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbkBAIC03MDcsMTEgKzcwNywxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHRcdFx0IHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3VscGV2ZW50ICpldiwgKmFpX2V2ID0gTlVMTCwgKmF1dGhfZXYgPSBOVUxMO1xuK1x0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XG4gXHRzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpwZWVyX2luaXQ7XG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhcmc7XG4tXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wO1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKnJlcGw7XG4rXHRlbnVtIHNjdHBfY2lkIGNpZDtcbiBcdHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBlcnJvciA9IDA7XG4gXG5AQCAtNzg1LDYgKzc4NiwxOSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0fVxuIFx0fVxuIFxuK1x0cGVlcl9pbml0ID0gKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKikoY2h1bmstXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XG4rXHRjaWQgPSBwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLnR5cGU7XG4rXHRpZiAoIXNjdHBfc2soc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbitcdCAgICAhc2N0cF92ZXJpZnlfaW5pdChuZXQsIGVwLCBhc29jLCBjaWQsIHBlZXJfaW5pdCwgY2h1bmssXG4rXHRcdFx0ICAgICAgXHUwMDI2ZXJyX2Noa19wKSkge1xuK1x0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuK1x0XHRpZiAoZXJyX2Noa19wKVxuK1x0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuK1x0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsIGNvbW1hbmRzKTtcbitcdH1cbitcdGlmIChlcnJfY2hrX3ApXG4rXHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuK1xuIFx0aWYgKHNlY3VyaXR5X3NjdHBfYXNzb2NfcmVxdWVzdChuZXdfYXNvYywgY2h1bmstXHUwMDNlaGVhZF9za2IgPzogY2h1bmstXHUwMDNlc2tiKSkge1xuIFx0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuIFx0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsIGNvbW1hbmRzKTtcbkBAIC03OTgsNyArODEyLDYgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHQvKiBUaGlzIGlzIGEgYnJhbmQtbmV3IGFzc29jaWF0aW9uLCBzbyB0aGVzZSBhcmUgbm90IHlldCBzaWRlXG4gXHQgKiBlZmZlY3RzLS1pdCBpcyBzYWZlIHRvIHJ1biB0aGVtIGhlcmUuXG4gXHQgKi9cbi1cdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopKGNodW5rLVx1MDAzZXN1YmguY29va2llX2hkciArIDEpO1xuIFx0aWYgKCFzY3RwX3Byb2Nlc3NfaW5pdChuZXdfYXNvYywgY2h1bmssXG4gXHRcdFx0ICAgICAgIFx1MDAyNmNodW5rLVx1MDAzZXN1YmguY29va2llX2hkci1cdTAwM2VjLnBlZXJfYWRkcixcbiBcdFx0XHQgICAgICAgcGVlcl9pbml0LCBHRlBfQVRPTUlDKSlcbkBAIC0yMjE1LDEwICsyMjI4LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2soXG4gXHRcdFx0XHRcdHZvaWQgKmFyZyxcbiBcdFx0XHRcdFx0c3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpXG4ge1xuK1x0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XG4rXHRzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpwZWVyX2luaXQ7XG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhcmc7XG4gXHRlbnVtIHNjdHBfZGlzcG9zaXRpb24gcmV0dmFsO1xuLVx0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcDtcbitcdGVudW0gc2N0cF9jaWQgY2lkO1xuIFx0aW50IGVycm9yID0gMDtcbiBcdGNoYXIgYWN0aW9uO1xuIFxuQEAgLTIyODcsNiArMjMwMiwyMSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxuIFx0c3dpdGNoIChhY3Rpb24pIHtcbiBcdGNhc2UgJ0EnOiAvKiBBc3NvY2lhdGlvbiByZXN0YXJ0LiAqL1xuIFx0Y2FzZSAnQic6IC8qIENvbGxpc2lvbiBjYXNlIEIuICovXG4rXHRcdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopXG4rXHRcdFx0XHQoY2h1bmstXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XG4rXHRcdGNpZCA9IHBlZXJfaW5pdC1cdTAwM2VjaHVua19oZHIudHlwZTtcbitcdFx0aWYgKCFzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcbitcdFx0XHRcdCAgICAgIFx1MDAyNmVycl9jaGtfcCkpIHtcbitcdFx0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuK1x0XHRcdGlmIChlcnJfY2hrX3ApXG4rXHRcdFx0XHRzY3RwX2NodW5rX2ZyZWUoZXJyX2Noa19wKTtcbitcdFx0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsXG4rXHRcdFx0XHRcdFx0Y29tbWFuZHMpO1xuK1x0XHR9XG4rXHRcdGlmIChlcnJfY2hrX3ApXG4rXHRcdFx0c2N0cF9jaHVua19mcmVlKGVycl9jaGtfcCk7XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSAnRCc6IC8qIENvbGxpc2lvbiBjYXNlIEQuICovXG4gXHRcdC8qIFVwZGF0ZSBzb2NrZXQgcGVlciBsYWJlbCBpZiBmaXJzdCBhc3NvY2lhdGlvbi4gKi9cbiBcdFx0aWYgKHNlY3VyaXR5X3NjdHBfYXNzb2NfcmVxdWVzdCgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6MjUuMTY0Mjc5MDc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4MjkyMjI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogU0NUUCBQYXRjaCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgU0NUUCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgIGFuZCBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaGUgY2hhbmdlcyBzZWVtIHRvIGNlbnRlciBhcm91bmQgYHNjdHBfdmVyaWZ5X2luaXRgIGFuZCBhIGNoZWNrIGZvciBgY2gtXHUwMDNldHlwZSAhPSBTQ1RQX0NJRF9JTklUYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIHRoaXMgc2NyZWFtcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQgdG8gbWUuIEl0J3MgdG91Y2hpbmcgY29yZSBTQ1RQIGZ1bmN0aW9uYWxpdHksIHNvIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIHRoZXJlIGNvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBMb29rcyBsaWtlIGluIGBzbV9tYWtlX2NodW5rLmNgLCBpdCdzIGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF92ZXJpZnlfaW5pdGAuIFRoZW4sIGluIGBzbV9zdGF0ZWZ1bnMuY2AsIHRoZSBwYXRjaCBhZmZlY3RzIGBzY3RwX3NmX2RvXzVfMURfY2VgIGFuZCBgc2N0cF9zZl9kb181XzJfNF9kdXBjb29rYC4gVGhhdCdzIGEgc29saWQgbGlzdCB0byBrZWVwIGluIG1pbmQuXG5cblRvIG1ha2Ugc3VyZSBJJ20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb2RlLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MuIEkgYWxyZWFkeSBrbm93IHRoYXQgYElQX1NDVFBgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24gZm9yIFNDVFAsIGJ1dCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBleGFjdCBLY29uZmlnIG5hbWUgdG8gdXNlIGZvciBidWlsZGluZyB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZG91YmxlLWNoZWNrIHRvIG5haWwgZG93biB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciB0aGUgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzc1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6MzAuMzQ3MjAyOTM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTI3NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TQ1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjMwLjQwMjEzNTUzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzQzMjI0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgSVBfU0NUUGAgQ29uZmlndXJhdGlvbiBhbmQgUmVsYXRlZCBDb2RlKipcblxuUmlnaHQsIHNvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gcG9pbnQgd2UncmUgZGVhbGluZyB3aXRoIGlzIGBJUF9TQ1RQYC4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgcGllY2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2V0dGluZ3MgdGhhdCBtaWdodCBiZSBkZXBlbmRlbnQgb24gaXQsIHdoaWNoIGNvdWxkIGFmZmVjdCBpdHMgYmVoYXZpb3Igb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiwgYW5kIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGUgbWFpbiBsb2dpYyBvZnRlbiByZXNpZGVzIGluIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgIGFuZCBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHBva2luZyBhcm91bmQuIEknbGwgbmVlZCB0byBsb29rIHZlcnkgY2xvc2VseSwgYmVjYXVzZSB0aGUgY29kZSBtaWdodCBub3QgYmUgb2J2aW91c2x5IGltcGFjdGVkIGJ5IHRoZSBjb25maWcuXG5cbk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGAjaWZkZWZgIGRpcmVjdGl2ZXMgYXJvdW5kIHRoZSBjb2RlIEknbSBsb29raW5nIGF0LiBJJ2xsIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBleHRlbnQgb2YgaXRzIGluZmx1ZW5jZSBhbmQgaG93IHRoZSBjb2RlIGNoYW5nZXMgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLiBBbnkgdXNlIG9mIGAjaWZkZWYgSVBfU0NUUGAgaXMgd2hhdCBJJ20gZm9jdXNlZCBvbiwgYW5kIGlmIGl0J3MgdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHRlbGwgaG93IGl0IGlzIGltcGFjdGVkIGFuZCBpZiBpdCdzIHRoZSBvbmx5IGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAzOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjMzLjg3NjQ2MDIxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk2MDIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTYzOT1zdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNzAxLSAqL1xcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjcwMjplbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy03MDMtXFx0XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYz02NT1jb25zdCBzdHJ1Y3Qgc2N0cF9zbV90YWJsZV9lbnRyeSAqc2N0cF9zbV9sb29rdXBfZXZlbnQoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtMjgzLVxcdC8qIFNDVFBfU1RBVEVfQ0xPU0VEICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6Mjg0OlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fNV8xRF9jZSksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtMjg1LVxcdC8qIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQgKi8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDozMy45MzI0MjY3NTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc5NDQ2NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTQ1RQIENvcmUgRnVuY3Rpb25zIGZvciBGb2N1cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlc2Ugc3BlY2lmaWMgU0NUUCBmdW5jdGlvbnM6IGBzY3RwX3VucGFja19jb29raWVgLCBgc2N0cF92ZXJpZnlfaW5pdGAsIGBzY3RwX3NmX2RvXzVfMURfY2VgLCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AuIFdlIGtub3cgdGhlc2UgYXJlIGRlZXAgaW5zaWRlIHRoZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIGNydWNpYWwgZm9yIGNodW5rIHByb2Nlc3NpbmcuIFRoZXnigJlyZSBhY3RpdmF0ZWQgd2hlbiBTQ1RQIGlzIGVuYWJsZWQsIGFzIHdlJ2QgZXhwZWN0LCBjb250cm9sbGVkIGJ5IGBDT05GSUdfSVBfU0NUUGAuXG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgIGFyZSB0cnVseSBcImhvdCBwYXRoXCIgZnVuY3Rpb25zLiBUaGV5IGhhbmRsZSBDT09LSUUgRUNITyBhbmQgZHVwbGljYXRlIENPT0tJRSBFQ0hPIGNodW5rcyByZXNwZWN0aXZlbHkuIFRoZXNlIGFyZSBwcmltYXJpbHkgaW52b2x2ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGFzc29jaWF0aW9uIHNldHVwLCB0aGF0IGhhbmRzaGFrZSBwcm9jZXNzLCBzbyB0aGV5J3JlIG5vdCBnb2luZyB0byBiZSBoYW5kbGluZyBldmVyeSBkYXRhIHBhY2tldCBsaWtlIHlvdXIgc3RhbmRhcmQgZGF0YSBjaHVuayBwcm9jZXNzaW5nIHdvdWxkLiBTdGlsbCwgdGhleSBhcmUgcmVsYXRpdmVseSBjb21tb24gZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYW5kIHRoZXnigJlyZSBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBnb29kIGZvY3VzIHN5bWJvbHMuIFNvIHRoYXQncyB0aGUgYW5nbGUgSSdtIHRha2luZy4gVGhlIG90aGVyIHR3bywgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgYW5kIGBzY3RwX3ZlcmlmeV9pbml0YCwgYWxzbyBzZWVtIGxpa2Ugc29saWQgdGFyZ2V0cyBmb3IgaW4tZGVwdGggZXhhbWluYXRpb24uXG5cbk5vdywgbGV0J3MgZGlnIGEgYml0IGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHNpZGUuIEkgc2VlIGEgY2hlY2sgcmVsYXRlZCB0byBgY29va2llX2F1dGhfZW5hYmxlYCBpbiB0aGUgcGF0Y2g6IGAhc2N0cF9zayhzayktXHUwMDNlY29va2llX2F1dGhfZW5hYmxlYC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0J3MgbGlua2VkIHRvIHRoaXMuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDozOS4zMTE4NzUyMTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3Nzk0Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvb2tpZV9hdXRoX2VuYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvcHJvdG9jb2wuYz0xMjg4PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBzY3RwX2RlZmF1bHRzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzEzLVxcdC8qIFdoZXRoZXIgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQoMSkgb3Igbm90KDApICovXFxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMzE0OlxcdG5ldC1cXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPVxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTMxNS1cXHRcXHQhSVNfRU5BQkxFRChDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUpO1xcbi0tXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTE2NDU9c3RhdGljIHN0cnVjdCBzY3RwX2Nvb2tpZV9wYXJhbSAqc2N0cF9wYWNrX2Nvb2tpZShcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0xNzExLVxcdC8qIFNpZ24gdGhlIGNvb2tpZSwgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3MTI6XFx0aWYgKHNjdHBfc2soZXAtXFx1MDAzZWJhc2Uuc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUpIHtcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcxMy1cXHRcXHRzdGF0aWNfYXNzZXJ0KHNpemVvZihjb29raWUtXFx1MDAzZW1hYykgPT0gU0hBMjU2X0RJR0VTVF9TSVpFKTtcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0xNzIyPXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTc3NC1cXHQvKiBWZXJpZnkgdGhlIGNvb2tpZSdzIE1BQywgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3NzU6XFx0aWYgKHNjdHBfc2soZXAtXFx1MDAzZWJhc2Uuc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUpIHtcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTc3Ni1cXHRcXHR1OCBtYWNbU0hBMjU2X0RJR0VTVF9TSVpFXTtcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTcwMj1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTc5MC1cXHRjaWQgPSBwZWVyX2luaXQtXFx1MDAzZWNodW5rX2hkci50eXBlO1xcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjc5MTpcXHRpZiAoIXNjdHBfc2soc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy03OTItXFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTIyMjM9ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayhcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIzMDctXFx0XFx0Y2lkID0gcGVlcl9pbml0LVxcdTAwM2VjaHVua19oZHIudHlwZTtcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoyMzA4OlxcdFxcdGlmICghc2N0cF9zayhlcC1cXHUwMDNlYmFzZS5zayktXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIzMDktXFx0XFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcXG4tLVxcbm5ldC9zY3RwL3NvY2tldC5jPTUwMjA9c3RhdGljIGludCBzY3RwX2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvc2N0cC9zb2NrZXQuYy01MDU0LVxcbm5ldC9zY3RwL3NvY2tldC5jOjUwNTU6XFx0c3AtXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSA9IG5ldC1cXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGU7XFxubmV0L3NjdHAvc29ja2V0LmMtNTA1Ni1cXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jPTk1PXN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHNjdHBfbmV0X3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvc2N0cC9zeXNjdGwuYy0xNzYtXFx0XFx0LnByb2NuYW1lXFx0PSBcXFwiY29va2llX2htYWNfYWxnXFxcIixcXG5uZXQvc2N0cC9zeXNjdGwuYzoxNzc6XFx0XFx0LmRhdGFcXHRcXHQ9IFxcdTAwMjZpbml0X25ldC5zY3RwLmNvb2tpZV9hdXRoX2VuYWJsZSxcXG5uZXQvc2N0cC9zeXNjdGwuYy0xNzgtXFx0XFx0Lm1heGxlblxcdFxcdD0gOCxcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jPTM4Nz1zdGF0aWMgaW50IHByb2Nfc2N0cF9kb19obWFjX2FsZyhjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jLTM5MC1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBjb250YWluZXJfb2YoY3RsLVxcdTAwM2VkYXRhLCBzdHJ1Y3QgbmV0LFxcbm5ldC9zY3RwL3N5c2N0bC5jOjM5MTpcXHRcXHRcXHRcXHQgICAgICAgc2N0cC5jb29raWVfYXV0aF9lbmFibGUpO1xcbm5ldC9zY3RwL3N5c2N0bC5jLTM5Mi1cXHRzdHJ1Y3QgY3RsX3RhYmxlIHRibDtcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jLTQwNC1cXHRcXHRpZiAoIXN0cmNtcCh0bXAsIFxcXCJzaGEyNTZcXFwiKSkge1xcbm5ldC9zY3RwL3N5c2N0bC5jOjQwNTpcXHRcXHRcXHRuZXQtXFx1MDAzZXNjdHAuY29va2llX2F1dGhfZW5hYmxlID0gMTtcXG5uZXQvc2N0cC9zeXNjdGwuYy00MDYtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvc2N0cC9zeXNjdGwuYy00MDgtXFx0XFx0aWYgKCFzdHJjbXAodG1wLCBcXFwibm9uZVxcXCIpKSB7XFxubmV0L3NjdHAvc3lzY3RsLmM6NDA5OlxcdFxcdFxcdG5ldC1cXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPSAwO1xcbm5ldC9zY3RwL3N5c2N0bC5jLTQxMC1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jLTQxMy1cXHR9XFxubmV0L3NjdHAvc3lzY3RsLmM6NDE0OlxcdGlmIChuZXQtXFx1MDAzZXNjdHAuY29va2llX2F1dGhfZW5hYmxlKVxcbm5ldC9zY3RwL3N5c2N0bC5jLTQxNS1cXHRcXHR0YmwuZGF0YSA9IChjaGFyICopXFxcInNoYTI1NlxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjM5LjYyOTY3ODIwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzY5MzQ1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgY29va2llX2F1dGhfZW5hYmxlYCBMb2dpYyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGUgYGNvb2tpZV9hdXRoX2VuYWJsZWAgZmxhZyBpcyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIEFuZCBpdCdzIGRpcmVjdGx5IHRpZWQgdG8gYENPTkZJR19TQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAuIElmICp0aGF0KiBpcyAqbm90KiBlbmFibGVkLCBgY29va2llX2F1dGhfZW5hYmxlYCBpcyBzZXQgdG8gMS4gR290IGl0LiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGNhc2VzIHdoZXJlIHdlIGhhdmUgYCFzY3RwX3NrKHNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGVgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCFcblxuU28sIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIG5ldyBsb2dpYyBpbiBgc2N0cF9zZl9kb181XzFEX2NlYCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AsIHdlIG5lZWQgYGNvb2tpZV9hdXRoX2VuYWJsZWAgdG8gYmUgMC4gVGhhdCdzIHRoZSBjb25kaXRpb24gdGhhdCdzIGJlaW5nIGNoZWNrZWQuIFRoaXMgaW1wbGllcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCAqaXMqIGVuYWJsZWQgZHVyaW5nIHRoZSBidWlsZC4gQWx0ZXJuYXRpdmVseSwgaXQgY2FuIGJlIGFkanVzdGVkIHZpYSBzeXNjdGwsIHdoaWNoIGlzIGxlc3MgaWRlYWwgZm9yIG91ciBwdXJwb3Nlcy5cblxuUmlnaHQsIHNvIHRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIGlzIHRoZSBjb3JyZWN0IG5hbWUuIEp1c3QgdG8gbWFrZSBzdXJlIG15IHJlYXNvbmluZyBpcyBzcG90IG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODA3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjQ0LjE2NjYxNDU5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MDcxOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWc9NjI9Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG4tLVxcbm5ldC9zY3RwL0tjb25maWctNjQtXFxubmV0L3NjdHAvS2NvbmZpZzo2NTpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG5uZXQvc2N0cC9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5uZXQvc2N0cC9wcm90b2NvbC5jPTEyODg9c3RhdGljIGludCBfX25ldF9pbml0IHNjdHBfZGVmYXVsdHNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzMTQtXFx0bmV0LVxcdTAwM2VzY3RwLmNvb2tpZV9hdXRoX2VuYWJsZSA9XFxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMzE1OlxcdFxcdCFJU19FTkFCTEVEKENPTkZJR19TQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORSk7XFxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzE2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDo0NC4yMjEwMzE1NDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzczMDExNjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldyBTQ1RQIFBhdGNoIGZvciBUaG9yb3VnaCBUZXN0aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIFNDVFAgcGF0Y2gsIGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzdGFydGluZyB0byBtYWtlIG1vcmUgc2Vuc2UuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIHdhcyB0aGUga2V5LCBidXQgbm93IEkgc2VlIGl0J3MgbW9yZSBudWFuY2VkLiBJZiB3ZSBlbmFibGUgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCwgYGNvb2tpZV9hdXRoX2VuYWJsZWAgZGVmYXVsdHMgdG8gMCwgd2hpY2ggbWVhbnMgdGhlIG5ldyBgc2N0cF92ZXJpZnlfaW5pdGAgY2hlY2tzIGFjdHVhbGx5ICpydW4qLiAgSWYgYGNvb2tpZV9hdXRoX2VuYWJsZWAgaXMgc2V0IHRvIDEsIHRob3NlIGNoZWNrcyBnZXQgc2tpcHBlZC4gU28sIHdoaWxlIHNldHRpbmcgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCBpcyBiZW5lZmljaWFsIGZvciBlbnN1cmluZyB3ZSBoaXQgdGhlIHBhdGgsIGxldHRpbmcgc3l6a2FsbGVyIHNldCB0aGUgc3lzY3RsIGlzIGFsc28gYSB2aWFibGUgYXBwcm9hY2gsIGJ1dCBwcm92aWRpbmcgdGhlIGNvbmZpZyBpcyBkZWZpbml0ZWx5IHRoZSBzYWZlciBvcHRpb24uXG5cbkkgcXVpY2tseSByZWFsaXplZCB0aGUgbW9yZSBjZW50cmFsIGNvbmZpZyBpcyBgSVBfU0NUUGAuIEdvaW5nIGRlZXBlciwgSSBuZWVkIHRvIGNoZWNrIGBzY3RwX3ZlcmlmeV9pbml0YCBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gVGhlIHBhdGNoIGNoYW5nZXMgdGhhdCBjb2RlLCBhbmQgaXQgYXBwZWFycyB0aGUgY2hhbmdlcyBhcmUgKmFsd2F5cyogZXhlY3V0ZWQgcmVnYXJkbGVzcyBvZiBgY29va2llX2F1dGhfZW5hYmxlYCdzIHZhbHVlLiBTYW1lIHN0b3J5IHdpdGggYHNjdHBfdW5wYWNrX2Nvb2tpZWAuIFRoZSBhZGRpdGlvbmFsIGNoZWNrIHdpdGhpbiBgc2N0cF91bnBhY2tfY29va2llYCBpcyByZWFjaGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHNldHRpbmcuIFRoYXQgbWVhbnMgdGhlIHBhdGNoIGhhcyBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBhcmUgcmVhY2hhYmxlLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSB3YW50ZWQgdG8gY29uZmlybS5cblxuU28sIHRoZSBjcml0aWNhbCBjb25maWcgdG8gZW5hYmxlIGZvciB0ZXN0aW5nIGlzIGBJUF9TQ1RQYCwgbm8gcXVlc3Rpb24uIFRoZW4sIGFkZGluZyBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIHdpbGwgZ3VhcmFudGVlIHRoYXQgd2UgcmVhY2ggdGhlIG5ldyBjb2RlIGluIGBzY3RwX3NmX2RvXzVfMURfY2VgIGFuZCBgc2N0cF9zZl9kb181XzJfNF9kdXBjb29rYC5cblxuVGhlcmVmb3JlLCBJIHRoaW5rIHRoZSBmb2N1cyBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlOlxuXG4qICAgYHNjdHBfdW5wYWNrX2Nvb2tpZWBcbiogICBgc2N0cF92ZXJpZnlfaW5pdGBcbiogICBgc2N0cF9zZl9kb181XzFEX2NlYFxuKiAgIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgXG5cblRoZXNlIGxvb2sgZ29vZCB0byBtZS4gVGhleSdyZSBub3QgdGhlIHN1cGVyIGhvdCBkYXRhIHRyYW5zbWlzc2lvbiBwYXRocywgd2hpY2ggaXMgZmluZSwgYXMgdGhleSBjb25jZXJuIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgY2h1bmsgdmFsaWRhdGlvbi4gSSBhbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudCwgYnV0IHdpbGwgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MzcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6NTEuOTUxMTUwMTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM4NDU4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TQ1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjU0LjA4OTYxMzY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTkwNjI2NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNDVFAgQ29va2llIEhNQUMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBJUF9TQ1RQYCBhbmQgc3BlY2lmaWNhbGx5IGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0IHNob3VsZCBkaXNhYmxlIEhNQUMgZm9yIGNvb2tpZXMgYnkgZGVmYXVsdCwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBiZWhhdmlvciBJJ20gdHJ5aW5nIHRvIGFjaGlldmUgdG8gdHJpZ2dlciB0aGUgYCFzY3RwX3NrKHNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGVgIGNvZGUgcGF0aC4gTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gVGhlcmVmb3JlLCBJIHdpbGwgY2hlY2sgdGhlIGBuZXQvc2N0cC9LY29uZmlnYCBmaWxlLiBUaGlzIHNob3VsZCBjb250YWluIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2ODYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6NTcuNDg4Njc3ODQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY3RwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNob2ljZVxcbiAgNTM6XFx0XFx0cHJvbXB0IFxcXCJEZWZhdWx0IFNDVFAgY29va2llIGF1dGhlbnRpY2F0aW9uIG1ldGhvZFxcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBUaGlzIG9wdGlvbiBzZXRzIHRoZSBkZWZhdWx0IFNDVFAgY29va2llIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCwgZm9yXFxuICA1NzpcXHRcXHQgIHdoZW4gYSBtZXRob2QgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZWxlY3RlZCB2aWEgdGhlXFxuICA1ODpcXHRcXHQgIG5ldC5zY3RwLmNvb2tpZV9obWFjX2FsZyBzeXNjdGwuXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgdGhlIGRlZmF1bHQgKEhNQUMtU0hBMjU2KS5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG4gIDYzOlxcdFxcdGJvb2wgXFxcIkhNQUMtU0hBMjU2XFxcIlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG4gIDY2OlxcdFxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuICA2NzpcXHRcXG4gIDY4OlxcdGVuZGNob2ljZVxcbiAgNjk6XFx0XFxuICA3MDpcXHRjb25maWcgSU5FVF9TQ1RQX0RJQUdcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuICA3MjpcXHRcXHRkZWZfdHJpc3RhdGUgSU5FVF9ESUFHXFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcbiAgNzU6XFx0ZW5kaWYgIyBJUF9TQ1RQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjU3LjQ4ODc0NDc3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc4NTQxODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNDVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAgKmlzKiBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCdzIHNlZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBJUF9TQ1RQYCBhbmQgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYC5cblxuVGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGhlYXJ0IG9mIFNDVFAgY2h1bmsgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24uIFdlJ3JlIHNwZWNpZmljYWxseSB0YWxraW5nIGFib3V0IENPT0tJRSBFQ0hPIGFuZCBJTklUIGNodW5rcywgd2hpY2ggYXJlIGNyaXRpY2FsIGNvbXBvbmVudHMgb2YgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlIGNoYW5nZXMgaW52b2x2ZSBhZGRpbmcgc2FmZWd1YXJkcyBhZ2FpbnN0IG1hbGZvcm1lZCBjaHVua3Mg4oCTIGVuc3VyaW5nIHRoYXQgdGhlIHN0YXRlIG1hY2hpbmUgZG9lc24ndCBnZXQgdHJpcHBlZCB1cCBieSBnYXJiYWdlIGRhdGEg4oCTIGFuZCBpbXBsZW1lbnRpbmcgbmV3IHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgdGhlIGVzdGFibGlzaG1lbnQgcHJvY2Vzcy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBpcyBiZWluZyB0d2Vha2VkLiBUaGlzIGlzIGEgcmVkIGZsYWcgdGhhdCBkZW1hbmRzIHJpZ29yb3VzIGZ1enppbmchIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciwgZXZlbiB3b3JzZSwgY3JlYXRlIG5ldyB2dWxuZXJhYmlsaXRpZXMgYnkgbWlzLWhhbmRsaW5nIHNvbWUgb2YgdGhlc2UgZWRnZSBjYXNlcy4gV2UgbmVlZCB0byBoaXQgdGhpcyB3aXRoIGV2ZXJ5dGhpbmcgd2UndmUgZ290LiBMZXQncyB1c2UgYHNldC1yZXN1bHRzYCB0byBrZWVwIHRyYWNrIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzgsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzE6MDIuMzY3Mjg5MDU4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAyNjE3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIlNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF91bnBhY2tfY29va2llXCIsXG4gICAgXCJzY3RwX3ZlcmlmeV9pbml0XCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgICBcInNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCIsXG4gICAgXCJTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfdW5wYWNrX2Nvb2tpZVwiLFxuICAgIFwic2N0cF92ZXJpZnlfaW5pdFwiLFxuICAgIFwic2N0cF9zZl9kb181XzFEX2NlXCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGNodW5rIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmb3IgQ09PS0lFIEVDSE8gYW5kIElOSVQgY2h1bmtzLiBJdCBhZGRzIG5ldyBjaGVja3MgdG8gcHJldmVudCBtYWxmb3JtZWQgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGFuZCBhZGRzIHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-24 23:22:15 +0000 UTC FinishedAt: 2026-06-24 23:31:04 +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": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP", "SCTP_DEFAULT_COOKIE_HMAC_NONE" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "d87363b0edfc7504ff2b144fe4cdd8154f90f42e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP", "SCTP_DEFAULT_COOKIE_HMAC_NONE" ], "series_id": "741f8974-d6ca-4997-9532-e95451fb5a24" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_unpack_cookie", "sctp_verify_init", "sctp_sf_do_5_1D_ce", "sctp_sf_do_5_2_4_dupcook" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7U0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF92ZXJpZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvXzVfMURfY2UmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzJfNF9kdXBjb29rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IGFjZDY4MjVlOThkMWZjNzFkN2U5OWU5ZTg5ZGM2YmEzMTk0MzVkNzZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEp1biAyNCAyMzozMDoyMyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDQxOTU4YjhlNTlmZDUzLi44YWRhYzllMGNkNjZiZSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMTc2MSw2ICYjNDM7MTc2MSw4IEBAIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXG4gXHRiZWFyX2Nvb2tpZSA9IFx1MDAyNmNvb2tpZS1cdTAwM2VjO1xuIFxuIFx0Y2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKikoYmVhcl9jb29raWUgJiM0MzsgMSk7XG4mIzQzO1x0aWYgKGNoLVx1MDAzZXR5cGUgIT0gU0NUUF9DSURfSU5JVClcbiYjNDM7XHRcdGdvdG8gbWFsZm9ybWVkO1xuIFx0Y2hsZW4gPSBudG9ocyhjaC1cdTAwM2VsZW5ndGgpO1xuIFx0aWYgKGNobGVuIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpXG4gXHRcdGdvdG8gbWFsZm9ybWVkO1xuQEAgLTIyOTgsNyAmIzQzOzIzMDAsOCBAQCBpbnQgc2N0cF92ZXJpZnlfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcbiBcdCAqIFZJT0xBVElPTiBlcnJvci4gIFdlIGJ1aWxkIHRoZSBFUlJPUiBjaHVuayBoZXJlIGFuZCBsZXQgdGhlIG5vcm1hbFxuIFx0ICogZXJyb3IgaGFuZGxpbmcgY29kZSBidWlsZCBhbmQgc2VuZCB0aGUgcGFja2V0LlxuIFx0ICovXG4tXHRpZiAocGFyYW0udiAhPSAodm9pZCAqKWNodW5rLVx1MDAzZWNodW5rX2VuZClcbiYjNDM7XHRpZiAocGFyYW0udiAhPSAodm9pZCAqKXBlZXJfaW5pdCAmIzQzO1xuJiM0MztcdFx0ICAgICAgIFNDVFBfUEFENChudG9ocyhwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLmxlbmd0aCkpKVxuIFx0XHRyZXR1cm4gc2N0cF9wcm9jZXNzX2ludl9wYXJhbWxlbmd0aChhc29jLCBwYXJhbS5wLCBjaHVuaywgZXJycCk7XG4gXG4gXHQvKiBUaGUgb25seSBtaXNzaW5nIG1hbmRhdG9yeSBwYXJhbSBwb3NzaWJsZSB0b2RheSBpc1xuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbmluZGV4IDhlOTIwY2VmMDg1OGNmLi5kMjNkOTM1ZTEyOGU5NiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuQEAgLTcwNywxMSAmIzQzOzcwNywxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHRcdFx0IHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3VscGV2ZW50ICpldiwgKmFpX2V2ID0gTlVMTCwgKmF1dGhfZXYgPSBOVUxMO1xuJiM0MztcdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3AgPSBOVUxMO1xuIFx0c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKm5ld19hc29jO1xuIFx0c3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0O1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXJnO1xuLVx0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcDtcbiBcdHN0cnVjdCBzY3RwX2NodW5rICpyZXBsO1xuJiM0MztcdGVudW0gc2N0cF9jaWQgY2lkO1xuIFx0c3RydWN0IHNvY2sgKnNrO1xuIFx0aW50IGVycm9yID0gMDtcbiBcbkBAIC03ODUsNiAmIzQzOzc4NiwxOSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0fVxuIFx0fVxuIFxuJiM0MztcdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopKGNodW5rLVx1MDAzZXN1YmguY29va2llX2hkciAmIzQzOyAxKTtcbiYjNDM7XHRjaWQgPSBwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLnR5cGU7XG4mIzQzO1x0aWYgKCFzY3RwX3NrKHNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXHUwMDI2XHUwMDI2XG4mIzQzO1x0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcbiYjNDM7XHRcdFx0ICAgICAgXHUwMDI2ZXJyX2Noa19wKSkge1xuJiM0MztcdFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcbiYjNDM7XHRcdGlmIChlcnJfY2hrX3ApXG4mIzQzO1x0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuJiM0MztcdFx0cmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7XG4mIzQzO1x0fVxuJiM0MztcdGlmIChlcnJfY2hrX3ApXG4mIzQzO1x0XHRzY3RwX2NodW5rX2ZyZWUoZXJyX2Noa19wKTtcbiYjNDM7XG4gXHRpZiAoc2VjdXJpdHlfc2N0cF9hc3NvY19yZXF1ZXN0KG5ld19hc29jLCBjaHVuay1cdTAwM2VoZWFkX3NrYiA/OiBjaHVuay1cdTAwM2Vza2IpKSB7XG4gXHRcdHNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7XG4gXHRcdHJldHVybiBzY3RwX3NmX3BkaXNjYXJkKG5ldCwgZXAsIGFzb2MsIHR5cGUsIGFyZywgY29tbWFuZHMpO1xuQEAgLTc5OCw3ICYjNDM7ODEyLDYgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHQvKiBUaGlzIGlzIGEgYnJhbmQtbmV3IGFzc29jaWF0aW9uLCBzbyB0aGVzZSBhcmUgbm90IHlldCBzaWRlXG4gXHQgKiBlZmZlY3RzLS1pdCBpcyBzYWZlIHRvIHJ1biB0aGVtIGhlcmUuXG4gXHQgKi9cbi1cdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopKGNodW5rLVx1MDAzZXN1YmguY29va2llX2hkciAmIzQzOyAxKTtcbiBcdGlmICghc2N0cF9wcm9jZXNzX2luaXQobmV3X2Fzb2MsIGNodW5rLFxuIFx0XHRcdCAgICAgICBcdTAwMjZjaHVuay1cdTAwM2VzdWJoLmNvb2tpZV9oZHItXHUwMDNlYy5wZWVyX2FkZHIsXG4gXHRcdFx0ICAgICAgIHBlZXJfaW5pdCwgR0ZQX0FUT01JQykpXG5AQCAtMjIxNSwxMCAmIzQzOzIyMjgsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayhcbiBcdFx0XHRcdFx0dm9pZCAqYXJnLFxuIFx0XHRcdFx0XHRzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcbiB7XG4mIzQzO1x0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XG4mIzQzO1x0c3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0O1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXJnO1xuIFx0ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHJldHZhbDtcbi1cdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3A7XG4mIzQzO1x0ZW51bSBzY3RwX2NpZCBjaWQ7XG4gXHRpbnQgZXJyb3IgPSAwO1xuIFx0Y2hhciBhY3Rpb247XG4gXG5AQCAtMjI4Nyw2ICYjNDM7MjMwMiwyMSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxuIFx0c3dpdGNoIChhY3Rpb24pIHtcbiBcdGNhc2UgJiMzOTtBJiMzOTs6IC8qIEFzc29jaWF0aW9uIHJlc3RhcnQuICovXG4gXHRjYXNlICYjMzk7QiYjMzk7OiAvKiBDb2xsaXNpb24gY2FzZSBCLiAqL1xuJiM0MztcdFx0cGVlcl9pbml0ID0gKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKilcbiYjNDM7XHRcdFx0XHQoY2h1bmstXHUwMDNlc3ViaC5jb29raWVfaGRyICYjNDM7IDEpO1xuJiM0MztcdFx0Y2lkID0gcGVlcl9pbml0LVx1MDAzZWNodW5rX2hkci50eXBlO1xuJiM0MztcdFx0aWYgKCFzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdCAgICAhc2N0cF92ZXJpZnlfaW5pdChuZXQsIGVwLCBhc29jLCBjaWQsIHBlZXJfaW5pdCwgY2h1bmssXG4mIzQzO1x0XHRcdFx0ICAgICAgXHUwMDI2ZXJyX2Noa19wKSkge1xuJiM0MztcdFx0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuJiM0MztcdFx0XHRpZiAoZXJyX2Noa19wKVxuJiM0MztcdFx0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuJiM0MztcdFx0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsXG4mIzQzO1x0XHRcdFx0XHRcdGNvbW1hbmRzKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGlmIChlcnJfY2hrX3ApXG4mIzQzO1x0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuJiM0MztcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlICYjMzk7RCYjMzk7OiAvKiBDb2xsaXNpb24gY2FzZSBELiAqL1xuIFx0XHQvKiBVcGRhdGUgc29ja2V0IHBlZXIgbGFiZWwgaWYgZmlyc3QgYXNzb2NpYXRpb24uICovXG4gXHRcdGlmIChzZWN1cml0eV9zY3RwX2Fzc29jX3JlcXVlc3QoKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICopYXNvYyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDssCiAgICAmIzM0O1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgICAmIzM0O3NjdHBfdmVyaWZ5X2luaXQmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzFEX2NlJiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGNodW5rIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmb3IgQ09PS0lFIEVDSE8gYW5kIElOSVQgY2h1bmtzLiBJdCBhZGRzIG5ldyBjaGVja3MgdG8gcHJldmVudCBtYWxmb3JtZWQgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGFuZCBhZGRzIHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFjZDY4MjVlOThkMWZjNzFkN2U5OWU5ZTg5ZGM2YmEzMTk0MzVkNzYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEp1biAyNCAyMzozMDoyMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCA0MTk1OGI4ZTU5ZmQ1My4uOGFkYWM5ZTBjZDY2YmUgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTE3NjEsNiAmIzQzOzE3NjEsOCBAQCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqc2N0cF91bnBhY2tfY29va2llKAogCWJlYXJfY29va2llID0gJmFtcDtjb29raWUtJmd0O2M7CiAKIAljaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKShiZWFyX2Nvb2tpZSAmIzQzOyAxKTsKJiM0MzsJaWYgKGNoLSZndDt0eXBlICE9IFNDVFBfQ0lEX0lOSVQpCiYjNDM7CQlnb3RvIG1hbGZvcm1lZDsKIAljaGxlbiA9IG50b2hzKGNoLSZndDtsZW5ndGgpOwogCWlmIChjaGxlbiAmbHQ7IHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSkKIAkJZ290byBtYWxmb3JtZWQ7CkBAIC0yMjk4LDcgJiM0MzsyMzAwLDggQEAgaW50IHNjdHBfdmVyaWZ5X2luaXQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsCiAJICogVklPTEFUSU9OIGVycm9yLiAgV2UgYnVpbGQgdGhlIEVSUk9SIGNodW5rIGhlcmUgYW5kIGxldCB0aGUgbm9ybWFsCiAJICogZXJyb3IgaGFuZGxpbmcgY29kZSBidWlsZCBhbmQgc2VuZCB0aGUgcGFja2V0LgogCSAqLwotCWlmIChwYXJhbS52ICE9ICh2b2lkICopY2h1bmstJmd0O2NodW5rX2VuZCkKJiM0MzsJaWYgKHBhcmFtLnYgIT0gKHZvaWQgKilwZWVyX2luaXQgJiM0MzsKJiM0MzsJCSAgICAgICBTQ1RQX1BBRDQobnRvaHMocGVlcl9pbml0LSZndDtjaHVua19oZHIubGVuZ3RoKSkpCiAJCXJldHVybiBzY3RwX3Byb2Nlc3NfaW52X3BhcmFtbGVuZ3RoKGFzb2MsIHBhcmFtLnAsIGNodW5rLCBlcnJwKTsKIAogCS8qIFRoZSBvbmx5IG1pc3NpbmcgbWFuZGF0b3J5IHBhcmFtIHBvc3NpYmxlIHRvZGF5IGlzCmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jCmluZGV4IDhlOTIwY2VmMDg1OGNmLi5kMjNkOTM1ZTEyOGU5NiAxMDA2NDQKLS0tIGEvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmMKQEAgLTcwNywxMSAmIzQzOzcwNywxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCwKIAkJCQkJIHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKQogewogCXN0cnVjdCBzY3RwX3VscGV2ZW50ICpldiwgKmFpX2V2ID0gTlVMTCwgKmF1dGhfZXYgPSBOVUxMOwomIzQzOwlzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wID0gTlVMTDsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7CiAJc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0OwogCXN0cnVjdCBzY3RwX2NodW5rICpjaHVuayA9IGFyZzsKLQlzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wOwogCXN0cnVjdCBzY3RwX2NodW5rICpyZXBsOwomIzQzOwllbnVtIHNjdHBfY2lkIGNpZDsKIAlzdHJ1Y3Qgc29jayAqc2s7CiAJaW50IGVycm9yID0gMDsKIApAQCAtNzg1LDYgJiM0Mzs3ODYsMTkgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsCiAJCX0KIAl9CiAKJiM0MzsJcGVlcl9pbml0ID0gKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKikoY2h1bmstJmd0O3N1YmguY29va2llX2hkciAmIzQzOyAxKTsKJiM0MzsJY2lkID0gcGVlcl9pbml0LSZndDtjaHVua19oZHIudHlwZTsKJiM0MzsJaWYgKCFzY3RwX3NrKHNrKS0mZ3Q7Y29va2llX2F1dGhfZW5hYmxlICZhbXA7JmFtcDsKJiM0MzsJICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuaywKJiM0MzsJCQkgICAgICAmYW1wO2Vycl9jaGtfcCkpIHsKJiM0MzsJCXNjdHBfYXNzb2NpYXRpb25fZnJlZShuZXdfYXNvYyk7CiYjNDM7CQlpZiAoZXJyX2Noa19wKQomIzQzOwkJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwkJcmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7CiYjNDM7CX0KJiM0MzsJaWYgKGVycl9jaGtfcCkKJiM0MzsJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwogCWlmIChzZWN1cml0eV9zY3RwX2Fzc29jX3JlcXVlc3QobmV3X2Fzb2MsIGNodW5rLSZndDtoZWFkX3NrYiA/OiBjaHVuay0mZ3Q7c2tiKSkgewogCQlzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpOwogCQlyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsIGNvbW1hbmRzKTsKQEAgLTc5OCw3ICYjNDM7ODEyLDYgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsCiAJLyogVGhpcyBpcyBhIGJyYW5kLW5ldyBhc3NvY2lhdGlvbiwgc28gdGhlc2UgYXJlIG5vdCB5ZXQgc2lkZQogCSAqIGVmZmVjdHMtLWl0IGlzIHNhZmUgdG8gcnVuIHRoZW0gaGVyZS4KIAkgKi8KLQlwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKShjaHVuay0mZ3Q7c3ViaC5jb29raWVfaGRyICYjNDM7IDEpOwogCWlmICghc2N0cF9wcm9jZXNzX2luaXQobmV3X2Fzb2MsIGNodW5rLAogCQkJICAgICAgICZhbXA7Y2h1bmstJmd0O3N1YmguY29va2llX2hkci0mZ3Q7Yy5wZWVyX2FkZHIsCiAJCQkgICAgICAgcGVlcl9pbml0LCBHRlBfQVRPTUlDKSkKQEAgLTIyMTUsMTAgJiM0MzsyMjI4LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2soCiAJCQkJCXZvaWQgKmFyZywKIAkJCQkJc3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpCiB7CiYjNDM7CXN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3AgPSBOVUxMOwogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpuZXdfYXNvYzsKJiM0MzsJc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0OwogCXN0cnVjdCBzY3RwX2NodW5rICpjaHVuayA9IGFyZzsKIAllbnVtIHNjdHBfZGlzcG9zaXRpb24gcmV0dmFsOwotCXN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3A7CiYjNDM7CWVudW0gc2N0cF9jaWQgY2lkOwogCWludCBlcnJvciA9IDA7CiAJY2hhciBhY3Rpb247CiAKQEAgLTIyODcsNiAmIzQzOzIzMDIsMjEgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vaygKIAlzd2l0Y2ggKGFjdGlvbikgewogCWNhc2UgJiMzOTtBJiMzOTs6IC8qIEFzc29jaWF0aW9uIHJlc3RhcnQuICovCiAJY2FzZSAmIzM5O0ImIzM5OzogLyogQ29sbGlzaW9uIGNhc2UgQi4gKi8KJiM0MzsJCXBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopCiYjNDM7CQkJCShjaHVuay0mZ3Q7c3ViaC5jb29raWVfaGRyICYjNDM7IDEpOwomIzQzOwkJY2lkID0gcGVlcl9pbml0LSZndDtjaHVua19oZHIudHlwZTsKJiM0MzsJCWlmICghc2N0cF9zayhlcC0mZ3Q7YmFzZS5zayktJmd0O2Nvb2tpZV9hdXRoX2VuYWJsZSAmYW1wOyZhbXA7CiYjNDM7CQkgICAgIXNjdHBfdmVyaWZ5X2luaXQobmV0LCBlcCwgYXNvYywgY2lkLCBwZWVyX2luaXQsIGNodW5rLAomIzQzOwkJCQkgICAgICAmYW1wO2Vycl9jaGtfcCkpIHsKJiM0MzsJCQlzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpOwomIzQzOwkJCWlmIChlcnJfY2hrX3ApCiYjNDM7CQkJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwkJCXJldHVybiBzY3RwX3NmX3BkaXNjYXJkKG5ldCwgZXAsIGFzb2MsIHR5cGUsIGFyZywKJiM0MzsJCQkJCQljb21tYW5kcyk7CiYjNDM7CQl9CiYjNDM7CQlpZiAoZXJyX2Noa19wKQomIzQzOwkJCXNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApOwomIzQzOwkJZmFsbHRocm91Z2g7CiAJY2FzZSAmIzM5O0QmIzM5OzogLyogQ29sbGlzaW9uIGNhc2UgRC4gKi8KIAkJLyogVXBkYXRlIHNvY2tldCBwZWVyIGxhYmVsIGlmIGZpcnN0IGFzc29jaWF0aW9uLiAqLwogCQlpZiAoc2VjdXJpdHlfc2N0cF9hc3NvY19yZXF1ZXN0KChzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqKWFzb2MsCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzNzUKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAyMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb246IFNDVFAgUGF0Y2ggQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7dmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0JiMzOTtzIHBva2luZyBhcm91bmQgaW4gdGhlIFNDVFAgaW1wbGVtZW50YXRpb24sIHNwZWNpZmljYWxseSBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYCBhbmQgYG5ldC9zY3RwL3NtX3N0YXRlZnVucy5jYC4gVGhlIGNoYW5nZXMgc2VlbSB0byBjZW50ZXIgYXJvdW5kIGBzY3RwX3ZlcmlmeV9pbml0YCBhbmQgYSBjaGVjayBmb3IgYGNoLSZndDt0eXBlICE9IFNDVFBfQ0lEX0lOSVRgLiBSaWdodCBvZmYgdGhlIGJhdCwgdGhpcyBzY3JlYW1zIHBvdGVudGlhbCBmdXp6aW5nIHRhcmdldCB0byBtZS4gSXQmIzM5O3MgdG91Y2hpbmcgY29yZSBTQ1RQIGZ1bmN0aW9uYWxpdHksIHNvIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIHRoZXJlIGNvdWxkIGJlIGludGVyZXN0aW5nLgoKTm93LCBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGV4YWN0IGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBtb2RpZmllZC4gTG9va3MgbGlrZSBpbiBgc21fbWFrZV9jaHVuay5jYCwgaXQmIzM5O3MgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgYW5kIGBzY3RwX3ZlcmlmeV9pbml0YC4gVGhlbiwgaW4gYHNtX3N0YXRlZnVucy5jYCwgdGhlIHBhdGNoIGFmZmVjdHMgYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgLiBUaGF0JiMzOTtzIGEgc29saWQgbGlzdCB0byBrZWVwIGluIG1pbmQuCgpUbyBtYWtlIHN1cmUgSSYjMzk7bSB0YXJnZXRpbmcgdGhlIHJpZ2h0IGNvZGUsIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MuIEkgYWxyZWFkeSBrbm93IHRoYXQgYElQX1NDVFBgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24gZm9yIFNDVFAsIGJ1dCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBleGFjdCBLY29uZmlnIG5hbWUgdG8gdXNlIGZvciBidWlsZGluZyB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4gSSYjMzk7bGwgZmlyZSB1cCBgZ3JlcHBlcmAgYW5kIGRvdWJsZS1jaGVjayB0byBuYWlsIGRvd24gdGhlIGV4YWN0IGNvbmZpZ3VyYXRpb24gc2V0dGluZyBmb3IgdGhlIGZ1enplci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBfU0NUUCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnLTUtXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXG5uZXQvc2N0cC9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQwMzgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA3MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4KCioqSW52ZXN0aWdhdGluZyB0aGUgYElQX1NDVFBgIENvbmZpZ3VyYXRpb24gYW5kIFJlbGF0ZWQgQ29kZSoqCgpSaWdodCwgc28gdGhlIGNvcmUgY29uZmlndXJhdGlvbiBwb2ludCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGlzIGBJUF9TQ1RQYC4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgcGllY2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2V0dGluZ3MgdGhhdCBtaWdodCBiZSBkZXBlbmRlbnQgb24gaXQsIHdoaWNoIGNvdWxkIGFmZmVjdCBpdHMgYmVoYXZpb3Igb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay4KCkkgbmVlZCB0byBkaWcgaW50byB0aGUgaW1wbGVtZW50YXRpb24sIGFuZCBJIGtub3cgZnJvbSBleHBlcmllbmNlIHRoYXQgdGhlIG1haW4gbG9naWMgb2Z0ZW4gcmVzaWRlcyBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYCBhbmQgYG5ldC9zY3RwL3NtX3N0YXRlZnVucy5jYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBwb2tpbmcgYXJvdW5kLiBJJiMzOTtsbCBuZWVkIHRvIGxvb2sgdmVyeSBjbG9zZWx5LCBiZWNhdXNlIHRoZSBjb2RlIG1pZ2h0IG5vdCBiZSBvYnZpb3VzbHkgaW1wYWN0ZWQgYnkgdGhlIGNvbmZpZy4KCk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGAjaWZkZWZgIGRpcmVjdGl2ZXMgYXJvdW5kIHRoZSBjb2RlIEkmIzM5O20gbG9va2luZyBhdC4gSSYjMzk7bGwgbmVlZCB0byBkZXRlcm1pbmUgdGhlIGV4dGVudCBvZiBpdHMgaW5mbHVlbmNlIGFuZCBob3cgdGhlIGNvZGUgY2hhbmdlcyBkZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24uIEFueSB1c2Ugb2YgYCNpZmRlZiBJUF9TQ1RQYCBpcyB3aGF0IEkmIzM5O20gZm9jdXNlZCBvbiwgYW5kIGlmIGl0JiMzOTtzIHRoZXJlIEkmIzM5O2xsIGJlIGFibGUgdG8gdGVsbCBob3cgaXQgaXMgaW1wYWN0ZWQgYW5kIGlmIGl0JiMzOTtzIHRoZSBvbmx5IGltcGFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX3NmX2RvXzVfMURfY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NjM5PXN0YXRpYyBib29sIHNjdHBfYXV0aF9jaHVua192ZXJpZnkoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmssXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNzAxLSAqL1xubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NzAyOmVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMURfY2Uoc3RydWN0IG5ldCAqbmV0LFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNzAzLVx0XHRcdFx0XHQgY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYz02NT1jb25zdCBzdHJ1Y3Qgc2N0cF9zbV90YWJsZV9lbnRyeSAqc2N0cF9zbV9sb29rdXBfZXZlbnQoXG4tLVxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTI4My1cdC8qIFNDVFBfU1RBVEVfQ0xPU0VEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6Mjg0Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9kb181XzFEX2NlKSwgXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy0yODUtXHQvKiBTQ1RQX1NUQVRFX0NPT0tJRV9XQUlUICovIFxcXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDcxNwoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU0NUUCBDb3JlIEZ1bmN0aW9ucyBmb3IgRm9jdXMqKgoKT2theSwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlc2Ugc3BlY2lmaWMgU0NUUCBmdW5jdGlvbnM6IGBzY3RwX3VucGFja19jb29raWVgLCBgc2N0cF92ZXJpZnlfaW5pdGAsIGBzY3RwX3NmX2RvXzVfMURfY2VgLCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AuIFdlIGtub3cgdGhlc2UgYXJlIGRlZXAgaW5zaWRlIHRoZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIGNydWNpYWwgZm9yIGNodW5rIHByb2Nlc3NpbmcuIFRoZXnigJlyZSBhY3RpdmF0ZWQgd2hlbiBTQ1RQIGlzIGVuYWJsZWQsIGFzIHdlJiMzOTtkIGV4cGVjdCwgY29udHJvbGxlZCBieSBgQ09ORklHX0lQX1NDVFBgLgoKSSBuZWVkIHRvIGNvbmZpcm0gd2hldGhlciBgc2N0cF9zZl9kb181XzFEX2NlYCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AgYXJlIHRydWx5ICYjMzQ7aG90IHBhdGgmIzM0OyBmdW5jdGlvbnMuIFRoZXkgaGFuZGxlIENPT0tJRSBFQ0hPIGFuZCBkdXBsaWNhdGUgQ09PS0lFIEVDSE8gY2h1bmtzIHJlc3BlY3RpdmVseS4gVGhlc2UgYXJlIHByaW1hcmlseSBpbnZvbHZlZCBkdXJpbmcgdGhlIGluaXRpYWwgYXNzb2NpYXRpb24gc2V0dXAsIHRoYXQgaGFuZHNoYWtlIHByb2Nlc3MsIHNvIHRoZXkmIzM5O3JlIG5vdCBnb2luZyB0byBiZSBoYW5kbGluZyBldmVyeSBkYXRhIHBhY2tldCBsaWtlIHlvdXIgc3RhbmRhcmQgZGF0YSBjaHVuayBwcm9jZXNzaW5nIHdvdWxkLiBTdGlsbCwgdGhleSBhcmUgcmVsYXRpdmVseSBjb21tb24gZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYW5kIHRoZXnigJlyZSBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBnb29kIGZvY3VzIHN5bWJvbHMuIFNvIHRoYXQmIzM5O3MgdGhlIGFuZ2xlIEkmIzM5O20gdGFraW5nLiBUaGUgb3RoZXIgdHdvLCBgc2N0cF91bnBhY2tfY29va2llYCBhbmQgYHNjdHBfdmVyaWZ5X2luaXRgLCBhbHNvIHNlZW0gbGlrZSBzb2xpZCB0YXJnZXRzIGZvciBpbi1kZXB0aCBleGFtaW5hdGlvbi4KCk5vdywgbGV0JiMzOTtzIGRpZyBhIGJpdCBkZWVwZXIgaW50byB0aGUgY29uZmlndXJhdGlvbiBzaWRlLiBJIHNlZSBhIGNoZWNrIHJlbGF0ZWQgdG8gYGNvb2tpZV9hdXRoX2VuYWJsZWAgaW4gdGhlIHBhdGNoOiBgIXNjdHBfc2soc2spLSZndDtjb29raWVfYXV0aF9lbmFibGVgLiBJJiMzOTttIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0JiMzOTtzIGxpbmtlZCB0byB0aGlzLiBJdCYjMzk7cyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBpcyBjb250cm9sbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2Nvb2tpZV9hdXRoX2VuYWJsZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9wcm90b2NvbC5jPTEyODg9c3RhdGljIGludCBfX25ldF9pbml0IHNjdHBfZGVmYXVsdHNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzEzLVx0LyogV2hldGhlciBjb29raWUgYXV0aGVudGljYXRpb24gaXMgZW5hYmxlZCgxKSBvciBub3QoMCkgKi9cbm5ldC9zY3RwL3Byb3RvY29sLmM6MTMxNDpcdG5ldC1cdTAwM2VzY3RwLmNvb2tpZV9hdXRoX2VuYWJsZSA9XG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzMTUtXHRcdCFJU19FTkFCTEVEKENPTkZJR19TQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORSk7XG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTE2NDU9c3RhdGljIHN0cnVjdCBzY3RwX2Nvb2tpZV9wYXJhbSAqc2N0cF9wYWNrX2Nvb2tpZShcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcxMS1cdC8qIFNpZ24gdGhlIGNvb2tpZSwgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MTcxMjpcdGlmIChzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSkge1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTE3MTMtXHRcdHN0YXRpY19hc3NlcnQoc2l6ZW9mKGNvb2tpZS1cdTAwM2VtYWMpID09IFNIQTI1Nl9ESUdFU1RfU0laRSk7XG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTE3MjI9c3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTc3NC1cdC8qIFZlcmlmeSB0aGUgY29va2llJiMzOTtzIE1BQywgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MTc3NTpcdGlmIChzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSkge1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTE3NzYtXHRcdHU4IG1hY1tTSEEyNTZfRElHRVNUX1NJWkVdO1xuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTcwMj1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy03OTAtXHRjaWQgPSBwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLnR5cGU7XG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo3OTE6XHRpZiAoIXNjdHBfc2soc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTc5Mi1cdCAgICAhc2N0cF92ZXJpZnlfaW5pdChuZXQsIGVwLCBhc29jLCBjaWQsIHBlZXJfaW5pdCwgY2h1bmssXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9MjIyMz1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxuLS1cbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIzMDctXHRcdGNpZCA9IHBlZXJfaW5pdC1cdTAwM2VjaHVua19oZHIudHlwZTtcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjIzMDg6XHRcdGlmICghc2N0cF9zayhlcC1cdTAwM2ViYXNlLnNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXHUwMDI2XHUwMDI2XG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy0yMzA5LVx0XHQgICAgIXNjdHBfdmVyaWZ5X2luaXQobmV0LCBlcCwgYXNvYywgY2lkLCBwZWVyX2luaXQsIGNodW5rLFxuLS1cbm5ldC9zY3RwL3NvY2tldC5jPTUwMjA9c3RhdGljIGludCBzY3RwX2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXG4tLVxubmV0L3NjdHAvc29ja2V0LmMtNTA1NC1cbm5ldC9zY3RwL3NvY2tldC5jOjUwNTU6XHRzcC1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgPSBuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGU7XG5uZXQvc2N0cC9zb2NrZXQuYy01MDU2LVxuLS1cbm5ldC9zY3RwL3N5c2N0bC5jPTk1PXN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHNjdHBfbmV0X3RhYmxlW10gPSB7XG4tLVxubmV0L3NjdHAvc3lzY3RsLmMtMTc2LVx0XHQucHJvY25hbWVcdD0gXCYjMzQ7Y29va2llX2htYWNfYWxnXCYjMzQ7LFxubmV0L3NjdHAvc3lzY3RsLmM6MTc3Olx0XHQuZGF0YVx0XHQ9IFx1MDAyNmluaXRfbmV0LnNjdHAuY29va2llX2F1dGhfZW5hYmxlLFxubmV0L3NjdHAvc3lzY3RsLmMtMTc4LVx0XHQubWF4bGVuXHRcdD0gOCxcbi0tXG5uZXQvc2N0cC9zeXNjdGwuYz0zODc9c3RhdGljIGludCBwcm9jX3NjdHBfZG9faG1hY19hbGcoY29uc3Qgc3RydWN0IGN0bF90YWJsZSAqY3RsLCBpbnQgd3JpdGUsXG4tLVxubmV0L3NjdHAvc3lzY3RsLmMtMzkwLVx0c3RydWN0IG5ldCAqbmV0ID0gY29udGFpbmVyX29mKGN0bC1cdTAwM2VkYXRhLCBzdHJ1Y3QgbmV0LFxubmV0L3NjdHAvc3lzY3RsLmM6MzkxOlx0XHRcdFx0ICAgICAgIHNjdHAuY29va2llX2F1dGhfZW5hYmxlKTtcbm5ldC9zY3RwL3N5c2N0bC5jLTM5Mi1cdHN0cnVjdCBjdGxfdGFibGUgdGJsO1xuLS1cbm5ldC9zY3RwL3N5c2N0bC5jLTQwNC1cdFx0aWYgKCFzdHJjbXAodG1wLCBcJiMzNDtzaGEyNTZcJiMzNDspKSB7XG5uZXQvc2N0cC9zeXNjdGwuYzo0MDU6XHRcdFx0bmV0LVx1MDAzZXNjdHAuY29va2llX2F1dGhfZW5hYmxlID0gMTtcbm5ldC9zY3RwL3N5c2N0bC5jLTQwNi1cdFx0XHRyZXR1cm4gMDtcbi0tXG5uZXQvc2N0cC9zeXNjdGwuYy00MDgtXHRcdGlmICghc3RyY21wKHRtcCwgXCYjMzQ7bm9uZVwmIzM0OykpIHtcbm5ldC9zY3RwL3N5c2N0bC5jOjQwOTpcdFx0XHRuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPSAwO1xubmV0L3NjdHAvc3lzY3RsLmMtNDEwLVx0XHRcdHJldHVybiAwO1xuLS1cbm5ldC9zY3RwL3N5c2N0bC5jLTQxMy1cdH1cbm5ldC9zY3RwL3N5c2N0bC5jOjQxNDpcdGlmIChuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUpXG5uZXQvc2N0cC9zeXNjdGwuYy00MTUtXHRcdHRibC5kYXRhID0gKGNoYXIgKilcJiMzNDtzaGEyNTZcJiMzNDs7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwNwoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBjb29raWVfYXV0aF9lbmFibGVgIExvZ2ljKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEl0IGxvb2tzIGxpa2UgdGhlIGBjb29raWVfYXV0aF9lbmFibGVgIGZsYWcgaXMgdGhlIGtleSB2YXJpYWJsZSBoZXJlLiBBbmQgaXQmIzM5O3MgZGlyZWN0bHkgdGllZCB0byBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYC4gSWYgKnRoYXQqIGlzICpub3QqIGVuYWJsZWQsIGBjb29raWVfYXV0aF9lbmFibGVgIGlzIHNldCB0byAxLiBHb3QgaXQuIE5vdywgdGhlIHBhdGNoIGZvY3VzZXMgb24gY2FzZXMgd2hlcmUgd2UgaGF2ZSBgIXNjdHBfc2soc2spLSZndDtjb29raWVfYXV0aF9lbmFibGVgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCEKClNvLCB0byBhY3R1YWxseSB0cmlnZ2VyIHRoZSBuZXcgbG9naWMgaW4gYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgLCB3ZSBuZWVkIGBjb29raWVfYXV0aF9lbmFibGVgIHRvIGJlIDAuIFRoYXQmIzM5O3MgdGhlIGNvbmRpdGlvbiB0aGF0JiMzOTtzIGJlaW5nIGNoZWNrZWQuIFRoaXMgaW1wbGllcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCAqaXMqIGVuYWJsZWQgZHVyaW5nIHRoZSBidWlsZC4gQWx0ZXJuYXRpdmVseSwgaXQgY2FuIGJlIGFkanVzdGVkIHZpYSBzeXNjdGwsIHdoaWNoIGlzIGxlc3MgaWRlYWwgZm9yIG91ciBwdXJwb3Nlcy4KClJpZ2h0LCBzbyB0byBjb25maXJtIHRoaXMsIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCBpcyB0aGUgY29ycmVjdCBuYW1lLiBKdXN0IHRvIG1ha2Ugc3VyZSBteSByZWFzb25pbmcgaXMgc3BvdCBvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7U0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZz02Mj1jb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxuLS1cbm5ldC9zY3RwL0tjb25maWctNjQtXG5uZXQvc2N0cC9LY29uZmlnOjY1OmNvbmZpZyBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVxubmV0L3NjdHAvS2NvbmZpZy02Ni1cdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuLS1cbm5ldC9zY3RwL3Byb3RvY29sLmM9MTI4OD1zdGF0aWMgaW50IF9fbmV0X2luaXQgc2N0cF9kZWZhdWx0c19pbml0KHN0cnVjdCBuZXQgKm5ldClcbi0tXG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzMTQtXHRuZXQtXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPVxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMzE1Olx0XHQhSVNfRU5BQkxFRChDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUpO1xubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzE2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NTM3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogNTIzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV3IFNDVFAgUGF0Y2ggZm9yIFRob3JvdWdoIFRlc3RpbmcqKgoKT2theSwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBTQ1RQIHBhdGNoLCBhbmQgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgc3RhcnRpbmcgdG8gbWFrZSBtb3JlIHNlbnNlLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzIHRoYXQgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCB3YXMgdGhlIGtleSwgYnV0IG5vdyBJIHNlZSBpdCYjMzk7cyBtb3JlIG51YW5jZWQuIElmIHdlIGVuYWJsZSBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgLCBgY29va2llX2F1dGhfZW5hYmxlYCBkZWZhdWx0cyB0byAwLCB3aGljaCBtZWFucyB0aGUgbmV3IGBzY3RwX3ZlcmlmeV9pbml0YCBjaGVja3MgYWN0dWFsbHkgKnJ1biouICBJZiBgY29va2llX2F1dGhfZW5hYmxlYCBpcyBzZXQgdG8gMSwgdGhvc2UgY2hlY2tzIGdldCBza2lwcGVkLiBTbywgd2hpbGUgc2V0dGluZyBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIGlzIGJlbmVmaWNpYWwgZm9yIGVuc3VyaW5nIHdlIGhpdCB0aGUgcGF0aCwgbGV0dGluZyBzeXprYWxsZXIgc2V0IHRoZSBzeXNjdGwgaXMgYWxzbyBhIHZpYWJsZSBhcHByb2FjaCwgYnV0IHByb3ZpZGluZyB0aGUgY29uZmlnIGlzIGRlZmluaXRlbHkgdGhlIHNhZmVyIG9wdGlvbi4KCkkgcXVpY2tseSByZWFsaXplZCB0aGUgbW9yZSBjZW50cmFsIGNvbmZpZyBpcyBgSVBfU0NUUGAuIEdvaW5nIGRlZXBlciwgSSBuZWVkIHRvIGNoZWNrIGBzY3RwX3ZlcmlmeV9pbml0YCBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gVGhlIHBhdGNoIGNoYW5nZXMgdGhhdCBjb2RlLCBhbmQgaXQgYXBwZWFycyB0aGUgY2hhbmdlcyBhcmUgKmFsd2F5cyogZXhlY3V0ZWQgcmVnYXJkbGVzcyBvZiBgY29va2llX2F1dGhfZW5hYmxlYCYjMzk7cyB2YWx1ZS4gU2FtZSBzdG9yeSB3aXRoIGBzY3RwX3VucGFja19jb29raWVgLiBUaGUgYWRkaXRpb25hbCBjaGVjayB3aXRoaW4gYHNjdHBfdW5wYWNrX2Nvb2tpZWAgaXMgcmVhY2hlZCByZWdhcmRsZXNzIG9mIHRoZSBhdXRoZW50aWNhdGlvbiBzZXR0aW5nLiBUaGF0IG1lYW5zIHRoZSBwYXRjaCBoYXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgYXJlIHJlYWNoYWJsZSwgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgd2FudGVkIHRvIGNvbmZpcm0uCgpTbywgdGhlIGNyaXRpY2FsIGNvbmZpZyB0byBlbmFibGUgZm9yIHRlc3RpbmcgaXMgYElQX1NDVFBgLCBubyBxdWVzdGlvbi4gVGhlbiwgYWRkaW5nIGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAgd2lsbCBndWFyYW50ZWUgdGhhdCB3ZSByZWFjaCB0aGUgbmV3IGNvZGUgaW4gYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgLgoKVGhlcmVmb3JlLCBJIHRoaW5rIHRoZSBmb2N1cyBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlOgoKKiAgIGBzY3RwX3VucGFja19jb29raWVgCiogICBgc2N0cF92ZXJpZnlfaW5pdGAKKiAgIGBzY3RwX3NmX2RvXzVfMURfY2VgCiogICBgc2N0cF9zZl9kb181XzJfNF9kdXBjb29rYAoKVGhlc2UgbG9vayBnb29kIHRvIG1lLiBUaGV5JiMzOTtyZSBub3QgdGhlIHN1cGVyIGhvdCBkYXRhIHRyYW5zbWlzc2lvbiBwYXRocywgd2hpY2ggaXMgZmluZSwgYXMgdGhleSBjb25jZXJuIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgY2h1bmsgdmFsaWRhdGlvbi4gSSBhbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudCwgYnV0IHdpbGwgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIGNvZGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBJUF9TQ1RQJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2ODYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIFNDVFAgQ29va2llIEhNQUMgQ29uZmlndXJhdGlvbioqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYElQX1NDVFBgIGFuZCBzcGVjaWZpY2FsbHkgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYC4gSSBuZWVkIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIGVuYWJsaW5nIHRoaXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgaXQgc2hvdWxkIGRpc2FibGUgSE1BQyBmb3IgY29va2llcyBieSBkZWZhdWx0LCB3aGljaCBpcyBwcmVjaXNlbHkgdGhlIGJlaGF2aW9yIEkmIzM5O20gdHJ5aW5nIHRvIGFjaGlldmUgdG8gdHJpZ2dlciB0aGUgYCFzY3RwX3NrKHNrKS0mZ3Q7Y29va2llX2F1dGhfZW5hYmxlYCBjb2RlIHBhdGguIE5vdywgSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIFRoZXJlZm9yZSwgSSB3aWxsIGNoZWNrIHRoZSBgbmV0L3NjdHAvS2NvbmZpZ2AgZmlsZS4gVGhpcyBzaG91bGQgY29udGFpbiB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBkZXRhaWxzIGZvciBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNCAyMzozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDUwOlx0XHQgIElmIHVuc3VyZSwgc2F5IE5cbiAgNTE6XHRcbiAgNTI6XHRjaG9pY2VcbiAgNTM6XHRcdHByb21wdCBcJiMzNDtEZWZhdWx0IFNDVFAgY29va2llIGF1dGhlbnRpY2F0aW9uIG1ldGhvZFwmIzM0O1xuICA1NDpcdFx0ZGVmYXVsdCBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfU0hBMjU2XG4gIDU1Olx0XHRoZWxwXG4gIDU2Olx0XHQgIFRoaXMgb3B0aW9uIHNldHMgdGhlIGRlZmF1bHQgU0NUUCBjb29raWUgYXV0aGVudGljYXRpb24gbWV0aG9kLCBmb3JcbiAgNTc6XHRcdCAgd2hlbiBhIG1ldGhvZCBoYXNuJiMzOTt0IGJlZW4gZXhwbGljaXRseSBzZWxlY3RlZCB2aWEgdGhlXG4gIDU4Olx0XHQgIG5ldC5zY3RwLmNvb2tpZV9obWFjX2FsZyBzeXNjdGwuXG4gIDU5Olx0XG4gIDYwOlx0XHQgIElmIHVuc3VyZSwgY2hvb3NlIHRoZSBkZWZhdWx0IChITUFDLVNIQTI1NikuXG4gIDYxOlx0XG4gIDYyOlx0Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcbiAgNjM6XHRcdGJvb2wgXCYjMzQ7SE1BQy1TSEEyNTZcJiMzNDtcbiAgNjQ6XHRcbiAgNjU6XHRjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcbiAgNjY6XHRcdGJvb2wgXCYjMzQ7Tm9uZVwmIzM0O1xuICA2NzpcdFxuICA2ODpcdGVuZGNob2ljZVxuICA2OTpcdFxuICA3MDpcdGNvbmZpZyBJTkVUX1NDVFBfRElBR1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBJTkVUX0RJQUdcbiAgNzI6XHRcdGRlZl90cmlzdGF0ZSBJTkVUX0RJQUdcbiAgNzM6XHRcbiAgNzQ6XHRcbiAgNzU6XHRlbmRpZiAjIElQX1NDVFBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjQgMjM6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTMzOAoJCQkJCQkJb3V0cHV0OiAxNjcKCQkJCQkJCXRob3VnaHRzOiAyMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBjb25maXJtZWQgdGhhdCBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgICppcyogYSBsZWdpdGltYXRlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLiBMZXQmIzM5O3Mgc2VlLCB0aGUgcmVsZXZhbnQgY29uZmlncyBhcmUgYElQX1NDVFBgIGFuZCBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgLgoKVGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGhlYXJ0IG9mIFNDVFAgY2h1bmsgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24uIFdlJiMzOTtyZSBzcGVjaWZpY2FsbHkgdGFsa2luZyBhYm91dCBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MsIHdoaWNoIGFyZSBjcml0aWNhbCBjb21wb25lbnRzIG9mIGFzc29jaWF0aW9uIGVzdGFibGlzaG1lbnQuIFRoZSBjaGFuZ2VzIGludm9sdmUgYWRkaW5nIHNhZmVndWFyZHMgYWdhaW5zdCBtYWxmb3JtZWQgY2h1bmtzIOKAkyBlbnN1cmluZyB0aGF0IHRoZSBzdGF0ZSBtYWNoaW5lIGRvZXNuJiMzOTt0IGdldCB0cmlwcGVkIHVwIGJ5IGdhcmJhZ2UgZGF0YSDigJMgYW5kIGltcGxlbWVudGluZyBuZXcgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyB0aGUgZXN0YWJsaXNobWVudCBwcm9jZXNzLgoKRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBpcyBiZWluZyB0d2Vha2VkLiBUaGlzIGlzIGEgcmVkIGZsYWcgdGhhdCBkZW1hbmRzIHJpZ29yb3VzIGZ1enppbmchIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbiYjMzk7dCBpbnRyb2R1Y2UgcmVncmVzc2lvbnMgb3IsIGV2ZW4gd29yc2UsIGNyZWF0ZSBuZXcgdnVsbmVyYWJpbGl0aWVzIGJ5IG1pcy1oYW5kbGluZyBzb21lIG9mIHRoZXNlIGVkZ2UgY2FzZXMuIFdlIG5lZWQgdG8gaGl0IHRoaXMgd2l0aCBldmVyeXRoaW5nIHdlJiMzOTt2ZSBnb3QuIExldCYjMzk7cyB1c2UgYHNldC1yZXN1bHRzYCB0byBrZWVwIHRyYWNrIG9mIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI0IDIzOjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUF9TQ1RQJiMzNDssCiAgICAmIzM0O1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c2N0cF91bnBhY2tfY29va2llJiMzNDssCiAgICAmIzM0O3NjdHBfdmVyaWZ5X2luaXQmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzFEX2NlJiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGNodW5rIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmb3IgQ09PS0lFIEVDSE8gYW5kIElOSVQgY2h1bmtzLiBJdCBhZGRzIG5ldyBjaGVja3MgdG8gcHJldmVudCBtYWxmb3JtZWQgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGFuZCBhZGRzIHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7U0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3VucGFja19jb29raWUmIzM0OywKICAgICYjMzQ7c2N0cF92ZXJpZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvXzVfMURfY2UmIzM0OywKICAgICYjMzQ7c2N0cF9zZl9kb181XzJfNF9kdXBjb29rJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjI0Ljc4MDgwMjEwMloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3NjY2NzYyNTY1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIlNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF91bnBhY2tfY29va2llXCIsXG4gICAgXCJzY3RwX3ZlcmlmeV9pbml0XCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgICBcInNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6MjQuNzgwODA2NDQyWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozODI3MDM3OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBhY2Q2ODI1ZTk4ZDFmYzcxZDdlOTllOWU4OWRjNmJhMzE5NDM1ZDc2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVuIDI0IDIzOjMwOjIzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbmluZGV4IDQxOTU4YjhlNTlmZDUzLi44YWRhYzllMGNkNjZiZSAxMDA2NDRcXG4tLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcXG4rKysgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcXG5AQCAtMTc2MSw2ICsxNzYxLDggQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcXG4gXFx0YmVhcl9jb29raWUgPSBcXHUwMDI2Y29va2llLVxcdTAwM2VjO1xcbiBcXG4gXFx0Y2ggPSAoc3RydWN0IHNjdHBfY2h1bmtoZHIgKikoYmVhcl9jb29raWUgKyAxKTtcXG4rXFx0aWYgKGNoLVxcdTAwM2V0eXBlICE9IFNDVFBfQ0lEX0lOSVQpXFxuK1xcdFxcdGdvdG8gbWFsZm9ybWVkO1xcbiBcXHRjaGxlbiA9IG50b2hzKGNoLVxcdTAwM2VsZW5ndGgpO1xcbiBcXHRpZiAoY2hsZW4gXFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfaW5pdF9jaHVuaykpXFxuIFxcdFxcdGdvdG8gbWFsZm9ybWVkO1xcbkBAIC0yMjk4LDcgKzIzMDAsOCBAQCBpbnQgc2N0cF92ZXJpZnlfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcXG4gXFx0ICogVklPTEFUSU9OIGVycm9yLiAgV2UgYnVpbGQgdGhlIEVSUk9SIGNodW5rIGhlcmUgYW5kIGxldCB0aGUgbm9ybWFsXFxuIFxcdCAqIGVycm9yIGhhbmRsaW5nIGNvZGUgYnVpbGQgYW5kIHNlbmQgdGhlIHBhY2tldC5cXG4gXFx0ICovXFxuLVxcdGlmIChwYXJhbS52ICE9ICh2b2lkICopY2h1bmstXFx1MDAzZWNodW5rX2VuZClcXG4rXFx0aWYgKHBhcmFtLnYgIT0gKHZvaWQgKilwZWVyX2luaXQgK1xcbitcXHRcXHQgICAgICAgU0NUUF9QQUQ0KG50b2hzKHBlZXJfaW5pdC1cXHUwMDNlY2h1bmtfaGRyLmxlbmd0aCkpKVxcbiBcXHRcXHRyZXR1cm4gc2N0cF9wcm9jZXNzX2ludl9wYXJhbWxlbmd0aChhc29jLCBwYXJhbS5wLCBjaHVuaywgZXJycCk7XFxuIFxcbiBcXHQvKiBUaGUgb25seSBtaXNzaW5nIG1hbmRhdG9yeSBwYXJhbSBwb3NzaWJsZSB0b2RheSBpc1xcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuaW5kZXggOGU5MjBjZWYwODU4Y2YuLmQyM2Q5MzVlMTI4ZTk2IDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXFxuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcXG5AQCAtNzA3LDExICs3MDcsMTIgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdFxcdFxcdFxcdFxcdCBzdHJ1Y3Qgc2N0cF9jbWRfc2VxICpjb21tYW5kcylcXG4ge1xcbiBcXHRzdHJ1Y3Qgc2N0cF91bHBldmVudCAqZXYsICphaV9ldiA9IE5VTEwsICphdXRoX2V2ID0gTlVMTDtcXG4rXFx0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XFxuIFxcdHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpuZXdfYXNvYztcXG4gXFx0c3RydWN0IHNjdHBfaW5pdF9jaHVuayAqcGVlcl9pbml0O1xcbiBcXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhcmc7XFxuLVxcdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3A7XFxuIFxcdHN0cnVjdCBzY3RwX2NodW5rICpyZXBsO1xcbitcXHRlbnVtIHNjdHBfY2lkIGNpZDtcXG4gXFx0c3RydWN0IHNvY2sgKnNrO1xcbiBcXHRpbnQgZXJyb3IgPSAwO1xcbiBcXG5AQCAtNzg1LDYgKzc4NiwxOSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0XFx0fVxcbiBcXHR9XFxuIFxcbitcXHRwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKShjaHVuay1cXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XFxuK1xcdGNpZCA9IHBlZXJfaW5pdC1cXHUwMDNlY2h1bmtfaGRyLnR5cGU7XFxuK1xcdGlmICghc2N0cF9zayhzayktXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcXHUwMDI2XFx1MDAyNlxcbitcXHQgICAgIXNjdHBfdmVyaWZ5X2luaXQobmV0LCBlcCwgYXNvYywgY2lkLCBwZWVyX2luaXQsIGNodW5rLFxcbitcXHRcXHRcXHQgICAgICBcXHUwMDI2ZXJyX2Noa19wKSkge1xcbitcXHRcXHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xcbitcXHRcXHRpZiAoZXJyX2Noa19wKVxcbitcXHRcXHRcXHRzY3RwX2NodW5rX2ZyZWUoZXJyX2Noa19wKTtcXG4rXFx0XFx0cmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7XFxuK1xcdH1cXG4rXFx0aWYgKGVycl9jaGtfcClcXG4rXFx0XFx0c2N0cF9jaHVua19mcmVlKGVycl9jaGtfcCk7XFxuK1xcbiBcXHRpZiAoc2VjdXJpdHlfc2N0cF9hc3NvY19yZXF1ZXN0KG5ld19hc29jLCBjaHVuay1cXHUwMDNlaGVhZF9za2IgPzogY2h1bmstXFx1MDAzZXNrYikpIHtcXG4gXFx0XFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcXG4gXFx0XFx0cmV0dXJuIHNjdHBfc2ZfcGRpc2NhcmQobmV0LCBlcCwgYXNvYywgdHlwZSwgYXJnLCBjb21tYW5kcyk7XFxuQEAgLTc5OCw3ICs4MTIsNiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG4gXFx0LyogVGhpcyBpcyBhIGJyYW5kLW5ldyBhc3NvY2lhdGlvbiwgc28gdGhlc2UgYXJlIG5vdCB5ZXQgc2lkZVxcbiBcXHQgKiBlZmZlY3RzLS1pdCBpcyBzYWZlIHRvIHJ1biB0aGVtIGhlcmUuXFxuIFxcdCAqL1xcbi1cXHRwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKShjaHVuay1cXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XFxuIFxcdGlmICghc2N0cF9wcm9jZXNzX2luaXQobmV3X2Fzb2MsIGNodW5rLFxcbiBcXHRcXHRcXHQgICAgICAgXFx1MDAyNmNodW5rLVxcdTAwM2VzdWJoLmNvb2tpZV9oZHItXFx1MDAzZWMucGVlcl9hZGRyLFxcbiBcXHRcXHRcXHQgICAgICAgcGVlcl9pbml0LCBHRlBfQVRPTUlDKSlcXG5AQCAtMjIxNSwxMCArMjIyOCwxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxcbiBcXHRcXHRcXHRcXHRcXHR2b2lkICphcmcsXFxuIFxcdFxcdFxcdFxcdFxcdHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxcbiB7XFxuK1xcdHN0cnVjdCBzY3RwX2NodW5rICplcnJfY2hrX3AgPSBOVUxMO1xcbiBcXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XFxuK1xcdHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKnBlZXJfaW5pdDtcXG4gXFx0c3RydWN0IHNjdHBfY2h1bmsgKmNodW5rID0gYXJnO1xcbiBcXHRlbnVtIHNjdHBfZGlzcG9zaXRpb24gcmV0dmFsO1xcbi1cXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wO1xcbitcXHRlbnVtIHNjdHBfY2lkIGNpZDtcXG4gXFx0aW50IGVycm9yID0gMDtcXG4gXFx0Y2hhciBhY3Rpb247XFxuIFxcbkBAIC0yMjg3LDYgKzIzMDIsMjEgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayhcXG4gXFx0c3dpdGNoIChhY3Rpb24pIHtcXG4gXFx0Y2FzZSAnQSc6IC8qIEFzc29jaWF0aW9uIHJlc3RhcnQuICovXFxuIFxcdGNhc2UgJ0InOiAvKiBDb2xsaXNpb24gY2FzZSBCLiAqL1xcbitcXHRcXHRwZWVyX2luaXQgPSAoc3RydWN0IHNjdHBfaW5pdF9jaHVuayAqKVxcbitcXHRcXHRcXHRcXHQoY2h1bmstXFx1MDAzZXN1YmguY29va2llX2hkciArIDEpO1xcbitcXHRcXHRjaWQgPSBwZWVyX2luaXQtXFx1MDAzZWNodW5rX2hkci50eXBlO1xcbitcXHRcXHRpZiAoIXNjdHBfc2soZXAtXFx1MDAzZWJhc2Uuc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXFx1MDAyNlxcdTAwMjZcXG4rXFx0XFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcXG4rXFx0XFx0XFx0XFx0ICAgICAgXFx1MDAyNmVycl9jaGtfcCkpIHtcXG4rXFx0XFx0XFx0c2N0cF9hc3NvY2lhdGlvbl9mcmVlKG5ld19hc29jKTtcXG4rXFx0XFx0XFx0aWYgKGVycl9jaGtfcClcXG4rXFx0XFx0XFx0XFx0c2N0cF9jaHVua19mcmVlKGVycl9jaGtfcCk7XFxuK1xcdFxcdFxcdHJldHVybiBzY3RwX3NmX3BkaXNjYXJkKG5ldCwgZXAsIGFzb2MsIHR5cGUsIGFyZyxcXG4rXFx0XFx0XFx0XFx0XFx0XFx0Y29tbWFuZHMpO1xcbitcXHRcXHR9XFxuK1xcdFxcdGlmIChlcnJfY2hrX3ApXFxuK1xcdFxcdFxcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xcbitcXHRcXHRmYWxsdGhyb3VnaDtcXG4gXFx0Y2FzZSAnRCc6IC8qIENvbGxpc2lvbiBjYXNlIEQuICovXFxuIFxcdFxcdC8qIFVwZGF0ZSBzb2NrZXQgcGVlciBsYWJlbCBpZiBmaXJzdCBhc3NvY2lhdGlvbi4gKi9cXG4gXFx0XFx0aWYgKHNlY3VyaXR5X3NjdHBfYXNzb2NfcmVxdWVzdCgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDoyNS4xNjQyNzc1NTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3MjgzMjc3NjcyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIlNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF91bnBhY2tfY29va2llXCIsXG4gICAgXCJzY3RwX3ZlcmlmeV9pbml0XCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgICBcInNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhY2Q2ODI1ZTk4ZDFmYzcxZDdlOTllOWU4OWRjNmJhMzE5NDM1ZDc2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdW4gMjQgMjM6MzA6MjMgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbmluZGV4IDQxOTU4YjhlNTlmZDUzLi44YWRhYzllMGNkNjZiZSAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMTc2MSw2ICsxNzYxLDggQEAgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKnNjdHBfdW5wYWNrX2Nvb2tpZShcbiBcdGJlYXJfY29va2llID0gXHUwMDI2Y29va2llLVx1MDAzZWM7XG4gXG4gXHRjaCA9IChzdHJ1Y3Qgc2N0cF9jaHVua2hkciAqKShiZWFyX2Nvb2tpZSArIDEpO1xuK1x0aWYgKGNoLVx1MDAzZXR5cGUgIT0gU0NUUF9DSURfSU5JVClcbitcdFx0Z290byBtYWxmb3JtZWQ7XG4gXHRjaGxlbiA9IG50b2hzKGNoLVx1MDAzZWxlbmd0aCk7XG4gXHRpZiAoY2hsZW4gXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rKSlcbiBcdFx0Z290byBtYWxmb3JtZWQ7XG5AQCAtMjI5OCw3ICsyMzAwLDggQEAgaW50IHNjdHBfdmVyaWZ5X2luaXQoc3RydWN0IG5ldCAqbmV0LCBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4gXHQgKiBWSU9MQVRJT04gZXJyb3IuICBXZSBidWlsZCB0aGUgRVJST1IgY2h1bmsgaGVyZSBhbmQgbGV0IHRoZSBub3JtYWxcbiBcdCAqIGVycm9yIGhhbmRsaW5nIGNvZGUgYnVpbGQgYW5kIHNlbmQgdGhlIHBhY2tldC5cbiBcdCAqL1xuLVx0aWYgKHBhcmFtLnYgIT0gKHZvaWQgKiljaHVuay1cdTAwM2VjaHVua19lbmQpXG4rXHRpZiAocGFyYW0udiAhPSAodm9pZCAqKXBlZXJfaW5pdCArXG4rXHRcdCAgICAgICBTQ1RQX1BBRDQobnRvaHMocGVlcl9pbml0LVx1MDAzZWNodW5rX2hkci5sZW5ndGgpKSlcbiBcdFx0cmV0dXJuIHNjdHBfcHJvY2Vzc19pbnZfcGFyYW1sZW5ndGgoYXNvYywgcGFyYW0ucCwgY2h1bmssIGVycnApO1xuIFxuIFx0LyogVGhlIG9ubHkgbWlzc2luZyBtYW5kYXRvcnkgcGFyYW0gcG9zc2libGUgdG9kYXkgaXNcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYyBiL25ldC9zY3RwL3NtX3N0YXRlZnVucy5jXG5pbmRleCA4ZTkyMGNlZjA4NThjZi4uZDIzZDkzNWUxMjhlOTYgMTAwNjQ0XG4tLS0gYS9uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuY1xuKysrIGIvbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNcbkBAIC03MDcsMTEgKzcwNywxMiBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0XHRcdFx0IHN0cnVjdCBzY3RwX2NtZF9zZXEgKmNvbW1hbmRzKVxuIHtcbiBcdHN0cnVjdCBzY3RwX3VscGV2ZW50ICpldiwgKmFpX2V2ID0gTlVMTCwgKmF1dGhfZXYgPSBOVUxMO1xuK1x0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XG4gXHRzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpwZWVyX2luaXQ7XG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhcmc7XG4tXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqZXJyX2Noa19wO1xuIFx0c3RydWN0IHNjdHBfY2h1bmsgKnJlcGw7XG4rXHRlbnVtIHNjdHBfY2lkIGNpZDtcbiBcdHN0cnVjdCBzb2NrICpzaztcbiBcdGludCBlcnJvciA9IDA7XG4gXG5AQCAtNzg1LDYgKzc4NiwxOSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcbiBcdFx0fVxuIFx0fVxuIFxuK1x0cGVlcl9pbml0ID0gKHN0cnVjdCBzY3RwX2luaXRfY2h1bmsgKikoY2h1bmstXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XG4rXHRjaWQgPSBwZWVyX2luaXQtXHUwMDNlY2h1bmtfaGRyLnR5cGU7XG4rXHRpZiAoIXNjdHBfc2soc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbitcdCAgICAhc2N0cF92ZXJpZnlfaW5pdChuZXQsIGVwLCBhc29jLCBjaWQsIHBlZXJfaW5pdCwgY2h1bmssXG4rXHRcdFx0ICAgICAgXHUwMDI2ZXJyX2Noa19wKSkge1xuK1x0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuK1x0XHRpZiAoZXJyX2Noa19wKVxuK1x0XHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuK1x0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsIGNvbW1hbmRzKTtcbitcdH1cbitcdGlmIChlcnJfY2hrX3ApXG4rXHRcdHNjdHBfY2h1bmtfZnJlZShlcnJfY2hrX3ApO1xuK1xuIFx0aWYgKHNlY3VyaXR5X3NjdHBfYXNzb2NfcmVxdWVzdChuZXdfYXNvYywgY2h1bmstXHUwMDNlaGVhZF9za2IgPzogY2h1bmstXHUwMDNlc2tiKSkge1xuIFx0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuIFx0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsIGNvbW1hbmRzKTtcbkBAIC03OTgsNyArODEyLDYgQEAgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8xRF9jZShzdHJ1Y3QgbmV0ICpuZXQsXG4gXHQvKiBUaGlzIGlzIGEgYnJhbmQtbmV3IGFzc29jaWF0aW9uLCBzbyB0aGVzZSBhcmUgbm90IHlldCBzaWRlXG4gXHQgKiBlZmZlY3RzLS1pdCBpcyBzYWZlIHRvIHJ1biB0aGVtIGhlcmUuXG4gXHQgKi9cbi1cdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopKGNodW5rLVx1MDAzZXN1YmguY29va2llX2hkciArIDEpO1xuIFx0aWYgKCFzY3RwX3Byb2Nlc3NfaW5pdChuZXdfYXNvYywgY2h1bmssXG4gXHRcdFx0ICAgICAgIFx1MDAyNmNodW5rLVx1MDAzZXN1YmguY29va2llX2hkci1cdTAwM2VjLnBlZXJfYWRkcixcbiBcdFx0XHQgICAgICAgcGVlcl9pbml0LCBHRlBfQVRPTUlDKSlcbkBAIC0yMjE1LDEwICsyMjI4LDEyIEBAIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2soXG4gXHRcdFx0XHRcdHZvaWQgKmFyZyxcbiBcdFx0XHRcdFx0c3RydWN0IHNjdHBfY21kX3NlcSAqY29tbWFuZHMpXG4ge1xuK1x0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcCA9IE5VTEw7XG4gXHRzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqbmV3X2Fzb2M7XG4rXHRzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpwZWVyX2luaXQ7XG4gXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqY2h1bmsgPSBhcmc7XG4gXHRlbnVtIHNjdHBfZGlzcG9zaXRpb24gcmV0dmFsO1xuLVx0c3RydWN0IHNjdHBfY2h1bmsgKmVycl9jaGtfcDtcbitcdGVudW0gc2N0cF9jaWQgY2lkO1xuIFx0aW50IGVycm9yID0gMDtcbiBcdGNoYXIgYWN0aW9uO1xuIFxuQEAgLTIyODcsNiArMjMwMiwyMSBAQCBlbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzJfNF9kdXBjb29rKFxuIFx0c3dpdGNoIChhY3Rpb24pIHtcbiBcdGNhc2UgJ0EnOiAvKiBBc3NvY2lhdGlvbiByZXN0YXJ0LiAqL1xuIFx0Y2FzZSAnQic6IC8qIENvbGxpc2lvbiBjYXNlIEIuICovXG4rXHRcdHBlZXJfaW5pdCA9IChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICopXG4rXHRcdFx0XHQoY2h1bmstXHUwMDNlc3ViaC5jb29raWVfaGRyICsgMSk7XG4rXHRcdGNpZCA9IHBlZXJfaW5pdC1cdTAwM2VjaHVua19oZHIudHlwZTtcbitcdFx0aWYgKCFzY3RwX3NrKGVwLVx1MDAzZWJhc2Uuc2spLVx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcdTAwMjZcdTAwMjZcbitcdFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcbitcdFx0XHRcdCAgICAgIFx1MDAyNmVycl9jaGtfcCkpIHtcbitcdFx0XHRzY3RwX2Fzc29jaWF0aW9uX2ZyZWUobmV3X2Fzb2MpO1xuK1x0XHRcdGlmIChlcnJfY2hrX3ApXG4rXHRcdFx0XHRzY3RwX2NodW5rX2ZyZWUoZXJyX2Noa19wKTtcbitcdFx0XHRyZXR1cm4gc2N0cF9zZl9wZGlzY2FyZChuZXQsIGVwLCBhc29jLCB0eXBlLCBhcmcsXG4rXHRcdFx0XHRcdFx0Y29tbWFuZHMpO1xuK1x0XHR9XG4rXHRcdGlmIChlcnJfY2hrX3ApXG4rXHRcdFx0c2N0cF9jaHVua19mcmVlKGVycl9jaGtfcCk7XG4rXHRcdGZhbGx0aHJvdWdoO1xuIFx0Y2FzZSAnRCc6IC8qIENvbGxpc2lvbiBjYXNlIEQuICovXG4gXHRcdC8qIFVwZGF0ZSBzb2NrZXQgcGVlciBsYWJlbCBpZiBmaXJzdCBhc3NvY2lhdGlvbi4gKi9cbiBcdFx0aWYgKHNlY3VyaXR5X3NjdHBfYXNzb2NfcmVxdWVzdCgoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jLFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6MjUuMTY0Mjc5MDc1WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTE4MjkyMjI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbjogU0NUUCBQYXRjaCBBbmFseXNpcyoqXG5cbk9rYXksIHNvIEkndmUgZ290IGEgcGF0Y2ggaGVyZSB0aGF0J3MgcG9raW5nIGFyb3VuZCBpbiB0aGUgU0NUUCBpbXBsZW1lbnRhdGlvbiwgc3BlY2lmaWNhbGx5IGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgIGFuZCBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaGUgY2hhbmdlcyBzZWVtIHRvIGNlbnRlciBhcm91bmQgYHNjdHBfdmVyaWZ5X2luaXRgIGFuZCBhIGNoZWNrIGZvciBgY2gtXHUwMDNldHlwZSAhPSBTQ1RQX0NJRF9JTklUYC4gUmlnaHQgb2ZmIHRoZSBiYXQsIHRoaXMgc2NyZWFtcyBwb3RlbnRpYWwgZnV6emluZyB0YXJnZXQgdG8gbWUuIEl0J3MgdG91Y2hpbmcgY29yZSBTQ1RQIGZ1bmN0aW9uYWxpdHksIHNvIGFueSB1bmV4cGVjdGVkIGJlaGF2aW9yIHRoZXJlIGNvdWxkIGJlIGludGVyZXN0aW5nLlxuXG5Ob3csIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZXhhY3QgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiBMb29rcyBsaWtlIGluIGBzbV9tYWtlX2NodW5rLmNgLCBpdCdzIGBzY3RwX3VucGFja19jb29raWVgIGFuZCBgc2N0cF92ZXJpZnlfaW5pdGAuIFRoZW4sIGluIGBzbV9zdGF0ZWZ1bnMuY2AsIHRoZSBwYXRjaCBhZmZlY3RzIGBzY3RwX3NmX2RvXzVfMURfY2VgIGFuZCBgc2N0cF9zZl9kb181XzJfNF9kdXBjb29rYC4gVGhhdCdzIGEgc29saWQgbGlzdCB0byBrZWVwIGluIG1pbmQuXG5cblRvIG1ha2Ugc3VyZSBJJ20gdGFyZ2V0aW5nIHRoZSByaWdodCBjb2RlLCBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgc2V0dGluZ3MuIEkgYWxyZWFkeSBrbm93IHRoYXQgYElQX1NDVFBgIGlzIHRoZSBtYWluIGNvbmZpZyBvcHRpb24gZm9yIFNDVFAsIGJ1dCBJIG5lZWQgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIG9mIHRoZSBleGFjdCBLY29uZmlnIG5hbWUgdG8gdXNlIGZvciBidWlsZGluZyB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4gSSdsbCBmaXJlIHVwIGBncmVwcGVyYCBhbmQgZG91YmxlLWNoZWNrIHRvIG5haWwgZG93biB0aGUgZXhhY3QgY29uZmlndXJhdGlvbiBzZXR0aW5nIGZvciB0aGUgZnV6emVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzc1LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjM0LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6MzAuMzQ3MjAyOTM0WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU0OTI3NDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TQ1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjMwLjQwMjEzNTUzM1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzQzMjI0NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgSVBfU0NUUGAgQ29uZmlndXJhdGlvbiBhbmQgUmVsYXRlZCBDb2RlKipcblxuUmlnaHQsIHNvIHRoZSBjb3JlIGNvbmZpZ3VyYXRpb24gcG9pbnQgd2UncmUgZGVhbGluZyB3aXRoIGlzIGBJUF9TQ1RQYC4gTXkgZmlyc3QgdGhvdWdodCBpcyBhbHdheXMgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgdGhlIG9ubHkgcmVsZXZhbnQgcGllY2UgYW5kIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgc2V0dGluZ3MgdGhhdCBtaWdodCBiZSBkZXBlbmRlbnQgb24gaXQsIHdoaWNoIGNvdWxkIGFmZmVjdCBpdHMgYmVoYXZpb3Igb3IgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZXN0IG9mIHRoZSBzdGFjay5cblxuSSBuZWVkIHRvIGRpZyBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiwgYW5kIEkga25vdyBmcm9tIGV4cGVyaWVuY2UgdGhhdCB0aGUgbWFpbiBsb2dpYyBvZnRlbiByZXNpZGVzIGluIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgIGFuZCBgbmV0L3NjdHAvc21fc3RhdGVmdW5zLmNgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IHBva2luZyBhcm91bmQuIEknbGwgbmVlZCB0byBsb29rIHZlcnkgY2xvc2VseSwgYmVjYXVzZSB0aGUgY29kZSBtaWdodCBub3QgYmUgb2J2aW91c2x5IGltcGFjdGVkIGJ5IHRoZSBjb25maWcuXG5cbk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGAjaWZkZWZgIGRpcmVjdGl2ZXMgYXJvdW5kIHRoZSBjb2RlIEknbSBsb29raW5nIGF0LiBJJ2xsIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBleHRlbnQgb2YgaXRzIGluZmx1ZW5jZSBhbmQgaG93IHRoZSBjb2RlIGNoYW5nZXMgZGVwZW5kaW5nIG9uIHRoZSBjb25maWd1cmF0aW9uLiBBbnkgdXNlIG9mIGAjaWZkZWYgSVBfU0NUUGAgaXMgd2hhdCBJJ20gZm9jdXNlZCBvbiwgYW5kIGlmIGl0J3MgdGhlcmUgSSdsbCBiZSBhYmxlIHRvIHRlbGwgaG93IGl0IGlzIGltcGFjdGVkIGFuZCBpZiBpdCdzIHRoZSBvbmx5IGltcGFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAzOCwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjMzLjg3NjQ2MDIxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTk2MDIxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTYzOT1zdGF0aWMgYm9vbCBzY3RwX2F1dGhfY2h1bmtfdmVyaWZ5KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNjdHBfY2h1bmsgKmNodW5rLFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNzAxLSAqL1xcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjcwMjplbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy03MDMtXFx0XFx0XFx0XFx0XFx0IGNvbnN0IHN0cnVjdCBzY3RwX2VuZHBvaW50ICplcCxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYz02NT1jb25zdCBzdHJ1Y3Qgc2N0cF9zbV90YWJsZV9lbnRyeSAqc2N0cF9zbV9sb29rdXBfZXZlbnQoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtMjgzLVxcdC8qIFNDVFBfU1RBVEVfQ0xPU0VEICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6Mjg0OlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fNV8xRF9jZSksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtMjg1LVxcdC8qIFNDVFBfU1RBVEVfQ09PS0lFX1dBSVQgKi8gXFxcXFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDozMy45MzI0MjY3NTRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzc5NDQ2NDE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTQ1RQIENvcmUgRnVuY3Rpb25zIGZvciBGb2N1cyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZm9jdXMgcmlnaHQgbm93IGlzIG9uIHVuZGVyc3RhbmRpbmcgdGhlIG1vZGlmaWNhdGlvbnMgdG8gdGhlc2Ugc3BlY2lmaWMgU0NUUCBmdW5jdGlvbnM6IGBzY3RwX3VucGFja19jb29raWVgLCBgc2N0cF92ZXJpZnlfaW5pdGAsIGBzY3RwX3NmX2RvXzVfMURfY2VgLCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AuIFdlIGtub3cgdGhlc2UgYXJlIGRlZXAgaW5zaWRlIHRoZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIGNydWNpYWwgZm9yIGNodW5rIHByb2Nlc3NpbmcuIFRoZXnigJlyZSBhY3RpdmF0ZWQgd2hlbiBTQ1RQIGlzIGVuYWJsZWQsIGFzIHdlJ2QgZXhwZWN0LCBjb250cm9sbGVkIGJ5IGBDT05GSUdfSVBfU0NUUGAuXG5cbkkgbmVlZCB0byBjb25maXJtIHdoZXRoZXIgYHNjdHBfc2ZfZG9fNV8xRF9jZWAgYW5kIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgIGFyZSB0cnVseSBcImhvdCBwYXRoXCIgZnVuY3Rpb25zLiBUaGV5IGhhbmRsZSBDT09LSUUgRUNITyBhbmQgZHVwbGljYXRlIENPT0tJRSBFQ0hPIGNodW5rcyByZXNwZWN0aXZlbHkuIFRoZXNlIGFyZSBwcmltYXJpbHkgaW52b2x2ZWQgZHVyaW5nIHRoZSBpbml0aWFsIGFzc29jaWF0aW9uIHNldHVwLCB0aGF0IGhhbmRzaGFrZSBwcm9jZXNzLCBzbyB0aGV5J3JlIG5vdCBnb2luZyB0byBiZSBoYW5kbGluZyBldmVyeSBkYXRhIHBhY2tldCBsaWtlIHlvdXIgc3RhbmRhcmQgZGF0YSBjaHVuayBwcm9jZXNzaW5nIHdvdWxkLiBTdGlsbCwgdGhleSBhcmUgcmVsYXRpdmVseSBjb21tb24gZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCwgYW5kIHRoZXnigJlyZSBzcGVjaWZpYyBlbm91Z2ggdG8gYmUgY29uc2lkZXJlZCBnb29kIGZvY3VzIHN5bWJvbHMuIFNvIHRoYXQncyB0aGUgYW5nbGUgSSdtIHRha2luZy4gVGhlIG90aGVyIHR3bywgYHNjdHBfdW5wYWNrX2Nvb2tpZWAgYW5kIGBzY3RwX3ZlcmlmeV9pbml0YCwgYWxzbyBzZWVtIGxpa2Ugc29saWQgdGFyZ2V0cyBmb3IgaW4tZGVwdGggZXhhbWluYXRpb24uXG5cbk5vdywgbGV0J3MgZGlnIGEgYml0IGRlZXBlciBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHNpZGUuIEkgc2VlIGEgY2hlY2sgcmVsYXRlZCB0byBgY29va2llX2F1dGhfZW5hYmxlYCBpbiB0aGUgcGF0Y2g6IGAhc2N0cF9zayhzayktXHUwMDNlY29va2llX2F1dGhfZW5hYmxlYC4gSSdtIGdvaW5nIHRvIGxvb2sgZm9yIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiB0aGF0J3MgbGlua2VkIHRvIHRoaXMuIEl0J3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgaXMgY29udHJvbGxlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NDcxNywiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDozOS4zMTE4NzUyMTlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3Nzk0Mjg0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvb2tpZV9hdXRoX2VuYWJsZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvcHJvdG9jb2wuYz0xMjg4PXN0YXRpYyBpbnQgX19uZXRfaW5pdCBzY3RwX2RlZmF1bHRzX2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbi0tXFxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzEzLVxcdC8qIFdoZXRoZXIgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQoMSkgb3Igbm90KDApICovXFxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMzE0OlxcdG5ldC1cXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPVxcbm5ldC9zY3RwL3Byb3RvY29sLmMtMTMxNS1cXHRcXHQhSVNfRU5BQkxFRChDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkUpO1xcbi0tXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTE2NDU9c3RhdGljIHN0cnVjdCBzY3RwX2Nvb2tpZV9wYXJhbSAqc2N0cF9wYWNrX2Nvb2tpZShcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0xNzExLVxcdC8qIFNpZ24gdGhlIGNvb2tpZSwgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3MTI6XFx0aWYgKHNjdHBfc2soZXAtXFx1MDAzZWJhc2Uuc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUpIHtcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTcxMy1cXHRcXHRzdGF0aWNfYXNzZXJ0KHNpemVvZihjb29raWUtXFx1MDAzZW1hYykgPT0gU0hBMjU2X0RJR0VTVF9TSVpFKTtcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0xNzIyPXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICpzY3RwX3VucGFja19jb29raWUoXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTc3NC1cXHQvKiBWZXJpZnkgdGhlIGNvb2tpZSdzIE1BQywgaWYgY29va2llIGF1dGhlbnRpY2F0aW9uIGlzIGVuYWJsZWQuICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjE3NzU6XFx0aWYgKHNjdHBfc2soZXAtXFx1MDAzZWJhc2Uuc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUpIHtcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMTc3Ni1cXHRcXHR1OCBtYWNbU0hBMjU2X0RJR0VTVF9TSVpFXTtcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTcwMj1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb181XzFEX2NlKHN0cnVjdCBuZXQgKm5ldCxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTc5MC1cXHRjaWQgPSBwZWVyX2luaXQtXFx1MDAzZWNodW5rX2hkci50eXBlO1xcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjc5MTpcXHRpZiAoIXNjdHBfc2soc2spLVxcdTAwM2Vjb29raWVfYXV0aF9lbmFibGUgXFx1MDAyNlxcdTAwMjZcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy03OTItXFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTIyMjM9ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29vayhcXG4tLVxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIzMDctXFx0XFx0Y2lkID0gcGVlcl9pbml0LVxcdTAwM2VjaHVua19oZHIudHlwZTtcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzoyMzA4OlxcdFxcdGlmICghc2N0cF9zayhlcC1cXHUwMDNlYmFzZS5zayktXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTIzMDktXFx0XFx0ICAgICFzY3RwX3ZlcmlmeV9pbml0KG5ldCwgZXAsIGFzb2MsIGNpZCwgcGVlcl9pbml0LCBjaHVuayxcXG4tLVxcbm5ldC9zY3RwL3NvY2tldC5jPTUwMjA9c3RhdGljIGludCBzY3RwX2luaXRfc29jayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQvc2N0cC9zb2NrZXQuYy01MDU0LVxcbm5ldC9zY3RwL3NvY2tldC5jOjUwNTU6XFx0c3AtXFx1MDAzZWNvb2tpZV9hdXRoX2VuYWJsZSA9IG5ldC1cXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGU7XFxubmV0L3NjdHAvc29ja2V0LmMtNTA1Ni1cXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jPTk1PXN0YXRpYyBzdHJ1Y3QgY3RsX3RhYmxlIHNjdHBfbmV0X3RhYmxlW10gPSB7XFxuLS1cXG5uZXQvc2N0cC9zeXNjdGwuYy0xNzYtXFx0XFx0LnByb2NuYW1lXFx0PSBcXFwiY29va2llX2htYWNfYWxnXFxcIixcXG5uZXQvc2N0cC9zeXNjdGwuYzoxNzc6XFx0XFx0LmRhdGFcXHRcXHQ9IFxcdTAwMjZpbml0X25ldC5zY3RwLmNvb2tpZV9hdXRoX2VuYWJsZSxcXG5uZXQvc2N0cC9zeXNjdGwuYy0xNzgtXFx0XFx0Lm1heGxlblxcdFxcdD0gOCxcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jPTM4Nz1zdGF0aWMgaW50IHByb2Nfc2N0cF9kb19obWFjX2FsZyhjb25zdCBzdHJ1Y3QgY3RsX3RhYmxlICpjdGwsIGludCB3cml0ZSxcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jLTM5MC1cXHRzdHJ1Y3QgbmV0ICpuZXQgPSBjb250YWluZXJfb2YoY3RsLVxcdTAwM2VkYXRhLCBzdHJ1Y3QgbmV0LFxcbm5ldC9zY3RwL3N5c2N0bC5jOjM5MTpcXHRcXHRcXHRcXHQgICAgICAgc2N0cC5jb29raWVfYXV0aF9lbmFibGUpO1xcbm5ldC9zY3RwL3N5c2N0bC5jLTM5Mi1cXHRzdHJ1Y3QgY3RsX3RhYmxlIHRibDtcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jLTQwNC1cXHRcXHRpZiAoIXN0cmNtcCh0bXAsIFxcXCJzaGEyNTZcXFwiKSkge1xcbm5ldC9zY3RwL3N5c2N0bC5jOjQwNTpcXHRcXHRcXHRuZXQtXFx1MDAzZXNjdHAuY29va2llX2F1dGhfZW5hYmxlID0gMTtcXG5uZXQvc2N0cC9zeXNjdGwuYy00MDYtXFx0XFx0XFx0cmV0dXJuIDA7XFxuLS1cXG5uZXQvc2N0cC9zeXNjdGwuYy00MDgtXFx0XFx0aWYgKCFzdHJjbXAodG1wLCBcXFwibm9uZVxcXCIpKSB7XFxubmV0L3NjdHAvc3lzY3RsLmM6NDA5OlxcdFxcdFxcdG5ldC1cXHUwMDNlc2N0cC5jb29raWVfYXV0aF9lbmFibGUgPSAwO1xcbm5ldC9zY3RwL3N5c2N0bC5jLTQxMC1cXHRcXHRcXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC9zY3RwL3N5c2N0bC5jLTQxMy1cXHR9XFxubmV0L3NjdHAvc3lzY3RsLmM6NDE0OlxcdGlmIChuZXQtXFx1MDAzZXNjdHAuY29va2llX2F1dGhfZW5hYmxlKVxcbm5ldC9zY3RwL3N5c2N0bC5jLTQxNS1cXHRcXHR0YmwuZGF0YSA9IChjaGFyICopXFxcInNoYTI1NlxcXCI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjM5LjYyOTY3ODIwM1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MzY5MzQ1MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgY29va2llX2F1dGhfZW5hYmxlYCBMb2dpYyoqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gSXQgbG9va3MgbGlrZSB0aGUgYGNvb2tpZV9hdXRoX2VuYWJsZWAgZmxhZyBpcyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIEFuZCBpdCdzIGRpcmVjdGx5IHRpZWQgdG8gYENPTkZJR19TQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAuIElmICp0aGF0KiBpcyAqbm90KiBlbmFibGVkLCBgY29va2llX2F1dGhfZW5hYmxlYCBpcyBzZXQgdG8gMS4gR290IGl0LiBOb3csIHRoZSBwYXRjaCBmb2N1c2VzIG9uIGNhc2VzIHdoZXJlIHdlIGhhdmUgYCFzY3RwX3NrKHNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGVgLiBUaGlzIGlzIHRoZSBpbXBvcnRhbnQgcGFydCFcblxuU28sIHRvIGFjdHVhbGx5IHRyaWdnZXIgdGhlIG5ldyBsb2dpYyBpbiBgc2N0cF9zZl9kb181XzFEX2NlYCBhbmQgYHNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va2AsIHdlIG5lZWQgYGNvb2tpZV9hdXRoX2VuYWJsZWAgdG8gYmUgMC4gVGhhdCdzIHRoZSBjb25kaXRpb24gdGhhdCdzIGJlaW5nIGNoZWNrZWQuIFRoaXMgaW1wbGllcyB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSBgQ09ORklHX1NDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCAqaXMqIGVuYWJsZWQgZHVyaW5nIHRoZSBidWlsZC4gQWx0ZXJuYXRpdmVseSwgaXQgY2FuIGJlIGFkanVzdGVkIHZpYSBzeXNjdGwsIHdoaWNoIGlzIGxlc3MgaWRlYWwgZm9yIG91ciBwdXJwb3Nlcy5cblxuUmlnaHQsIHNvIHRvIGNvbmZpcm0gdGhpcywgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIGlzIHRoZSBjb3JyZWN0IG5hbWUuIEp1c3QgdG8gbWFrZSBzdXJlIG15IHJlYXNvbmluZyBpcyBzcG90IG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2ODA3LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTg1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjQ0LjE2NjYxNDU5NFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ0MDcxOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWc9NjI9Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG4tLVxcbm5ldC9zY3RwL0tjb25maWctNjQtXFxubmV0L3NjdHAvS2NvbmZpZzo2NTpjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG5uZXQvc2N0cC9LY29uZmlnLTY2LVxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuLS1cXG5uZXQvc2N0cC9wcm90b2NvbC5jPTEyODg9c3RhdGljIGludCBfX25ldF9pbml0IHNjdHBfZGVmYXVsdHNfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQvc2N0cC9wcm90b2NvbC5jLTEzMTQtXFx0bmV0LVxcdTAwM2VzY3RwLmNvb2tpZV9hdXRoX2VuYWJsZSA9XFxubmV0L3NjdHAvcHJvdG9jb2wuYzoxMzE1OlxcdFxcdCFJU19FTkFCTEVEKENPTkZJR19TQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORSk7XFxubmV0L3NjdHAvcHJvdG9jb2wuYy0xMzE2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yNFQyMzozMDo0NC4yMjEwMzE1NDNaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzczMDExNjgwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldyBTQ1RQIFBhdGNoIGZvciBUaG9yb3VnaCBUZXN0aW5nKipcblxuT2theSwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIFNDVFAgcGF0Y2gsIGFuZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGFyZSBzdGFydGluZyB0byBtYWtlIG1vcmUgc2Vuc2UuIE15IGluaXRpYWwgdGhvdWdodCB3YXMgdGhhdCBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIHdhcyB0aGUga2V5LCBidXQgbm93IEkgc2VlIGl0J3MgbW9yZSBudWFuY2VkLiBJZiB3ZSBlbmFibGUgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCwgYGNvb2tpZV9hdXRoX2VuYWJsZWAgZGVmYXVsdHMgdG8gMCwgd2hpY2ggbWVhbnMgdGhlIG5ldyBgc2N0cF92ZXJpZnlfaW5pdGAgY2hlY2tzIGFjdHVhbGx5ICpydW4qLiAgSWYgYGNvb2tpZV9hdXRoX2VuYWJsZWAgaXMgc2V0IHRvIDEsIHRob3NlIGNoZWNrcyBnZXQgc2tpcHBlZC4gU28sIHdoaWxlIHNldHRpbmcgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYCBpcyBiZW5lZmljaWFsIGZvciBlbnN1cmluZyB3ZSBoaXQgdGhlIHBhdGgsIGxldHRpbmcgc3l6a2FsbGVyIHNldCB0aGUgc3lzY3RsIGlzIGFsc28gYSB2aWFibGUgYXBwcm9hY2gsIGJ1dCBwcm92aWRpbmcgdGhlIGNvbmZpZyBpcyBkZWZpbml0ZWx5IHRoZSBzYWZlciBvcHRpb24uXG5cbkkgcXVpY2tseSByZWFsaXplZCB0aGUgbW9yZSBjZW50cmFsIGNvbmZpZyBpcyBgSVBfU0NUUGAuIEdvaW5nIGRlZXBlciwgSSBuZWVkIHRvIGNoZWNrIGBzY3RwX3ZlcmlmeV9pbml0YCBpbiBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gVGhlIHBhdGNoIGNoYW5nZXMgdGhhdCBjb2RlLCBhbmQgaXQgYXBwZWFycyB0aGUgY2hhbmdlcyBhcmUgKmFsd2F5cyogZXhlY3V0ZWQgcmVnYXJkbGVzcyBvZiBgY29va2llX2F1dGhfZW5hYmxlYCdzIHZhbHVlLiBTYW1lIHN0b3J5IHdpdGggYHNjdHBfdW5wYWNrX2Nvb2tpZWAuIFRoZSBhZGRpdGlvbmFsIGNoZWNrIHdpdGhpbiBgc2N0cF91bnBhY2tfY29va2llYCBpcyByZWFjaGVkIHJlZ2FyZGxlc3Mgb2YgdGhlIGF1dGhlbnRpY2F0aW9uIHNldHRpbmcuIFRoYXQgbWVhbnMgdGhlIHBhdGNoIGhhcyBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBhcmUgcmVhY2hhYmxlLCB3aGljaCBpcyBleGFjdGx5IHdoYXQgSSB3YW50ZWQgdG8gY29uZmlybS5cblxuU28sIHRoZSBjcml0aWNhbCBjb25maWcgdG8gZW5hYmxlIGZvciB0ZXN0aW5nIGlzIGBJUF9TQ1RQYCwgbm8gcXVlc3Rpb24uIFRoZW4sIGFkZGluZyBgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVgIHdpbGwgZ3VhcmFudGVlIHRoYXQgd2UgcmVhY2ggdGhlIG5ldyBjb2RlIGluIGBzY3RwX3NmX2RvXzVfMURfY2VgIGFuZCBgc2N0cF9zZl9kb181XzJfNF9kdXBjb29rYC5cblxuVGhlcmVmb3JlLCBJIHRoaW5rIHRoZSBmb2N1cyBzeW1ib2xzIEkgbmVlZCB0byB0YXJnZXQgYXJlOlxuXG4qICAgYHNjdHBfdW5wYWNrX2Nvb2tpZWBcbiogICBgc2N0cF92ZXJpZnlfaW5pdGBcbiogICBgc2N0cF9zZl9kb181XzFEX2NlYFxuKiAgIGBzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tgXG5cblRoZXNlIGxvb2sgZ29vZCB0byBtZS4gVGhleSdyZSBub3QgdGhlIHN1cGVyIGhvdCBkYXRhIHRyYW5zbWlzc2lvbiBwYXRocywgd2hpY2ggaXMgZmluZSwgYXMgdGhleSBjb25jZXJuIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCBhbmQgY2h1bmsgdmFsaWRhdGlvbi4gSSBhbSBjb25maWRlbnQgaW4gbXkgYXNzZXNzbWVudCwgYnV0IHdpbGwgbmVlZCB0byB2ZXJpZnkgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9ucyB0aGF0IGNvdWxkIGluZmx1ZW5jZSB0aGlzIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc1MzcsIk91dHB1dFRva2VucyI6MjYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MjMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6NTEuOTUxMTUwMTUyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTM4NDU4NDc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TQ1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9LY29uZmlnLTUtXFxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxcbm5ldC9zY3RwL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiVGhlIFNDVFAgUHJvdG9jb2xcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjU0LjA4OTYxMzY1WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzOTkwNjI2NDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIFNDVFAgQ29va2llIEhNQUMgQ29uZmlndXJhdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IGBJUF9TQ1RQYCBhbmQgc3BlY2lmaWNhbGx5IGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGltcGxpY2F0aW9ucyBvZiBlbmFibGluZyB0aGlzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0aGF0IGl0IHNob3VsZCBkaXNhYmxlIEhNQUMgZm9yIGNvb2tpZXMgYnkgZGVmYXVsdCwgd2hpY2ggaXMgcHJlY2lzZWx5IHRoZSBiZWhhdmlvciBJJ20gdHJ5aW5nIHRvIGFjaGlldmUgdG8gdHJpZ2dlciB0aGUgYCFzY3RwX3NrKHNrKS1cdTAwM2Vjb29raWVfYXV0aF9lbmFibGVgIGNvZGUgcGF0aC4gTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gVGhlcmVmb3JlLCBJIHdpbGwgY2hlY2sgdGhlIGBuZXQvc2N0cC9LY29uZmlnYCBmaWxlLiBUaGlzIHNob3VsZCBjb250YWluIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGRldGFpbHMgZm9yIGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2ODYsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMzEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzA6NTcuNDg4Njc3ODQ0WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY1NTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9zY3RwL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNTAsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNTA6XFx0XFx0ICBJZiB1bnN1cmUsIHNheSBOXFxuICA1MTpcXHRcXG4gIDUyOlxcdGNob2ljZVxcbiAgNTM6XFx0XFx0cHJvbXB0IFxcXCJEZWZhdWx0IFNDVFAgY29va2llIGF1dGhlbnRpY2F0aW9uIG1ldGhvZFxcXCJcXG4gIDU0OlxcdFxcdGRlZmF1bHQgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX1NIQTI1NlxcbiAgNTU6XFx0XFx0aGVscFxcbiAgNTY6XFx0XFx0ICBUaGlzIG9wdGlvbiBzZXRzIHRoZSBkZWZhdWx0IFNDVFAgY29va2llIGF1dGhlbnRpY2F0aW9uIG1ldGhvZCwgZm9yXFxuICA1NzpcXHRcXHQgIHdoZW4gYSBtZXRob2QgaGFzbid0IGJlZW4gZXhwbGljaXRseSBzZWxlY3RlZCB2aWEgdGhlXFxuICA1ODpcXHRcXHQgIG5ldC5zY3RwLmNvb2tpZV9obWFjX2FsZyBzeXNjdGwuXFxuICA1OTpcXHRcXG4gIDYwOlxcdFxcdCAgSWYgdW5zdXJlLCBjaG9vc2UgdGhlIGRlZmF1bHQgKEhNQUMtU0hBMjU2KS5cXG4gIDYxOlxcdFxcbiAgNjI6XFx0Y29uZmlnIFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19TSEEyNTZcXG4gIDYzOlxcdFxcdGJvb2wgXFxcIkhNQUMtU0hBMjU2XFxcIlxcbiAgNjQ6XFx0XFxuICA2NTpcXHRjb25maWcgU0NUUF9ERUZBVUxUX0NPT0tJRV9ITUFDX05PTkVcXG4gIDY2OlxcdFxcdGJvb2wgXFxcIk5vbmVcXFwiXFxuICA2NzpcXHRcXG4gIDY4OlxcdGVuZGNob2ljZVxcbiAgNjk6XFx0XFxuICA3MDpcXHRjb25maWcgSU5FVF9TQ1RQX0RJQUdcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gSU5FVF9ESUFHXFxuICA3MjpcXHRcXHRkZWZfdHJpc3RhdGUgSU5FVF9ESUFHXFxuICA3MzpcXHRcXG4gIDc0OlxcdFxcbiAgNzU6XFx0ZW5kaWYgIyBJUF9TQ1RQXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI0VDIzOjMwOjU3LjQ4ODc0NDc3M1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODc4NTQxODA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNDVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGBTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORWAgKmlzKiBhIGxlZ2l0aW1hdGUgY29uZmlndXJhdGlvbiBvcHRpb24uIExldCdzIHNlZSwgdGhlIHJlbGV2YW50IGNvbmZpZ3MgYXJlIGBJUF9TQ1RQYCBhbmQgYFNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FYC5cblxuVGhpcyBwYXRjaCBpcyBkaWdnaW5nIGludG8gdGhlIGhlYXJ0IG9mIFNDVFAgY2h1bmsgaGFuZGxpbmcgYW5kIHZhbGlkYXRpb24uIFdlJ3JlIHNwZWNpZmljYWxseSB0YWxraW5nIGFib3V0IENPT0tJRSBFQ0hPIGFuZCBJTklUIGNodW5rcywgd2hpY2ggYXJlIGNyaXRpY2FsIGNvbXBvbmVudHMgb2YgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlIGNoYW5nZXMgaW52b2x2ZSBhZGRpbmcgc2FmZWd1YXJkcyBhZ2FpbnN0IG1hbGZvcm1lZCBjaHVua3Mg4oCTIGVuc3VyaW5nIHRoYXQgdGhlIHN0YXRlIG1hY2hpbmUgZG9lc24ndCBnZXQgdHJpcHBlZCB1cCBieSBnYXJiYWdlIGRhdGEg4oCTIGFuZCBpbXBsZW1lbnRpbmcgbmV3IHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgdGhlIGVzdGFibGlzaG1lbnQgcHJvY2Vzcy5cblxuRnVuY3Rpb25hbGx5LCB0aGlzIG1lYW5zIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBpcyBiZWluZyB0d2Vha2VkLiBUaGlzIGlzIGEgcmVkIGZsYWcgdGhhdCBkZW1hbmRzIHJpZ29yb3VzIGZ1enppbmchIEkgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGVzZSBjaGFuZ2VzIGRvbid0IGludHJvZHVjZSByZWdyZXNzaW9ucyBvciwgZXZlbiB3b3JzZSwgY3JlYXRlIG5ldyB2dWxuZXJhYmlsaXRpZXMgYnkgbWlzLWhhbmRsaW5nIHNvbWUgb2YgdGhlc2UgZWRnZSBjYXNlcy4gV2UgbmVlZCB0byBoaXQgdGhpcyB3aXRoIGV2ZXJ5dGhpbmcgd2UndmUgZ290LiBMZXQncyB1c2UgYHNldC1yZXN1bHRzYCB0byBrZWVwIHRyYWNrIG9mIHRoaXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzMzgsIk91dHB1dFRva2VucyI6MTY3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAzLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjRUMjM6MzE6MDIuMzY3Mjg5MDU4WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODAyNjE3MzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIlNDVFBfREVGQVVMVF9DT09LSUVfSE1BQ19OT05FXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF91bnBhY2tfY29va2llXCIsXG4gICAgXCJzY3RwX3ZlcmlmeV9pbml0XCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMURfY2VcIixcbiAgICBcInNjdHBfc2ZfZG9fNV8yXzRfZHVwY29va1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIFNDVFAgY2h1bmsgcHJvY2Vzc2luZyBhbmQgdmFsaWRhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGZvciBDT09LSUUgRUNITyBhbmQgSU5JVCBjaHVua3MuIEl0IGFkZHMgbmV3IGNoZWNrcyB0byBwcmV2ZW50IG1hbGZvcm1lZCBjaHVua3MgZnJvbSBiZWluZyBwcm9jZXNzZWQgYW5kIGFkZHMgdmVyaWZpY2F0aW9uIHN0ZXBzIGR1cmluZyBhc3NvY2lhdGlvbiBlc3RhYmxpc2htZW50LiBUaGVzZSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIGluIHRoZSBjb3JlIFNDVFAgc3RhdGUgbWFjaGluZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCIsXG4gICAgXCJTQ1RQX0RFRkFVTFRfQ09PS0lFX0hNQUNfTk9ORVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfdW5wYWNrX2Nvb2tpZVwiLFxuICAgIFwic2N0cF92ZXJpZnlfaW5pdFwiLFxuICAgIFwic2N0cF9zZl9kb181XzFEX2NlXCIsXG4gICAgXCJzY3RwX3NmX2RvXzVfMl80X2R1cGNvb2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBTQ1RQIGNodW5rIHByb2Nlc3NpbmcgYW5kIHZhbGlkYXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBmb3IgQ09PS0lFIEVDSE8gYW5kIElOSVQgY2h1bmtzLiBJdCBhZGRzIG5ldyBjaGVja3MgdG8gcHJldmVudCBtYWxmb3JtZWQgY2h1bmtzIGZyb20gYmVpbmcgcHJvY2Vzc2VkIGFuZCBhZGRzIHZlcmlmaWNhdGlvbiBzdGVwcyBkdXJpbmcgYXNzb2NpYXRpb24gZXN0YWJsaXNobWVudC4gVGhlc2UgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGUgY29yZSBTQ1RQIHN0YXRlIG1hY2hpbmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[1] Phase: Succeeded StartedAt: 2026-06-24 23:31:14 +0000 UTC FinishedAt: 2026-06-24 23:31:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-24 23:31:14 +0000 UTC FinishedAt: 2026-06-24 23:31:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2] Phase: Succeeded StartedAt: 2026-06-24 23:31:14 +0000 UTC FinishedAt: 2026-06-25 03:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:31:14 +0000 UTC FinishedAt: 2026-06-25 03:19:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:31:14 +0000 UTC FinishedAt: 2026-06-24 23:31:24 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:31:14 +0000 UTC FinishedAt: 2026-06-24 23:31:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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-workflowmdtxs/series-workflowmdtxs-convert-artifact-979117236/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:31:24 +0000 UTC FinishedAt: 2026-06-24 23:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:31:24 +0000 UTC FinishedAt: 2026-06-24 23:52:03 +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:*865bc153-2f64-4d71-a22b-1c0575aefd68,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-workflowmdtxs/series-workflowmdtxs-convert-artifact-979117236/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": "8da6ca5a-7981-4574-97a4-5607322d29d7", "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-workflowmdtxs/series-workflowmdtxs-build-action-2529155762/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:31:24 +0000 UTC FinishedAt: 2026-06-24 23:51:53 +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:*865bc153-2f64-4d71-a22b-1c0575aefd68,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-workflowmdtxs/series-workflowmdtxs-convert-artifact-979117236/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": "8da6ca5a-7981-4574-97a4-5607322d29d7", "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-workflowmdtxs/series-workflowmdtxs-build-action-2529155762/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:52:03 +0000 UTC FinishedAt: 2026-06-24 23:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:52:03 +0000 UTC FinishedAt: 2026-06-24 23:52:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:52:03 +0000 UTC FinishedAt: 2026-06-24 23:52:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:52:03 +0000 UTC FinishedAt: 2026-06-24 23:52:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-workflowmdtxs/series-workflowmdtxs-convert-artifact-3159648115/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:52:13 +0000 UTC FinishedAt: 2026-06-24 23:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:52:13 +0000 UTC FinishedAt: 2026-06-24 23:53:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8da6ca5a-7981-4574-97a4-5607322d29d7,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-workflowmdtxs/series-workflowmdtxs-build-action-2529155762/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-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:54:04 +0000 UTC FinishedAt: 2026-06-24 23:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:54:04 +0000 UTC FinishedAt: 2026-06-24 23:54:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:54:04 +0000 UTC FinishedAt: 2026-06-25 00:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:54:04 +0000 UTC FinishedAt: 2026-06-25 00:15:02 +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:*865bc153-2f64-4d71-a22b-1c0575aefd68,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-workflowmdtxs/series-workflowmdtxs-convert-artifact-3159648115/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": "8c21a2fd-124c-4d03-9bc3-30f6c5486ff6", "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-workflowmdtxs/series-workflowmdtxs-build-action-561717031/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-24 23:54:04 +0000 UTC FinishedAt: 2026-06-25 00:14:52 +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:*865bc153-2f64-4d71-a22b-1c0575aefd68,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-workflowmdtxs/series-workflowmdtxs-convert-artifact-3159648115/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": "8c21a2fd-124c-4d03-9bc3-30f6c5486ff6", "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-workflowmdtxs/series-workflowmdtxs-build-action-561717031/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:15:02 +0000 UTC FinishedAt: 2026-06-25 00:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:15:02 +0000 UTC FinishedAt: 2026-06-25 00:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:15:02 +0000 UTC FinishedAt: 2026-06-25 00:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:15:02 +0000 UTC FinishedAt: 2026-06-25 00:17:54 +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:*8c21a2fd-124c-4d03-9bc3-30f6c5486ff6,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-workflowmdtxs/series-workflowmdtxs-build-action-561717031/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-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 03:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 03:19:54 +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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"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:*8da6ca5a-7981-4574-97a4-5607322d29d7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c21a2fd-124c-4d03-9bc3-30f6c5486ff6,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-workflowmdtxs/series-workflowmdtxs-build-action-2529155762/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-workflowmdtxs/series-workflowmdtxs-build-action-561717031/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 00:18:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 00:18:08 +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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"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-workflowmdtxs/series-workflowmdtxs-convert-artifact-3734212972/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 00:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 00:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:04 +0000 UTC FinishedAt: 2026-06-25 00:18:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:14 +0000 UTC FinishedAt: 2026-06-25 03:19:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowmdtxs[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"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":["sctp_unpack_cookie","sctp_verify_init","sctp_sf_do_5_1D_ce","sctp_sf_do_5_2_4_dupcook"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"d87363b0edfc7504ff2b144fe4cdd8154f90f42e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP","SCTP_DEFAULT_COOKIE_HMAC_NONE"],"series_id":"741f8974-d6ca-4997-9532-e95451fb5a24","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-06-25 00:18:14 +0000 UTC FinishedAt: 2026-06-25 03:19:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*8da6ca5a-7981-4574-97a4-5607322d29d7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*8c21a2fd-124c-4d03-9bc3-30f6c5486ff6,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-workflowmdtxs/series-workflowmdtxs-build-action-2529155762/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-workflowmdtxs/series-workflowmdtxs-build-action-561717031/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-workflowmdtxs/series-workflowmdtxs-convert-artifact-3734212972/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,}