Name: series-workflowzdntt Phase: Succeeded StartedAt: 2026-08-15 09:04:13 +0000 UTC FinishedAt: 2026-08-15 13:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[0] Phase: Succeeded StartedAt: 2026-08-15 09:04:13 +0000 UTC FinishedAt: 2026-08-15 09:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[0].run-triage Phase: Succeeded StartedAt: 2026-08-15 09:04:13 +0000 UTC FinishedAt: 2026-08-15 09:31:18 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "5b01c533-f005-4dab-9b72-e3a0be88850e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rt6_dump_route", "inet6_dump_fib", "fib6_dump_node" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDZfZHVtcF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7LAogICAgJiMzNDtmaWI2X2R1bXBfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTE5NTBhODY3MGQ5ZTFlYmQyZTczMzVmNTIwZWI5YzM5NDEzYzU3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDA5OjMwOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5pbmRleCAxNmRmYWM1NGEyNTlhLi41MjY1MzUzODc1MTIzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuY1xuQEAgLTYwNDYsNyAmIzQzOzYwNDYsNyBAQCBzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuJiM0MztcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuIFx0XHRcdGlmICh3LVx1MDAzZXNraXApIHtcbiBcdFx0XHRcdHctXHUwMDNlc2tpcC0tO1xuIFx0XHRcdFx0Y29udGludWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDZfZHVtcF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7LAogICAgJiMzNDtmaWI2X2R1bXBfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTE5NTBhODY3MGQ5ZTFlYmQyZTczMzVmNTIwZWI5YzM5NDEzYzU3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDA5OjMwOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMKaW5kZXggMTZkZmFjNTRhMjU5YS4uNTI2NTM1Mzg3NTEyMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcm91dGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9yb3V0ZS5jCkBAIC02MDQ2LDcgJiM0Mzs2MDQ2LDcgQEAgc3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKQogCQlyZXR1cm4gMDsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBGSUI2X0VYQ0VQVElPTl9CVUNLRVRfU0laRTsgaSYjNDM7JiM0MzspIHsKLQkJaGxpc3RfZm9yX2VhY2hfZW50cnkocnQ2X2V4LCAmYW1wO2J1Y2tldC0mZ3Q7Y2hhaW4sIGhsaXN0KSB7CiYjNDM7CQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocnQ2X2V4LCAmYW1wO2J1Y2tldC0mZ3Q7Y2hhaW4sIGhsaXN0KSB7CiAJCQlpZiAody0mZ3Q7c2tpcCkgewogCQkJCXctJmd0O3NraXAtLTsKIAkJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZ2l2ZW4gdGhpcyBwYXRjaDoKCioqQW5hbHl6aW5nIGFuIFJDVSBCdWcgRml4IGluIElQdjYgUm91dGluZyoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHByZXR0eSBzcGVjaWZpYzogd2UmIzM5O3JlIHN3YXBwaW5nIG91dCBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIHdpdGggYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgd2l0aGluIHRoZSBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgZnVuY3Rpb24gaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGlzIGlzIHNjcmVhbWluZyAmIzM0O1JDVSBsaXN0IHRyYXZlcnNhbCBidWcgZml4JiMzNDsgdG8gbWUsIGltbWVkaWF0ZWx5LiBNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIHByb2JhYmx5IGEgY2xhc3NpYyBjYXNlIHdoZXJlIHRoZSBvcmlnaW5hbCBjb2RlIHdhc24mIzM5O3QgY29ycmVjdGx5IGhhbmRsaW5nIGNvbmN1cnJlbnQgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyBvbiBhbiBSQ1UtcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlLiBUaGUgcmVndWxhciBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIG1hY3JvIGlzbiYjMzk7dCBSQ1Utc2FmZSwgc28gdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uCgpNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIGl0cyBleGFjdCByb2xlIGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGl0cyB1c2FnZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhlIGxpc3QgYmVpbmcgdHJhdmVyc2VkIGlzIGRlZmluZWQsIGhvdyBpdCYjMzk7cyBwb3B1bGF0ZWQgYW5kIG1vZGlmaWVkLCBhbmQgd2hhdCBvdGhlciBjb2RlIGlzIHBvdGVudGlhbGx5IGFjY2Vzc2luZyBpdCBjb25jdXJyZW50bHkuIEkgZXhwZWN0IEkmIzM5O2xsIHdhbnQgdG8gdHJhY2UgYmFjayB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIHRvIGJlIDEwMCUgc3VyZS4gVGhpcyBwYXRjaCBpcyBhIHJlZCBmbGFnIHRoYXQgdGhlcmUmIzM5O3MgYSBwcm9ibGVtIGhlcmUsIGFuZCBJJiMzOTtsbCB3YW50IHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMsIGJlZm9yZSBJIGV2YWx1YXRlIHRoZSBmaXguIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBmaXggZm9yIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfbmhfZHVtcF9leGNlcHRpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTYwMjg9c3RydWN0IGZpYjZfbmhfZXhjZXB0aW9uX2R1bXBfd2Fsa2VyIHtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwMzUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwMzY6c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxubmV0L2lwdjYvcm91dGUuYy02MDM3LXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwODk9aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG4tLVxubmV0L2lwdjYvcm91dGUuYy02MTQyLVx0XHRcdGVyciA9IG5leHRob3BfZm9yX2VhY2hfZmliNl9uaChydC1cdTAwM2VuaCxcbm5ldC9pcHY2L3JvdXRlLmM6NjE0MzpcdFx0XHRcdFx0XHQgICAgICAgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyxcbm5ldC9pcHY2L3JvdXRlLmMtNjE0NC1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2dyk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDUtXHRcdH0gZWxzZSB7XG5uZXQvaXB2Ni9yb3V0ZS5jOjYxNDY6XHRcdFx0ZXJyID0gcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhydC1cdTAwM2VmaWI2X25oLCBcdTAwMjZ3KTtcbm5ldC9pcHY2L3JvdXRlLmMtNjE0Ny1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBydDZfZHVtcF9yb3V0ZWAgRnVuY3Rpb24qKgoKT2theSwgc28gYHJ0Nl9kdW1wX3JvdXRlYCBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzIHN0YXJ0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlLCBzbyBsZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gZXhhbWluaW5nIHRoYXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY29kZSB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IGl0JiMzOTtzIGludGVyYWN0aW5nIHdpdGggdGhlIHJvdXRpbmcgdGFibGUgYW5kIHdoYXQgZGF0YSBpdCYjMzk7cyBleHRyYWN0aW5nLiBUaGlzIGlzIGxpa2VseSB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUgdGhlIGRhdGEgZXhwb3J0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfZHVtcF9yb3V0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz02MDM2PXN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwODgtLyogUmV0dXJuIC0xIGlmIGRvbmUgd2l0aCBub2RlLCBudW1iZXIgb2YgaGFuZGxlZCByb3V0ZXMgb24gcGFydGlhbCBkdW1wICovXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwODk6aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwOTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHJ0Nl9kdW1wX3JvdXRlYCYjMzk7cyBVc2FnZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBydDZfZHVtcF9yb3V0ZWAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGEgZnVuZGFtZW50YWwgcXVlc3Rpb24gYWJvdXQgaXRzIHNjb3BlIGFuZCB1c2FnZS4gSXMgdGhpcyBmdW5jdGlvbiBhbiBleHRlcm5hbGx5LWZhY2luZyBBUEksIG9yIGlzIGl0IGFuIGludGVybmFsIHV0aWxpdHkgdGhhdCYjMzk7cyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIG9yIHN1YnN5c3RlbT8gS25vd2luZyB3aGV0aGVyIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBtZWFudCBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSB0byB1c2UsIG9yIGlmIGl0JiMzOTtzIHByaW1hcmlseSBhbiBpbnRlcm5hbCBkZWJ1Z2dpbmcgdG9vbCwgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3QuIElmIGl0JiMzOTtzIGV4cG9ydGVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgYXJlIGRlcGVuZGluZyBvbiB0aGlzLCBhbmQgaG93IGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGluIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBicm9hZGVyIGltcGFjdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNhbGxzIGFyZSBjb21pbmcgZnJvbSB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9kdW1wX3JvdXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYz01Mjg9c3RhdGljIGludCBmaWI2X2R1bXBfbm9kZShzdHJ1Y3QgZmliNl93YWxrZXIgKncpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTUzMy1cdGZvcl9lYWNoX2ZpYjZfd2Fsa2VyX3J0KHcpIHtcbm5ldC9pcHY2L2lwNl9maWIuYzo1MzQ6XHRcdHJlcyA9IHJ0Nl9kdW1wX3JvdXRlKHJ0LCB3LVx1MDAzZWFyZ3MsIHctXHUwMDNlc2tpcF9pbl9ub2RlKTtcbm5ldC9pcHY2L2lwNl9maWIuYy01MzUtXHRcdGlmIChyZXMgXHUwMDNlPSAwKSB7XG4tLVxubmV0L2lwdjYvcm91dGUuYz02MDM2PXN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwODgtLyogUmV0dXJuIC0xIGlmIGRvbmUgd2l0aCBub2RlLCBudW1iZXIgb2YgaGFuZGxlZCByb3V0ZXMgb24gcGFydGlhbCBkdW1wICovXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwODk6aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwOTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byBJUHY2IEZJQiBEdW1wIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgaGFuZGxlIE5ldGxpbmsgZHVtcHMgZm9yIHRoZSBJUHY2IEZJQi4gSSByZW1lbWJlciBgZmliNl9kdW1wX25vZGVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGdldHMgY2FsbGVkIHdoZW4gd2UmIzM5O3JlIHRyeWluZyB0byBkdW1wIHRoZSBGSUIgZW50cmllcy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgZmliNl93YWxrYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoYXQmIzM5O3MgdGhlIHVzdWFsIHdheSB0byBpdGVyYXRlIHRocm91Z2ggYW5kIGR1bXAgZGF0YSBvdmVyIE5ldGxpbmsuIExldCYjMzk7cyBzZWUgd2hhdCBgZmliNl9kdW1wX25vZGVgIGlzIGRvaW5nIGludGVybmFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJUHY2IEZJQiBkYXRhIHN0cnVjdHVyZXMgZHVyaW5nIGEgZHVtcCBvcGVyYXRpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IGl0IHdvcmtzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaWI2X2R1bXBfbm9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmliLmM9NDkyPWludCBmaWI2X3RhYmxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtNTI3LVxubmV0L2lwdjYvaXA2X2ZpYi5jOjUyODpzdGF0aWMgaW50IGZpYjZfZHVtcF9ub2RlKHN0cnVjdCBmaWI2X3dhbGtlciAqdylcbm5ldC9pcHY2L2lwNl9maWIuYy01Mjkte1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz02MzE9c3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTY2OC1cdFx0fVxubmV0L2lwdjYvaXA2X2ZpYi5jOjY2OTpcdFx0dy1cdTAwM2VmdW5jID0gZmliNl9kdW1wX25vZGU7XG5uZXQvaXB2Ni9pcDZfZmliLmMtNjcwLVx0XHRjYi1cdTAwM2VhcmdzWzJdID0gKGxvbmcpdztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBSb3V0aW5nIEJ1ZyBGaXgqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCYjMzk7cyBjbGVhciB0aGUgY29yZSBpc3N1ZSBsaWVzIHdpdGhpbiBgaW5ldDZfZHVtcF9maWJgLCB3aGljaCwgYXMgd2Uga25vdywgaXMgdGhlIG5ldGxpbmsgZHVtcCBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgSVB2NiByb3V0ZXMuIFRoZSBidWcgZml4IGl0c2VsZiBpcyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AsIHRoZSBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIHRoZSBuZXRsaW5rIGR1bXAgcHJvY2VzcyBzcGVjaWZpY2FsbHkgZm9yIElQdjYgcm91dGVzLiBUaGUgZml4IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHN3YXAgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB3aXRoIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgLiBTaW1wbGUgY2hhbmdlLCBidXQgcG90ZW50aWFsbHkgY3JpdGljYWwgZm9yIHN0YWJpbGl0eSBkdXJpbmcgbmV0bGluayBkdW1wcy4KCkdpdmVuIHRoaXMsIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBzeW1ib2xzIEkga25vdyBhcmUgaW52b2x2ZWQ6IGBydDZfZHVtcF9yb3V0ZWAsIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCwgYW5kIGBpbmV0Nl9kdW1wX2ZpYmAuIEFuZCBvZiBjb3Vyc2UsIHRoZSBgSVBWNmAgY29uZmlnIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIGl0IGFsbCB0byBtYXR0ZXIuIFRoaXMgc2VlbXMgbGlrZSBhIGZhaXJseSBpc29sYXRlZCBhcmVhLCBidXQgdGhlIGltcGFjdCBvZiBhIGJ1ZyBpbiBhIG5ldGxpbmsgZHVtcCBjYW4gYmUgc2V2ZXJlLCBwb3RlbnRpYWxseSBjYXVzaW5nIGhhbmdzIG9yIGV2ZW4gbW9yZSBzZXJpb3VzIGlzc3VlcyBpZiB0cmlnZ2VyZWQgZHVyaW5nIGEgcm91dGluZyB1cGRhdGUuIFRpbWUgdG8gZ2V0IHRoZSBmdXp6ZXIgcnVubmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2ZpYi5jPTU4NT1zdGF0aWMgaW50IGZpYjZfZHVtcF90YWJsZShzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGUsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTYzMC1cbm5ldC9pcHY2L2lwNl9maWIuYzo2MzE6c3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvaXB2Ni9pcDZfZmliLmMtNjMyLXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjU2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgZmliNl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0X29yX21vZHVsZSA9IHtcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTY0LVx0ey5vd25lciA9IFRISVNfTU9EVUxFLCAucHJvdG9jb2wgPSBQRl9JTkVUNiwgLm1zZ3R5cGUgPSBSVE1fR0VUUk9VVEUsXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjU2NTpcdCAuZHVtcGl0ID0gaW5ldDZfZHVtcF9maWIsXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjU2Ni1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRFVNUF9VTkxPQ0tFRCB8IFJUTkxfRkxBR19EVU1QX1NQTElUX05MTV9ET05FfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwNgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY2IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYElQVjZgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSVB2Niwgd2hpY2ggaXMgcHJldHR5IGZ1bmRhbWVudGFsIHRvIG1vZGVybiBuZXR3b3JraW5nLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQmIzM5O3Mgc2V0IHVwIHdpdGhpbiB0aGlzIGNvbnRleHQuIEkgaW1tZWRpYXRlbHkgdGhpbmsgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSByZWxldmFudCBJUHY2IG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQuIEJ5IGV4YW1pbmluZyBgbmV0L2lwdjYvS2NvbmZpZ2AsIEkgY2FuIHVuZGVyc3RhbmQgcHJlY2lzZWx5IGhvdyBgSVBWNmAgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBob3cgdGhpcyBzeXN0ZW0gaGFuZGxlcyBJUHY2LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZy01LVxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy0yMC1cbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcbm5ldC9pcHY2L0tjb25maWctMjItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzAtXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cbm5ldC9pcHY2L0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzgtXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTktXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcbm5ldC9pcHY2L0tjb25maWctMTIxLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTc2LVxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O0lQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTk1LVxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcbm5ldC9pcHY2L0tjb25maWctMTk3LVx0Ym9vbFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMDktXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcbm5ldC9pcHY2L0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogR1JFIHR1bm5lbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjI3LVxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcbm5ldC9pcHY2L0tjb25maWctMjU4LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjY0LVxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yNjYtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjc4LVxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcbm5ldC9pcHY2L0tjb25maWctMjgwLVx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjk5LVxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzExLVxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcbm5ldC9pcHY2L0tjb25maWctMzEzLVx0ZGVmX2Jvb2wgeVxuLS1cbm5ldC9pcHY2L0tjb25maWctMzE2LVxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cdGJvb2wgXCYjMzQ7SVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMjctXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXHRib29sIFwmIzM0O0lQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTU4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIElQdjYgUm91dGluZyBFeGNlcHRpb25zKioKCk9rYXksIHNvIHRoZSBidWcgZml4IGlzIHN1cHBvc2VkIHRvIGJlIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIElQdjYtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgYmVoYXZpb3Ig4oCTIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2X1JPVVRFX0lORk9gIGltbWVkaWF0ZWx5IGNvbWUgdG8gbWluZC4gSSBrbm93IHRoaXMgYXJlYSBpbnNpZGUgYW5kIG91dCwgc28gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBnb2luZyBvbiBhbmQgdmVyaWZ5IHRoZSBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmM9NjAyOD1zdHJ1Y3QgZmliNl9uaF9leGNlcHRpb25fZHVtcF93YWxrZXIge1xuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjAzNS1cbm5ldC9pcHY2L3JvdXRlLmM6NjAzNjpzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwMzcte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NjA4OT1pbnQgcnQ2X2R1bXBfcm91dGUoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnLCB1bnNpZ25lZCBpbnQgc2tpcClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDItXHRcdFx0ZXJyID0gbmV4dGhvcF9mb3JfZWFjaF9maWI2X25oKHJ0LVx1MDAzZW5oLFxubmV0L2lwdjYvcm91dGUuYzo2MTQzOlx0XHRcdFx0XHRcdCAgICAgICBydDZfbmhfZHVtcF9leGNlcHRpb25zLFxubmV0L2lwdjYvcm91dGUuYy02MTQ0LVx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ3KTtcbm5ldC9pcHY2L3JvdXRlLmMtNjE0NS1cdFx0fSBlbHNlIHtcbm5ldC9pcHY2L3JvdXRlLmM6NjE0NjpcdFx0XHRlcnIgPSBydDZfbmhfZHVtcF9leGNlcHRpb25zKHJ0LVx1MDAzZWZpYjZfbmgsIFx1MDAyNncpO1xubmV0L2lwdjYvcm91dGUuYy02MTQ3LVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxMTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVBWNiBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgYElQVjZgLiBTdHJhaWdodGZvcndhcmQuIFRoZSBidWcgZml4IGl0c2VsZiBzZWVtcyBmdW5jdGlvbmFsOyBpdCBhZGRyZXNzZXMgYW4gUkNVIHRyYXZlcnNhbCBpc3N1ZSwgd2hpY2ggaXMgZ29vZC4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgYFdvcnRoRnV6emluZzogdHJ1ZWAgZmxhZy4gTXkgZm9jdXMgZm9yIHRlc3Rpbmcgd2lsbCBiZSBvbiB0aG9zZSB0aHJlZSBzeW1ib2xzOiBgcnQ2X2R1bXBfcm91dGVgLCBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AsIGFuZCBgaW5ldDZfZHVtcF9maWJgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGtleSBhcmVhcyB0byBwcm9iZS4gVGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYEVuYWJsZUNvbmZpZ3M6IElQVjZgLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgYElQVjZgIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBSaWdodCwgaXQmIzM5O3MgYSBgbWVudWNvbmZpZ2Agb3B0aW9uIHdpdGhpbiBgbmV0L2lwdjYvS2NvbmZpZ2AuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIGl0IGRlcGVuZHMgb24gYElORVRgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQsIGluIGNhc2UgaXQgYWZmZWN0cyBob3cgSSBuZWVkIHRvIHNldCB1cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudC4gR290IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIElQVjYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBJUHY2IENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYG5ldC9pcHY2L0tjb25maWdgIGZpbGUuIEdpdmVuIHRoZSBzdWJqZWN0IG1hdHRlciwgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gSVB2Ni4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgYElQVjZgIHN5bWJvbCBtaWdodCBoYXZlLiBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMsIG90aGVyIGZlYXR1cmVzIGl0IHJlbGllcyBvbiwgb3IgY29uZmxpY3RzIHRvIGNvbnNpZGVyPyBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbCBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzIG9yIGVuYWJsaW5nIElQdjYgZnVuY3Rpb25hbGl0eS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcHJvcGVyIGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UgYW5kIHRoYXQgd2UgYXZvaWQgYW55IHVuZXhwZWN0ZWQgaXNzdWVzIGR1cmluZyBjb21waWxhdGlvbiBvciBydW50aW1lLiBUaW1lIHRvIGdldCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZy01LVxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy0yMC1cbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcbm5ldC9pcHY2L0tjb25maWctMjItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzAtXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cbm5ldC9pcHY2L0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzgtXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTktXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcbm5ldC9pcHY2L0tjb25maWctMTIxLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTc2LVxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O0lQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTk1LVxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcbm5ldC9pcHY2L0tjb25maWctMTk3LVx0Ym9vbFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMDktXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcbm5ldC9pcHY2L0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogR1JFIHR1bm5lbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjI3LVxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcbm5ldC9pcHY2L0tjb25maWctMjU4LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjY0LVxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yNjYtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjc4LVxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcbm5ldC9pcHY2L0tjb25maWctMjgwLVx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjk5LVxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzExLVxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcbm5ldC9pcHY2L0tjb25maWctMzEzLVx0ZGVmX2Jvb2wgeVxuLS1cbm5ldC9pcHY2L0tjb25maWctMzE2LVxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cdGJvb2wgXCYjMzQ7SVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMjctXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXHRib29sIFwmIzM0O0lQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjY0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb246IElQdjYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgSVB2NiBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGluc3RpbmN0IGlzIHRvIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIEtjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5IGBuZXQvaXB2Ni9LY29uZmlnYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgbGluZXMgMSB0aHJvdWdoIDE1LiBUaGlzIHVzdWFsbHkgY292ZXJzIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMsIHBvdGVudGlhbGx5IGluY2x1ZGluZyB0aGluZ3MgbGlrZSB0aGUgbWFpbiBJUHY2IHN3aXRjaCBvciB0aGUgc2VsZWN0aW9uIG9mIGltcG9ydGFudCBJUHY2IHByb3RvY29scywgb3IgcGVyaGFwcyBzb21lIGdlbmVyYWwgYnVpbGQgZW52aXJvbm1lbnQgcGFyYW1ldGVycyBvciBkZXBlbmRlbmNpZXMuIEhvcGVmdWxseSBJJiMzOTtsbCBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFuZCB0aGVpciBiYXNpYyB2aXNpYmlsaXR5IHJlcXVpcmVtZW50cy4gVGhpcyB3aWxsIHNldCB0aGUgc3RhZ2UgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbjsgaWYgbmVlZGVkIEkgd2lsbCBjb250aW51ZSBsb29raW5nIGF0IHRoaXMgc2VjdGlvbiwgdG8gZmluZCBhbnkgY2x1ZXMgdGhhdCBhcmUgbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSVB2NiBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgSVBWNlxuICAgNzpcdFx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFN1cHBvcnQgZm9yIElQIHZlcnNpb24gNiAoSVB2NikuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IElQdjYsIHNlZVxuICAxNDpcdFx0ICBcdTAwM2NodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JUHY2XHUwMDNlLlxuICAxNTpcdFx0ICBGb3Igc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgSVB2NiB1bmRlciBMaW51eCwgc2VlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTUKCQkJCQkJCW91dHB1dDogMTEwCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IElQdjYgUm91dGluZyBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoaXMgSVB2NiBzdHVmZiwgc3BlY2lmaWNhbGx5IHRoZSByb3V0ZSBkdW1waW5nIGZ1bmN0aW9uYWxpdHkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXAsIElQdjYgaXMgZGVmaW5pdGVseSB0aGUgcmVsZXZhbnQgYXJlYSBoZXJlLiYjMzQ7IE5vdywgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIEkmIzM5O20gYSBiaXQgcGVycGxleGVkLiBJIHNlZSBgcnQ2X2R1bXBfcm91dGVgLCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBleHBvcnRlZCBvciBub3QuIEl0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLCBidXQgaXQmIzM5O3MgKmFsc28qIG5vdCBleHBsaWNpdGx5IGV4cG9ydGVkIGluIHRoZSB1c3VhbCB3YXkuIEhtbS4gVGhlbiBJIGNoZWNrIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBhbmQgcmVhbGl6ZSAqdGhhdCogZnVuY3Rpb24gKmlzKiBkZWNsYXJlZCBhcyBzdGF0aWMuIEFuZCB3aGlsZSBJJiMzOTttIGF0IGl0LCBJIHNlZSB0aGF0IGBpbmV0Nl9kdW1wX2ZpYmAgaXMgYWxzbyBkZWNsYXJlZCBhcyBzdGF0aWMuCgpPa2F5LCBzbyBiYWNrIHRvIHRoZSBsaXN0Li4uIEl0JiMzOTtzIGxvb2tpbmcgbGlrZSBgcnQ2X2R1bXBfcm91dGVgIHNob3VsZCBiZSBpbmNsdWRlZC4gYW5kIGBpbmV0Nl9kdW1wX2ZpYmAgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgd2VsbC4KCldhaXQgYSBzZWNvbmTigKYgSSYjMzk7dmUgZ290IGEgYml0IG9mIGEgY29udHJhZGljdGlvbiBoZXJlLi4uIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyBzdGF0aWMsIGJ1dCAqdGhhdCYjMzk7cyogdGhlIG9uZSB0aGF0IHNlZW1zIHRvIGhhdmUgYmVlbiBtb2RpZmllZC4gCgpTbywgSSYjMzk7bSBnb2luZyB0byByZXZpc2UgYW5kIGZvY3VzIG9uIGluY2x1ZGluZyBgcnQ2X2R1bXBfcm91dGVgIGFuZCBgaW5ldDZfZHVtcF9maWJgIGluIG15IGxpc3QgZm9yIG5vdy4gSXQgc2VlbXMgdGhhdGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBzaG91bGQgYmUgZXhlbXB0LgoKTGV0IG1lIGp1c3QgZG8gYSBxdWljayBzY2FuIHRvIGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgZmxhZ3MgSSYjMzk7bSBtaXNzaW5nLiBOb3BlLCBzdGlsbCBjb25maWRlbnQgaW4gYElQVjZgLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljLiBJdCYjMzk7cyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB0aGF0IGdldHMgaGl0IGR1cmluZyBJUHY2IHJvdXRlIG5ldGxpbmsgZHVtcHMuIEdpdmVuIHRoZSBmdW5jdGlvbmFsIGltcGFjdCwgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnQ2X2R1bXBfcm91dGUmIzM0OywKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OywKICAgICYjMzQ7ZmliNl9kdW1wX25vZGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2Agd2hpY2ggaXMgcmVhY2hhYmxlIGR1cmluZyBJUHY2IHJvdXRlIG5ldGxpbmsgZHVtcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIElQdjYgcm91dGluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9kdW1wX3JvdXRlJiMzNDssCiAgICAmIzM0O2luZXQ2X2R1bXBfZmliJiMzNDssCiAgICAmIzM0O2ZpYjZfZHVtcF9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIFJDVSBsaXN0IHRyYXZlcnNhbCBidWcgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHdoaWNoIGlzIHJlYWNoYWJsZSBkdXJpbmcgSVB2NiByb3V0ZSBuZXRsaW5rIGR1bXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBJUHY2IHJvdXRpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBhIGxpc3QgdHJhdmVyc2FsIG1hY3JvIGZyb20gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB0byBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgdG8gcHJvcGVybHkgdXNlIFJDVSBwcmltaXRpdmVzLiBUaGlzIGFkZHJlc3NlcyBwb3RlbnRpYWwgZGF0YSByYWNlcywgdXNlLWFmdGVyLWZyZWUgYnVncywgb3IgbG9ja2RlcCB3YXJuaW5ncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIG1lbW9yeSBhbGxvY2F0aW9uLCBpbml0aWFsaXphdGlvbiwgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkxOTUwYTg2NzBkOWUxZWJkMmU3MzM1ZjUyMGViOWMzOTQxM2M1NzQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAwOTozMDoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4IDE2ZGZhYzU0YTI1OWEuLjUyNjUzNTM4NzUxMjMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNjA0Niw3ICYjNDM7NjA0Niw3IEBAIHN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZykKIAkJcmV0dXJuIDA7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkmIzQzOyYjNDM7KSB7Ci0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHJ0Nl9leCwgJmFtcDtidWNrZXQtJmd0O2NoYWluLCBobGlzdCkgewomIzQzOwkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgJmFtcDtidWNrZXQtJmd0O2NoYWluLCBobGlzdCkgewogCQkJaWYgKHctJmd0O3NraXApIHsKIAkJCQl3LSZndDtza2lwLS07CiAJCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDEyCgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDM0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSQ1UgRml4IGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHJlcGxhY2VzIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgd2l0aCBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCB3aXRoaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIGluIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhbiBSQ1UtcmVsYXRlZCBmaXgsIGxpa2VseSB0YXJnZXRpbmcgYSBtaXNzZWQgUkNVIHByb3RlY3Rpb24gb3IgYSBwb3RlbnRpYWwgZGF0YSByYWNlIG9yIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpbiB0aGUgbGlzdCB0cmF2ZXJzYWwuIEdpdmVuIHRoZSBjb250ZXh0LCBpdCB3b3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBvciBLQ1NBTi4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBvciBleHBvc2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyB1c2VkIGZvciBkdW1waW5nIGV4Y2VwdGlvbnMsIHByZXN1bWFibHkgdmlhIG5ldGxpbmssIHdoaWNoIHN1Z2dlc3RzIHRoZSBkYXRhIGlzIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLiBCdXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIG1hY3JvIGl0c2VsZi4gV2UmIzM5O3JlIG5vdCBzZWVpbmcgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcywgb3Igb3RoZXIgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGludHJvZHVjZSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXR5LiBJdCYjMzk7cyBqdXN0IGEgY2hhbmdlIGluIHRoZSB3YXkgd2UgdHJhdmVyc2UgdGhlIGxpc3QuCgpUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGlzIG5vdCByZWxldmFudCB0byBLTVNBTi4gVGhlIHJlYXNvbmluZyBpcyBzb2xpZC4gSSYjMzk7bGwgbWFyayBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBhIGxpc3QgdHJhdmVyc2FsIG1hY3JvIGZyb20gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB0byBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgdG8gcHJvcGVybHkgdXNlIFJDVSBwcmltaXRpdmVzLiBUaGlzIGFkZHJlc3NlcyBwb3RlbnRpYWwgZGF0YSByYWNlcywgdXNlLWFmdGVyLWZyZWUgYnVncywgb3IgbG9ja2RlcCB3YXJuaW5ncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIG1lbW9yeSBhbGxvY2F0aW9uLCBpbml0aWFsaXphdGlvbiwgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjE3LjQzMzM1Nzk1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODExMDk5Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydDZfZHVtcF9yb3V0ZVwiLFxuICAgIFwiaW5ldDZfZHVtcF9maWJcIixcbiAgICBcImZpYjZfZHVtcF9ub2RlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGEgbGlzdCB0cmF2ZXJzYWwgbWFjcm8gZnJvbSBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIHRvIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB0byBwcm9wZXJseSB1c2UgUkNVIHByaW1pdGl2ZXMuIFRoaXMgYWRkcmVzc2VzIHBvdGVudGlhbCBkYXRhIHJhY2VzLCB1c2UtYWZ0ZXItZnJlZSBidWdzLCBvciBsb2NrZGVwIHdhcm5pbmdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4sIEtDU0FOLCBhbmQgTE9DS0RFUC4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gbWVtb3J5IGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDoxNy40MzMzNjMzNjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NzIxMTY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkxOTUwYTg2NzBkOWUxZWJkMmU3MzM1ZjUyMGViOWMzOTQxM2M1NzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDk6MzA6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcXG5pbmRleCAxNmRmYWM1NGEyNTlhLi41MjY1MzUzODc1MTIzIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcXG4rKysgYi9uZXQvaXB2Ni9yb3V0ZS5jXFxuQEAgLTYwNDYsNyArNjA0Niw3IEBAIHN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZylcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkrKykge1xcbi1cXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeShydDZfZXgsIFxcdTAwMjZidWNrZXQtXFx1MDAzZWNoYWluLCBobGlzdCkge1xcbitcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocnQ2X2V4LCBcXHUwMDI2YnVja2V0LVxcdTAwM2VjaGFpbiwgaGxpc3QpIHtcXG4gXFx0XFx0XFx0aWYgKHctXFx1MDAzZXNraXApIHtcXG4gXFx0XFx0XFx0XFx0dy1cXHUwMDNlc2tpcC0tO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6MTcuODAxMjA5MDY0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDM1NzM0ODA4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0Nl9kdW1wX3JvdXRlXCIsXG4gICAgXCJpbmV0Nl9kdW1wX2ZpYlwiLFxuICAgIFwiZmliNl9kdW1wX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MTk1MGE4NjcwZDllMWViZDJlNzMzNWY1MjBlYjljMzk0MTNjNTc0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDk6MzA6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggMTZkZmFjNTRhMjU5YS4uNTI2NTM1Mzg3NTEyMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC02MDQ2LDcgKzYwNDYsNyBAQCBzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkrKykge1xuLVx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeShydDZfZXgsIFx1MDAyNmJ1Y2tldC1cdTAwM2VjaGFpbiwgaGxpc3QpIHtcbitcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuIFx0XHRcdGlmICh3LVx1MDAzZXNraXApIHtcbiBcdFx0XHRcdHctXHUwMDNlc2tpcC0tO1xuIFx0XHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDoxNy44MDEyMTAzMjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyNzM4MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyBhbiBSQ1UgQnVnIEZpeCBpbiBJUHY2IFJvdXRpbmcqKlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHByZXR0eSBzcGVjaWZpYzogd2UncmUgc3dhcHBpbmcgb3V0IGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgd2l0aCBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCB3aXRoaW4gdGhlIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBmdW5jdGlvbiBpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoaXMgaXMgc2NyZWFtaW5nIFwiUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBmaXhcIiB0byBtZSwgaW1tZWRpYXRlbHkuIE15IGd1dCBmZWVsaW5nIGlzIHRoaXMgaXMgcHJvYmFibHkgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgdGhlIG9yaWdpbmFsIGNvZGUgd2Fzbid0IGNvcnJlY3RseSBoYW5kbGluZyBjb25jdXJyZW50IHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgb24gYW4gUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZS4gVGhlIHJlZ3VsYXIgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCBtYWNybyBpc24ndCBSQ1Utc2FmZSwgc28gdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uXG5cbk15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGRpZyBpbnRvIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpdHNlbGYgYW5kIHVuZGVyc3RhbmQgaXRzIGV4YWN0IHJvbGUgYW5kIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaXRzIHVzYWdlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZSBsaXN0IGJlaW5nIHRyYXZlcnNlZCBpcyBkZWZpbmVkLCBob3cgaXQncyBwb3B1bGF0ZWQgYW5kIG1vZGlmaWVkLCBhbmQgd2hhdCBvdGhlciBjb2RlIGlzIHBvdGVudGlhbGx5IGFjY2Vzc2luZyBpdCBjb25jdXJyZW50bHkuIEkgZXhwZWN0IEknbGwgd2FudCB0byB0cmFjZSBiYWNrIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgdG8gYmUgMTAwJSBzdXJlLiBUaGlzIHBhdGNoIGlzIGEgcmVkIGZsYWcgdGhhdCB0aGVyZSdzIGEgcHJvYmxlbSBoZXJlLCBhbmQgSSdsbCB3YW50IHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMsIGJlZm9yZSBJIGV2YWx1YXRlIHRoZSBmaXguIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGZpeCBmb3IgdGhlIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDoyMS40MDM5NTIzMDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MzA4OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQ2X25oX2R1bXBfZXhjZXB0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NjAyOD1zdHJ1Y3QgZmliNl9uaF9leGNlcHRpb25fZHVtcF93YWxrZXIge1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02MDM1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NjAzNjpzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXFxubmV0L2lwdjYvcm91dGUuYy02MDM3LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjA4OT1pbnQgcnQ2X2R1bXBfcm91dGUoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnLCB1bnNpZ25lZCBpbnQgc2tpcClcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjE0Mi1cXHRcXHRcXHRlcnIgPSBuZXh0aG9wX2Zvcl9lYWNoX2ZpYjZfbmgocnQtXFx1MDAzZW5oLFxcbm5ldC9pcHY2L3JvdXRlLmM6NjE0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ3KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDUtXFx0XFx0fSBlbHNlIHtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjYxNDY6XFx0XFx0XFx0ZXJyID0gcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhydC1cXHUwMDNlZmliNl9uaCwgXFx1MDAyNncpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNjE0Ny1cXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjIxLjQ0NzM4OTAwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTEwMzU5MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgcnQ2X2R1bXBfcm91dGVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHJ0Nl9kdW1wX3JvdXRlYCBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzIHN0YXJ0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUsIHNvIGxldCdzIGdldCByaWdodCBpbnRvIGV4YW1pbmluZyB0aGF0IGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY29kZSB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcm91dGluZyB0YWJsZSBhbmQgd2hhdCBkYXRhIGl0J3MgZXh0cmFjdGluZy4gVGhpcyBpcyBsaWtlbHkgdGhlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlIHRoZSBkYXRhIGV4cG9ydC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjI2LjkzODQyNzIzNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU4NTM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfZHVtcF9yb3V0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NjAzNj1zdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwODgtLyogUmV0dXJuIC0xIGlmIGRvbmUgd2l0aCBub2RlLCBudW1iZXIgb2YgaGFuZGxlZCByb3V0ZXMgb24gcGFydGlhbCBkdW1wICovXFxubmV0L2lwdjYvcm91dGUuYzo2MDg5OmludCBydDZfZHVtcF9yb3V0ZShzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcsIHVuc2lnbmVkIGludCBza2lwKVxcbm5ldC9pcHY2L3JvdXRlLmMtNjA5MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjI2Ljk4MzAxNzY3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwNTMwNDU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBydDZfZHVtcF9yb3V0ZWAncyBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgcnQ2X2R1bXBfcm91dGVgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIGFib3V0IGl0cyBzY29wZSBhbmQgdXNhZ2UuIElzIHRoaXMgZnVuY3Rpb24gYW4gZXh0ZXJuYWxseS1mYWNpbmcgQVBJLCBvciBpcyBpdCBhbiBpbnRlcm5hbCB1dGlsaXR5IHRoYXQncyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIG9yIHN1YnN5c3RlbT8gS25vd2luZyB3aGV0aGVyIGl0J3MgZXhwb3J0ZWQgYW5kIG1lYW50IGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHRvIHVzZSwgb3IgaWYgaXQncyBwcmltYXJpbHkgYW4gaW50ZXJuYWwgZGVidWdnaW5nIHRvb2wsIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJZiBpdCdzIGV4cG9ydGVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgYXJlIGRlcGVuZGluZyBvbiB0aGlzLCBhbmQgaG93IGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGluIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBicm9hZGVyIGltcGFjdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNhbGxzIGFyZSBjb21pbmcgZnJvbSB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6MzAuMjg4MzI0NzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDYwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQ2X2R1bXBfcm91dGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz01Mjg9c3RhdGljIGludCBmaWI2X2R1bXBfbm9kZShzdHJ1Y3QgZmliNl93YWxrZXIgKncpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtNTMzLVxcdGZvcl9lYWNoX2ZpYjZfd2Fsa2VyX3J0KHcpIHtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6NTM0OlxcdFxcdHJlcyA9IHJ0Nl9kdW1wX3JvdXRlKHJ0LCB3LVxcdTAwM2VhcmdzLCB3LVxcdTAwM2Vza2lwX2luX25vZGUpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy01MzUtXFx0XFx0aWYgKHJlcyBcXHUwMDNlPSAwKSB7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwMzY9c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02MDg4LS8qIFJldHVybiAtMSBpZiBkb25lIHdpdGggbm9kZSwgbnVtYmVyIG9mIGhhbmRsZWQgcm91dGVzIG9uIHBhcnRpYWwgZHVtcCAqL1xcbm5ldC9pcHY2L3JvdXRlLmM6NjA4OTppbnQgcnQ2X2R1bXBfcm91dGUoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnLCB1bnNpZ25lZCBpbnQgc2tpcClcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwOTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDozMC4zMzMxNzY0ODZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU5NjQzNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byBJUHY2IEZJQiBEdW1wIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGhhbmRsZSBOZXRsaW5rIGR1bXBzIGZvciB0aGUgSVB2NiBGSUIuIEkgcmVtZW1iZXIgYGZpYjZfZHVtcF9ub2RlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBnZXRzIGNhbGxlZCB3aGVuIHdlJ3JlIHRyeWluZyB0byBkdW1wIHRoZSBGSUIgZW50cmllcy4gSXQgbG9va3MgbGlrZSBpdCdzIGNhbGxlZCBmcm9tIGBmaWI2X3dhbGtgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBtYWtlcyBzZW5zZTsgdGhhdCdzIHRoZSB1c3VhbCB3YXkgdG8gaXRlcmF0ZSB0aHJvdWdoIGFuZCBkdW1wIGRhdGEgb3ZlciBOZXRsaW5rLiBMZXQncyBzZWUgd2hhdCBgZmliNl9kdW1wX25vZGVgIGlzIGRvaW5nIGludGVybmFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJUHY2IEZJQiBkYXRhIHN0cnVjdHVyZXMgZHVyaW5nIGEgZHVtcCBvcGVyYXRpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IGl0IHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6MzMuOTkyODIyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNTAwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmliNl9kdW1wX25vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvaXA2X2ZpYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz00OTI9aW50IGZpYjZfdGFibGVzX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTUyNy1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6NTI4OnN0YXRpYyBpbnQgZmliNl9kdW1wX25vZGUoc3RydWN0IGZpYjZfd2Fsa2VyICp3KVxcbm5ldC9pcHY2L2lwNl9maWIuYy01Mjkte1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTYzMT1zdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy02NjgtXFx0XFx0fVxcbm5ldC9pcHY2L2lwNl9maWIuYzo2Njk6XFx0XFx0dy1cXHUwMDNlZnVuYyA9IGZpYjZfZHVtcF9ub2RlO1xcbm5ldC9pcHY2L2lwNl9maWIuYy02NzAtXFx0XFx0Y2ItXFx1MDAzZWFyZ3NbMl0gPSAobG9uZyl3O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDozNC4wMzYxNzkxNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1NzA5ODU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBSb3V0aW5nIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGl0J3MgY2xlYXIgdGhlIGNvcmUgaXNzdWUgbGllcyB3aXRoaW4gYGluZXQ2X2R1bXBfZmliYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIHRoZSBuZXRsaW5rIGR1bXAgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIElQdjYgcm91dGVzLiBUaGUgYnVnIGZpeCBpdHNlbGYgaXMgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgLCB0aGUgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyB0aGUgbmV0bGluayBkdW1wIHByb2Nlc3Mgc3BlY2lmaWNhbGx5IGZvciBJUHY2IHJvdXRlcy4gVGhlIGZpeCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBzd2FwIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgd2l0aCBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YC4gU2ltcGxlIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsIGZvciBzdGFiaWxpdHkgZHVyaW5nIG5ldGxpbmsgZHVtcHMuXG5cbkdpdmVuIHRoaXMsIEknbSBhbHJlYWR5IHRoaW5raW5nIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIHN5bWJvbHMgSSBrbm93IGFyZSBpbnZvbHZlZDogYHJ0Nl9kdW1wX3JvdXRlYCwgYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgLCBhbmQgYGluZXQ2X2R1bXBfZmliYC4gQW5kIG9mIGNvdXJzZSwgdGhlIGBJUFY2YCBjb25maWcgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgaXQgYWxsIHRvIG1hdHRlci4gVGhpcyBzZWVtcyBsaWtlIGEgZmFpcmx5IGlzb2xhdGVkIGFyZWEsIGJ1dCB0aGUgaW1wYWN0IG9mIGEgYnVnIGluIGEgbmV0bGluayBkdW1wIGNhbiBiZSBzZXZlcmUsIHBvdGVudGlhbGx5IGNhdXNpbmcgaGFuZ3Mgb3IgZXZlbiBtb3JlIHNlcmlvdXMgaXNzdWVzIGlmIHRyaWdnZXJlZCBkdXJpbmcgYSByb3V0aW5nIHVwZGF0ZS4gVGltZSB0byBnZXQgdGhlIGZ1enplciBydW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjM4LjM5MzI4MDI5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1Nzk1NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldDZfZHVtcF9maWJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz01ODU9c3RhdGljIGludCBmaWI2X2R1bXBfdGFibGUoc3RydWN0IGZpYjZfdGFibGUgKnRhYmxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTYzMC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6NjMxOnN0YXRpYyBpbnQgaW5ldDZfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9pcHY2L2lwNl9maWIuYy02MzIte1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTI1NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIGZpYjZfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdF9vcl9tb2R1bGUgPSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NjQtXFx0ey5vd25lciA9IFRISVNfTU9EVUxFLCAucHJvdG9jb2wgPSBQRl9JTkVUNiwgLm1zZ3R5cGUgPSBSVE1fR0VUUk9VVEUsXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjI1NjU6XFx0IC5kdW1waXQgPSBpbmV0Nl9kdW1wX2ZpYixcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjU2Ni1cXHQgLmZsYWdzID0gUlROTF9GTEFHX0RVTVBfVU5MT0NLRUQgfCBSVE5MX0ZMQUdfRFVNUF9TUExJVF9OTE1fRE9ORX0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjM4LjQzODg2NjA2M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzc4NjU2NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSVB2NiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYElQVjZgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBJUHY2LCB3aGljaCBpcyBwcmV0dHkgZnVuZGFtZW50YWwgdG8gbW9kZXJuIG5ldHdvcmtpbmcsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqaG93KiBpdCdzIHNldCB1cCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJIGltbWVkaWF0ZWx5IHRoaW5rIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLCBzcGVjaWZpY2FsbHkgYG5ldC9pcHY2L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSByZWxldmFudCBJUHY2IG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQuIEJ5IGV4YW1pbmluZyBgbmV0L2lwdjYvS2NvbmZpZ2AsIEkgY2FuIHVuZGVyc3RhbmQgcHJlY2lzZWx5IGhvdyBgSVBWNmAgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBob3cgdGhpcyBzeXN0ZW0gaGFuZGxlcyBJUHY2LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6NDEuMjE3NTI1NTk3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjgxNjgyMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjQxLjU0NTcwNDExM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTYwMzU1MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBJUHY2IFJvdXRpbmcgRXhjZXB0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBidWcgZml4IGlzIHN1cHBvc2VkIHRvIGJlIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIElQdjYtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhpcyBiZWhhdmlvciDigJMgYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhbmQgYElQVjZfUk9VVEVfSU5GT2AgaW1tZWRpYXRlbHkgY29tZSB0byBtaW5kLiBJIGtub3cgdGhpcyBhcmVhIGluc2lkZSBhbmQgb3V0LCBzbyBJJ20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBmdW5jdGlvbiB3aXRoaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiBhbmQgdmVyaWZ5IHRoZSBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0NC41MDYwNjM4NjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzU4OTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvcm91dGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jPTYwMjg9c3RydWN0IGZpYjZfbmhfZXhjZXB0aW9uX2R1bXBfd2Fsa2VyIHtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjAzNS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwMzY6c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxcbm5ldC9pcHY2L3JvdXRlLmMtNjAzNy17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwODk9aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDItXFx0XFx0XFx0ZXJyID0gbmV4dGhvcF9mb3JfZWFjaF9maWI2X25oKHJ0LVxcdTAwM2VuaCxcXG5uZXQvaXB2Ni9yb3V0ZS5jOjYxNDM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMsXFxubmV0L2lwdjYvcm91dGUuYy02MTQ0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2dyk7XFxubmV0L2lwdjYvcm91dGUuYy02MTQ1LVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjYvcm91dGUuYzo2MTQ2OlxcdFxcdFxcdGVyciA9IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMocnQtXFx1MDAzZWZpYjZfbmgsIFxcdTAwMjZ3KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDctXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0NC41NDk4Mjc5MjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MzQyOTA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJUFY2IEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGBJUFY2YC4gU3RyYWlnaHRmb3J3YXJkLiBUaGUgYnVnIGZpeCBpdHNlbGYgc2VlbXMgZnVuY3Rpb25hbDsgaXQgYWRkcmVzc2VzIGFuIFJDVSB0cmF2ZXJzYWwgaXNzdWUsIHdoaWNoIGlzIGdvb2QuIERlZmluaXRlbHkgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcuIE15IGZvY3VzIGZvciB0ZXN0aW5nIHdpbGwgYmUgb24gdGhvc2UgdGhyZWUgc3ltYm9sczogYHJ0Nl9kdW1wX3JvdXRlYCwgYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgLCBhbmQgYGluZXQ2X2R1bXBfZmliYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBrZXkgYXJlYXMgdG8gcHJvYmUuIFRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IGBFbmFibGVDb25maWdzOiBJUFY2YC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgYElQVjZgIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBSaWdodCwgaXQncyBhIGBtZW51Y29uZmlnYCBvcHRpb24gd2l0aGluIGBuZXQvaXB2Ni9LY29uZmlnYC4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgaXQgZGVwZW5kcyBvbiBgSU5FVGAuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLCBpbiBjYXNlIGl0IGFmZmVjdHMgaG93IEkgbmVlZCB0byBzZXQgdXAgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzExNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0OC42MzMyNTk1NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjgwMzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgSVBWNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWctNS1cXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0OC42Nzg5NTA4NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1OTgyODI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIElQdjYgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYG5ldC9pcHY2L0tjb25maWdgIGZpbGUuIEdpdmVuIHRoZSBzdWJqZWN0IG1hdHRlciwgdGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIElQdjYuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgdGhlIGBJUFY2YCBzeW1ib2wgbWlnaHQgaGF2ZS4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzLCBvdGhlciBmZWF0dXJlcyBpdCByZWxpZXMgb24sIG9yIGNvbmZsaWN0cyB0byBjb25zaWRlcj8gVW5kZXJzdGFuZGluZyB0aGVzZSByZWxhdGlvbnNoaXBzIGlzIGNydWNpYWwgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcyBvciBlbmFibGluZyBJUHY2IGZ1bmN0aW9uYWxpdHkuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHByb3BlciBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlIGFuZCB0aGF0IHdlIGF2b2lkIGFueSB1bmV4cGVjdGVkIGlzc3VlcyBkdXJpbmcgY29tcGlsYXRpb24gb3IgcnVudGltZS4gVGltZSB0byBnZXQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjUxLjYzODc4MTYzNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MjU1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjUxLjY4MzIxMzE4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIzMDQ1ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbjogSVB2NiBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIElQdjYgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCBpcyB0byBzdGFydCBieSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIExldCBtZSBxdWlja2x5IGNoZWNrIGxpbmVzIDEgdGhyb3VnaCAxNS4gVGhpcyB1c3VhbGx5IGNvdmVycyB0aGUgdG9wLWxldmVsIGRlZmluaXRpb25zLCBwb3RlbnRpYWxseSBpbmNsdWRpbmcgdGhpbmdzIGxpa2UgdGhlIG1haW4gSVB2NiBzd2l0Y2ggb3IgdGhlIHNlbGVjdGlvbiBvZiBpbXBvcnRhbnQgSVB2NiBwcm90b2NvbHMsIG9yIHBlcmhhcHMgc29tZSBnZW5lcmFsIGJ1aWxkIGVudmlyb25tZW50IHBhcmFtZXRlcnMgb3IgZGVwZW5kZW5jaWVzLiBIb3BlZnVsbHkgSSdsbCBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFuZCB0aGVpciBiYXNpYyB2aXNpYmlsaXR5IHJlcXVpcmVtZW50cy4gVGhpcyB3aWxsIHNldCB0aGUgc3RhZ2UgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbjsgaWYgbmVlZGVkIEkgd2lsbCBjb250aW51ZSBsb29raW5nIGF0IHRoaXMgc2VjdGlvbiwgdG8gZmluZCBhbnkgY2x1ZXMgdGhhdCBhcmUgbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjU0LjUwNjI2MjYxN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIElQdjYgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIElQVjZcXG4gICA3OlxcdFxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCB5XFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFN1cHBvcnQgZm9yIElQIHZlcnNpb24gNiAoSVB2NikuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgSVB2Niwgc2VlXFxuICAxNDpcXHRcXHQgIFxcdTAwM2NodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JUHY2XFx1MDAzZS5cXG4gIDE1OlxcdFxcdCAgRm9yIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IElQdjYgdW5kZXIgTGludXgsIHNlZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo1NC41MDYzNDc3MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc4NjQyNDIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJUHY2IFJvdXRpbmcgQ29uY2VybnMqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBJUHY2IHN0dWZmLCBzcGVjaWZpY2FsbHkgdGhlIHJvdXRlIGR1bXBpbmcgZnVuY3Rpb25hbGl0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlllcCwgSVB2NiBpcyBkZWZpbml0ZWx5IHRoZSByZWxldmFudCBhcmVhIGhlcmUuXCIgTm93LCBJJ20gZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGFuZCBJJ20gYSBiaXQgcGVycGxleGVkLiBJIHNlZSBgcnQ2X2R1bXBfcm91dGVgLCBhbmQgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZXhwb3J0ZWQgb3Igbm90LiBJdCdzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLCBidXQgaXQncyAqYWxzbyogbm90IGV4cGxpY2l0bHkgZXhwb3J0ZWQgaW4gdGhlIHVzdWFsIHdheS4gSG1tLiBUaGVuIEkgY2hlY2sgYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIGFuZCByZWFsaXplICp0aGF0KiBmdW5jdGlvbiAqaXMqIGRlY2xhcmVkIGFzIHN0YXRpYy4gQW5kIHdoaWxlIEknbSBhdCBpdCwgSSBzZWUgdGhhdCBgaW5ldDZfZHVtcF9maWJgIGlzIGFsc28gZGVjbGFyZWQgYXMgc3RhdGljLlxuXG5Pa2F5LCBzbyBiYWNrIHRvIHRoZSBsaXN0Li4uIEl0J3MgbG9va2luZyBsaWtlIGBydDZfZHVtcF9yb3V0ZWAgc2hvdWxkIGJlIGluY2x1ZGVkLiBhbmQgYGluZXQ2X2R1bXBfZmliYCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB3ZWxsLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkndmUgZ290IGEgYml0IG9mIGEgY29udHJhZGljdGlvbiBoZXJlLi4uIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyBzdGF0aWMsIGJ1dCAqdGhhdCdzKiB0aGUgb25lIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG1vZGlmaWVkLiBcblxuU28sIEknbSBnb2luZyB0byByZXZpc2UgYW5kIGZvY3VzIG9uIGluY2x1ZGluZyBgcnQ2X2R1bXBfcm91dGVgIGFuZCBgaW5ldDZfZHVtcF9maWJgIGluIG15IGxpc3QgZm9yIG5vdy4gSXQgc2VlbXMgdGhhdGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBzaG91bGQgYmUgZXhlbXB0LlxuXG5MZXQgbWUganVzdCBkbyBhIHF1aWNrIHNjYW4gdG8gY29uZmlybSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG9yIGZsYWdzIEknbSBtaXNzaW5nLiBOb3BlLCBzdGlsbCBjb25maWRlbnQgaW4gYElQVjZgLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuIEl0J3MgYW4gUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgdGhhdCBnZXRzIGhpdCBkdXJpbmcgSVB2NiByb3V0ZSBuZXRsaW5rIGR1bXBzLiBHaXZlbiB0aGUgZnVuY3Rpb25hbCBpbXBhY3QsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjU1LCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMxOjAxLjI5Mjc3NDc1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5MTA4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydDZfZHVtcF9yb3V0ZVwiLFxuICAgIFwiaW5ldDZfZHVtcF9maWJcIixcbiAgICBcImZpYjZfZHVtcF9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2Agd2hpY2ggaXMgcmVhY2hhYmxlIGR1cmluZyBJUHY2IHJvdXRlIG5ldGxpbmsgZHVtcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIElQdjYgcm91dGluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnQ2X2R1bXBfcm91dGVcIixcbiAgICBcImluZXQ2X2R1bXBfZmliXCIsXG4gICAgXCJmaWI2X2R1bXBfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIFJDVSBsaXN0IHRyYXZlcnNhbCBidWcgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHdoaWNoIGlzIHJlYWNoYWJsZSBkdXJpbmcgSVB2NiByb3V0ZSBuZXRsaW5rIGR1bXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBJUHY2IHJvdXRpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMxOjAxLjM3NDY5NDU1MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2OTc1NDAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMxOjAxLjM3NTE4OTU2MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1ODY5MjU1NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGEgbGlzdCB0cmF2ZXJzYWwgbWFjcm8gZnJvbSBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIHRvIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB0byBwcm9wZXJseSB1c2UgUkNVIHByaW1pdGl2ZXMuIFRoaXMgYWRkcmVzc2VzIHBvdGVudGlhbCBkYXRhIHJhY2VzLCB1c2UtYWZ0ZXItZnJlZSBidWdzLCBvciBsb2NrZGVwIHdhcm5pbmdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4sIEtDU0FOLCBhbmQgTE9DS0RFUC4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gbWVtb3J5IGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MTk1MGE4NjcwZDllMWViZDJlNzMzNWY1MjBlYjljMzk0MTNjNTc0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDk6MzA6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggMTZkZmFjNTRhMjU5YS4uNTI2NTM1Mzg3NTEyMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC02MDQ2LDcgKzYwNDYsNyBAQCBzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkrKykge1xuLVx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeShydDZfZXgsIFx1MDAyNmJ1Y2tldC1cdTAwM2VjaGFpbiwgaGxpc3QpIHtcbitcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuIFx0XHRcdGlmICh3LVx1MDAzZXNraXApIHtcbiBcdFx0XHRcdHctXHUwMDNlc2tpcC0tO1xuIFx0XHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMTowMS4zNzUxOTA0NzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2OTIzMjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSQ1UgRml4IGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggcmVwbGFjZXMgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB3aXRoIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIHdpdGhpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IGFuIFJDVS1yZWxhdGVkIGZpeCwgbGlrZWx5IHRhcmdldGluZyBhIG1pc3NlZCBSQ1UgcHJvdGVjdGlvbiBvciBhIHBvdGVudGlhbCBkYXRhIHJhY2Ugb3IgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uIGluIHRoZSBsaXN0IHRyYXZlcnNhbC4gR2l2ZW4gdGhlIGNvbnRleHQsIGl0IHdvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgS0FTQU4sIExPQ0tERVAsIG9yIEtDU0FOLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgb3IgZXhwb3NlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCdzIGRpZyBkZWVwZXIuIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyB1c2VkIGZvciBkdW1waW5nIGV4Y2VwdGlvbnMsIHByZXN1bWFibHkgdmlhIG5ldGxpbmssIHdoaWNoIHN1Z2dlc3RzIHRoZSBkYXRhIGlzIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLiBCdXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIG1hY3JvIGl0c2VsZi4gV2UncmUgbm90IHNlZWluZyBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzLCBvciBvdGhlciBvcGVyYXRpb25zIHRoYXQgY291bGQgaW50cm9kdWNlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdHkuIEl0J3MganVzdCBhIGNoYW5nZSBpbiB0aGUgd2F5IHdlIHRyYXZlcnNlIHRoZSBsaXN0LlxuXG5UaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGlzIG5vdCByZWxldmFudCB0byBLTVNBTi4gVGhlIHJlYXNvbmluZyBpcyBzb2xpZC4gSSdsbCBtYXJrIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMiwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMTowNy4yNDQ0MjYyNTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowzdntt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-15 09:04:13 +0000 UTC FinishedAt: 2026-08-15 09:31:08 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "e6a5d573d24cd375e09d24f136523cb3cc85c9d3", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IPV6" ], "series_id": "5b01c533-f005-4dab-9b72-e3a0be88850e" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rt6_dump_route", "inet6_dump_fib", "fib6_dump_node" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDZfZHVtcF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7LAogICAgJiMzNDtmaWI2X2R1bXBfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgOTE5NTBhODY3MGQ5ZTFlYmQyZTczMzVmNTIwZWI5YzM5NDEzYzU3NFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTYXQgQXVnIDE1IDA5OjMwOjE2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jXG5pbmRleCAxNmRmYWM1NGEyNTlhLi41MjY1MzUzODc1MTIzIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvcm91dGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuY1xuQEAgLTYwNDYsNyAmIzQzOzYwNDYsNyBAQCBzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkmIzQzOyYjNDM7KSB7XG4tXHRcdGhsaXN0X2Zvcl9lYWNoX2VudHJ5KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuJiM0MztcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuIFx0XHRcdGlmICh3LVx1MDAzZXNraXApIHtcbiBcdFx0XHRcdHctXHUwMDNlc2tpcC0tO1xuIFx0XHRcdFx0Y29udGludWU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQVjYmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydDZfZHVtcF9yb3V0ZSYjMzQ7LAogICAgJiMzNDtpbmV0Nl9kdW1wX2ZpYiYjMzQ7LAogICAgJiMzNDtmaWI2X2R1bXBfbm9kZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgOTE5NTBhODY3MGQ5ZTFlYmQyZTczMzVmNTIwZWI5YzM5NDEzYzU3NApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTYXQgQXVnIDE1IDA5OjMwOjE2IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmMKaW5kZXggMTZkZmFjNTRhMjU5YS4uNTI2NTM1Mzg3NTEyMyAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvcm91dGUuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvaXB2Ni9yb3V0ZS5jCkBAIC02MDQ2LDcgJiM0Mzs2MDQ2LDcgQEAgc3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKQogCQlyZXR1cm4gMDsKIAogCWZvciAoaSA9IDA7IGkgJmx0OyBGSUI2X0VYQ0VQVElPTl9CVUNLRVRfU0laRTsgaSYjNDM7JiM0MzspIHsKLQkJaGxpc3RfZm9yX2VhY2hfZW50cnkocnQ2X2V4LCAmYW1wO2J1Y2tldC0mZ3Q7Y2hhaW4sIGhsaXN0KSB7CiYjNDM7CQlobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocnQ2X2V4LCAmYW1wO2J1Y2tldC0mZ3Q7Y2hhaW4sIGhsaXN0KSB7CiAJCQlpZiAody0mZ3Q7c2tpcCkgewogCQkJCXctJmd0O3NraXAtLTsKIAkJCQljb250aW51ZTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDgxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZ2l2ZW4gdGhpcyBwYXRjaDoKCioqQW5hbHl6aW5nIGFuIFJDVSBCdWcgRml4IGluIElQdjYgUm91dGluZyoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHByZXR0eSBzcGVjaWZpYzogd2UmIzM5O3JlIHN3YXBwaW5nIG91dCBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIHdpdGggYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgd2l0aGluIHRoZSBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgZnVuY3Rpb24gaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGlzIGlzIHNjcmVhbWluZyAmIzM0O1JDVSBsaXN0IHRyYXZlcnNhbCBidWcgZml4JiMzNDsgdG8gbWUsIGltbWVkaWF0ZWx5LiBNeSBndXQgZmVlbGluZyBpcyB0aGlzIGlzIHByb2JhYmx5IGEgY2xhc3NpYyBjYXNlIHdoZXJlIHRoZSBvcmlnaW5hbCBjb2RlIHdhc24mIzM5O3QgY29ycmVjdGx5IGhhbmRsaW5nIGNvbmN1cnJlbnQgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucyBvbiBhbiBSQ1UtcHJvdGVjdGVkIGRhdGEgc3RydWN0dXJlLiBUaGUgcmVndWxhciBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIG1hY3JvIGlzbiYjMzk7dCBSQ1Utc2FmZSwgc28gdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uCgpNeSBuZXh0IG1vdmUgaXMgY2xlYXI6IEkgbmVlZCB0byBkaWcgaW50byBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgaXRzZWxmIGFuZCB1bmRlcnN0YW5kIGl0cyBleGFjdCByb2xlIGFuZCB0aGUgYnJvYWRlciBjb250ZXh0IG9mIGl0cyB1c2FnZS4gSSYjMzk7bGwgYmUgbG9va2luZyBmb3Igd2hlcmUgdGhlIGxpc3QgYmVpbmcgdHJhdmVyc2VkIGlzIGRlZmluZWQsIGhvdyBpdCYjMzk7cyBwb3B1bGF0ZWQgYW5kIG1vZGlmaWVkLCBhbmQgd2hhdCBvdGhlciBjb2RlIGlzIHBvdGVudGlhbGx5IGFjY2Vzc2luZyBpdCBjb25jdXJyZW50bHkuIEkgZXhwZWN0IEkmIzM5O2xsIHdhbnQgdG8gdHJhY2UgYmFjayB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkIHRvIGJlIDEwMCUgc3VyZS4gVGhpcyBwYXRjaCBpcyBhIHJlZCBmbGFnIHRoYXQgdGhlcmUmIzM5O3MgYSBwcm9ibGVtIGhlcmUsIGFuZCBJJiMzOTtsbCB3YW50IHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMsIGJlZm9yZSBJIGV2YWx1YXRlIHRoZSBmaXguIEkmIzM5O2xsIG5lZWQgdG8gY29uZmlybSB0aGF0IHRoaXMgaXMgYSB2YWxpZCBmaXggZm9yIHRoZSBpc3N1ZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfbmhfZHVtcF9leGNlcHRpb25zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jPTYwMjg9c3RydWN0IGZpYjZfbmhfZXhjZXB0aW9uX2R1bXBfd2Fsa2VyIHtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwMzUtXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwMzY6c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxubmV0L2lwdjYvcm91dGUuYy02MDM3LXtcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwODk9aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG4tLVxubmV0L2lwdjYvcm91dGUuYy02MTQyLVx0XHRcdGVyciA9IG5leHRob3BfZm9yX2VhY2hfZmliNl9uaChydC1cdTAwM2VuaCxcbm5ldC9pcHY2L3JvdXRlLmM6NjE0MzpcdFx0XHRcdFx0XHQgICAgICAgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyxcbm5ldC9pcHY2L3JvdXRlLmMtNjE0NC1cdFx0XHRcdFx0XHQgICAgICAgXHUwMDI2dyk7XG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDUtXHRcdH0gZWxzZSB7XG5uZXQvaXB2Ni9yb3V0ZS5jOjYxNDY6XHRcdFx0ZXJyID0gcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhydC1cdTAwM2VmaWI2X25oLCBcdTAwMjZ3KTtcbm5ldC9pcHY2L3JvdXRlLmMtNjE0Ny1cdFx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3NTQKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIGBydDZfZHVtcF9yb3V0ZWAgRnVuY3Rpb24qKgoKT2theSwgc28gYHJ0Nl9kdW1wX3JvdXRlYCBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzIHN0YXJ0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzIGhhcHBlbmluZyBoZXJlLCBzbyBsZXQmIzM5O3MgZ2V0IHJpZ2h0IGludG8gZXhhbWluaW5nIHRoYXQgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY29kZSB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IGl0JiMzOTtzIGludGVyYWN0aW5nIHdpdGggdGhlIHJvdXRpbmcgdGFibGUgYW5kIHdoYXQgZGF0YSBpdCYjMzk7cyBleHRyYWN0aW5nLiBUaGlzIGlzIGxpa2VseSB0aGUgZW50cnkgcG9pbnQgdG8gaW52ZXN0aWdhdGUgdGhlIGRhdGEgZXhwb3J0LiBMZXQmIzM5O3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydDZfZHVtcF9yb3V0ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvcm91dGUuYz02MDM2PXN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwODgtLyogUmV0dXJuIC0xIGlmIGRvbmUgd2l0aCBub2RlLCBudW1iZXIgb2YgaGFuZGxlZCByb3V0ZXMgb24gcGFydGlhbCBkdW1wICovXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwODk6aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwOTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwNzcKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiAxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgYHJ0Nl9kdW1wX3JvdXRlYCYjMzk7cyBVc2FnZSoqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGlzIGBydDZfZHVtcF9yb3V0ZWAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIGEgZnVuZGFtZW50YWwgcXVlc3Rpb24gYWJvdXQgaXRzIHNjb3BlIGFuZCB1c2FnZS4gSXMgdGhpcyBmdW5jdGlvbiBhbiBleHRlcm5hbGx5LWZhY2luZyBBUEksIG9yIGlzIGl0IGFuIGludGVybmFsIHV0aWxpdHkgdGhhdCYjMzk7cyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIG9yIHN1YnN5c3RlbT8gS25vd2luZyB3aGV0aGVyIGl0JiMzOTtzIGV4cG9ydGVkIGFuZCBtZWFudCBmb3Igb3RoZXIgcGFydHMgb2YgdGhlIHN5c3RlbSB0byB1c2UsIG9yIGlmIGl0JiMzOTtzIHByaW1hcmlseSBhbiBpbnRlcm5hbCBkZWJ1Z2dpbmcgdG9vbCwgaXMgY3JpdGljYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHB1cnBvc2UgYW5kIHBvdGVudGlhbCBpbXBhY3QuIElmIGl0JiMzOTtzIGV4cG9ydGVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgYXJlIGRlcGVuZGluZyBvbiB0aGlzLCBhbmQgaG93IGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGluIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBicm9hZGVyIGltcGFjdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNhbGxzIGFyZSBjb21pbmcgZnJvbSB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9kdW1wX3JvdXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjYvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYz01Mjg9c3RhdGljIGludCBmaWI2X2R1bXBfbm9kZShzdHJ1Y3QgZmliNl93YWxrZXIgKncpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTUzMy1cdGZvcl9lYWNoX2ZpYjZfd2Fsa2VyX3J0KHcpIHtcbm5ldC9pcHY2L2lwNl9maWIuYzo1MzQ6XHRcdHJlcyA9IHJ0Nl9kdW1wX3JvdXRlKHJ0LCB3LVx1MDAzZWFyZ3MsIHctXHUwMDNlc2tpcF9pbl9ub2RlKTtcbm5ldC9pcHY2L2lwNl9maWIuYy01MzUtXHRcdGlmIChyZXMgXHUwMDNlPSAwKSB7XG4tLVxubmV0L2lwdjYvcm91dGUuYz02MDM2PXN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZylcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwODgtLyogUmV0dXJuIC0xIGlmIGRvbmUgd2l0aCBub2RlLCBudW1iZXIgb2YgaGFuZGxlZCByb3V0ZXMgb24gcGFydGlhbCBkdW1wICovXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwODk6aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwOTAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDM1OTcKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiA0MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OgoKKipEaXZpbmcgaW50byBJUHY2IEZJQiBEdW1wIExvZ2ljKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgd2UgaGFuZGxlIE5ldGxpbmsgZHVtcHMgZm9yIHRoZSBJUHY2IEZJQi4gSSByZW1lbWJlciBgZmliNl9kdW1wX25vZGVgIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGdldHMgY2FsbGVkIHdoZW4gd2UmIzM5O3JlIHRyeWluZyB0byBkdW1wIHRoZSBGSUIgZW50cmllcy4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBjYWxsZWQgZnJvbSBgZmliNl93YWxrYCBvciBzb21ldGhpbmcgc2ltaWxhciwgd2hpY2ggbWFrZXMgc2Vuc2U7IHRoYXQmIzM5O3MgdGhlIHVzdWFsIHdheSB0byBpdGVyYXRlIHRocm91Z2ggYW5kIGR1bXAgZGF0YSBvdmVyIE5ldGxpbmsuIExldCYjMzk7cyBzZWUgd2hhdCBgZmliNl9kdW1wX25vZGVgIGlzIGRvaW5nIGludGVybmFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJUHY2IEZJQiBkYXRhIHN0cnVjdHVyZXMgZHVyaW5nIGEgZHVtcCBvcGVyYXRpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IGl0IHdvcmtzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmaWI2X2R1bXBfbm9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L2lwNl9maWIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9pcDZfZmliLmM9NDkyPWludCBmaWI2X3RhYmxlc19kdW1wKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYixcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmMtNTI3LVxubmV0L2lwdjYvaXA2X2ZpYi5jOjUyODpzdGF0aWMgaW50IGZpYjZfZHVtcF9ub2RlKHN0cnVjdCBmaWI2X3dhbGtlciAqdylcbm5ldC9pcHY2L2lwNl9maWIuYy01Mjkte1xuLS1cbm5ldC9pcHY2L2lwNl9maWIuYz02MzE9c3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTY2OC1cdFx0fVxubmV0L2lwdjYvaXA2X2ZpYi5jOjY2OTpcdFx0dy1cdTAwM2VmdW5jID0gZmliNl9kdW1wX25vZGU7XG5uZXQvaXB2Ni9pcDZfZmliLmMtNjcwLVx0XHRjYi1cdTAwM2VhcmdzWzJdID0gKGxvbmcpdztcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA4NQoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEyOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBSb3V0aW5nIEJ1ZyBGaXgqKgoKT2theSwgc28gbG9va2luZyBhdCB0aGlzLCBpdCYjMzk7cyBjbGVhciB0aGUgY29yZSBpc3N1ZSBsaWVzIHdpdGhpbiBgaW5ldDZfZHVtcF9maWJgLCB3aGljaCwgYXMgd2Uga25vdywgaXMgdGhlIG5ldGxpbmsgZHVtcCBmdW5jdGlvbiByZXNwb25zaWJsZSBmb3IgSVB2NiByb3V0ZXMuIFRoZSBidWcgZml4IGl0c2VsZiBpcyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AsIHRoZSBmdW5jdGlvbiBjYWxsZWQgZHVyaW5nIHRoZSBuZXRsaW5rIGR1bXAgcHJvY2VzcyBzcGVjaWZpY2FsbHkgZm9yIElQdjYgcm91dGVzLiBUaGUgZml4IGlzIHByZXR0eSBzdHJhaWdodGZvcndhcmQ6IHN3YXAgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB3aXRoIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgLiBTaW1wbGUgY2hhbmdlLCBidXQgcG90ZW50aWFsbHkgY3JpdGljYWwgZm9yIHN0YWJpbGl0eSBkdXJpbmcgbmV0bGluayBkdW1wcy4KCkdpdmVuIHRoaXMsIEkmIzM5O20gYWxyZWFkeSB0aGlua2luZyB0aGlzIGlzIGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBJIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZSBzeW1ib2xzIEkga25vdyBhcmUgaW52b2x2ZWQ6IGBydDZfZHVtcF9yb3V0ZWAsIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCwgYW5kIGBpbmV0Nl9kdW1wX2ZpYmAuIEFuZCBvZiBjb3Vyc2UsIHRoZSBgSVBWNmAgY29uZmlnIG5lZWRzIHRvIGJlIGVuYWJsZWQgZm9yIGl0IGFsbCB0byBtYXR0ZXIuIFRoaXMgc2VlbXMgbGlrZSBhIGZhaXJseSBpc29sYXRlZCBhcmVhLCBidXQgdGhlIGltcGFjdCBvZiBhIGJ1ZyBpbiBhIG5ldGxpbmsgZHVtcCBjYW4gYmUgc2V2ZXJlLCBwb3RlbnRpYWxseSBjYXVzaW5nIGhhbmdzIG9yIGV2ZW4gbW9yZSBzZXJpb3VzIGlzc3VlcyBpZiB0cmlnZ2VyZWQgZHVyaW5nIGEgcm91dGluZyB1cGRhdGUuIFRpbWUgdG8gZ2V0IHRoZSBmdXp6ZXIgcnVubmluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvaXA2X2ZpYi5jPTU4NT1zdGF0aWMgaW50IGZpYjZfZHVtcF90YWJsZShzdHJ1Y3QgZmliNl90YWJsZSAqdGFibGUsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjYvaXA2X2ZpYi5jLTYzMC1cbm5ldC9pcHY2L2lwNl9maWIuYzo2MzE6c3RhdGljIGludCBpbmV0Nl9kdW1wX2ZpYihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgbmV0bGlua19jYWxsYmFjayAqY2IpXG5uZXQvaXB2Ni9pcDZfZmliLmMtNjMyLXtcbi0tXG5uZXQvaXB2Ni9pcDZfZmliLmM9MjU2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0bmxfbXNnX2hhbmRsZXIgZmliNl9ydG5sX21zZ19oYW5kbGVyc1tdIF9faW5pdGNvbnN0X29yX21vZHVsZSA9IHtcbm5ldC9pcHY2L2lwNl9maWIuYy0yNTY0LVx0ey5vd25lciA9IFRISVNfTU9EVUxFLCAucHJvdG9jb2wgPSBQRl9JTkVUNiwgLm1zZ3R5cGUgPSBSVE1fR0VUUk9VVEUsXG5uZXQvaXB2Ni9pcDZfZmliLmM6MjU2NTpcdCAuZHVtcGl0ID0gaW5ldDZfZHVtcF9maWIsXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjU2Ni1cdCAuZmxhZ3MgPSBSVE5MX0ZMQUdfRFVNUF9VTkxPQ0tFRCB8IFJUTkxfRkxBR19EVU1QX1NQTElUX05MTV9ET05FfSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDgwNgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBJUHY2IENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYElQVjZgLiBUaGF0IHRlbGxzIG1lIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggSVB2Niwgd2hpY2ggaXMgcHJldHR5IGZ1bmRhbWVudGFsIHRvIG1vZGVybiBuZXR3b3JraW5nLCBidXQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQmIzM5O3Mgc2V0IHVwIHdpdGhpbiB0aGlzIGNvbnRleHQuIEkgaW1tZWRpYXRlbHkgdGhpbmsgdG8gY2hlY2sgdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIFRoYXQmIzM5O3Mgd2hlcmUgYWxsIHRoZSByZWxldmFudCBJUHY2IG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQuIEJ5IGV4YW1pbmluZyBgbmV0L2lwdjYvS2NvbmZpZ2AsIEkgY2FuIHVuZGVyc3RhbmQgcHJlY2lzZWx5IGhvdyBgSVBWNmAgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBob3cgdGhpcyBzeXN0ZW0gaGFuZGxlcyBJUHY2LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZy01LVxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy0yMC1cbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcbm5ldC9pcHY2L0tjb25maWctMjItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzAtXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cbm5ldC9pcHY2L0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzgtXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTktXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcbm5ldC9pcHY2L0tjb25maWctMTIxLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTc2LVxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O0lQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTk1LVxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcbm5ldC9pcHY2L0tjb25maWctMTk3LVx0Ym9vbFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMDktXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcbm5ldC9pcHY2L0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogR1JFIHR1bm5lbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjI3LVxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcbm5ldC9pcHY2L0tjb25maWctMjU4LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjY0LVxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yNjYtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjc4LVxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcbm5ldC9pcHY2L0tjb25maWctMjgwLVx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjk5LVxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzExLVxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcbm5ldC9pcHY2L0tjb25maWctMzEzLVx0ZGVmX2Jvb2wgeVxuLS1cbm5ldC9pcHY2L0tjb25maWctMzE2LVxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cdGJvb2wgXCYjMzQ7SVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMjctXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXHRib29sIFwmIzM0O0lQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTU4CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogNzgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVidWdnaW5nIElQdjYgUm91dGluZyBFeGNlcHRpb25zKioKCk9rYXksIHNvIHRoZSBidWcgZml4IGlzIHN1cHBvc2VkIHRvIGJlIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIElQdjYtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIExldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzZXR0aW5ncyB0aGF0IG1pZ2h0IGJlIGluZmx1ZW5jaW5nIHRoaXMgYmVoYXZpb3Ig4oCTIGBJUFY2X01VTFRJUExFX1RBQkxFU2AgYW5kIGBJUFY2X1JPVVRFX0lORk9gIGltbWVkaWF0ZWx5IGNvbWUgdG8gbWluZC4gSSBrbm93IHRoaXMgYXJlYSBpbnNpZGUgYW5kIG91dCwgc28gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IGNyb3NzLXJlZmVyZW5jZSB0aGF0IGZ1bmN0aW9uIHdpdGhpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGNvbnRleHQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCYjMzk7cyBnb2luZyBvbiBhbmQgdmVyaWZ5IHRoZSBmaXguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9yb3V0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L3JvdXRlLmM9NjAyOD1zdHJ1Y3QgZmliNl9uaF9leGNlcHRpb25fZHVtcF93YWxrZXIge1xuLS1cbm5ldC9pcHY2L3JvdXRlLmMtNjAzNS1cbm5ldC9pcHY2L3JvdXRlLmM6NjAzNjpzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwMzcte1xuLS1cbm5ldC9pcHY2L3JvdXRlLmM9NjA4OT1pbnQgcnQ2X2R1bXBfcm91dGUoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnLCB1bnNpZ25lZCBpbnQgc2tpcClcbi0tXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDItXHRcdFx0ZXJyID0gbmV4dGhvcF9mb3JfZWFjaF9maWI2X25oKHJ0LVx1MDAzZW5oLFxubmV0L2lwdjYvcm91dGUuYzo2MTQzOlx0XHRcdFx0XHRcdCAgICAgICBydDZfbmhfZHVtcF9leGNlcHRpb25zLFxubmV0L2lwdjYvcm91dGUuYy02MTQ0LVx0XHRcdFx0XHRcdCAgICAgICBcdTAwMjZ3KTtcbm5ldC9pcHY2L3JvdXRlLmMtNjE0NS1cdFx0fSBlbHNlIHtcbm5ldC9pcHY2L3JvdXRlLmM6NjE0NjpcdFx0XHRlcnIgPSBydDZfbmhfZHVtcF9leGNlcHRpb25zKHJ0LVx1MDAzZWZpYjZfbmgsIFx1MDAyNncpO1xubmV0L2lwdjYvcm91dGUuYy02MTQ3LVx0XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxMTYKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgSVBWNiBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgaXMgYWJvdXQgYElQVjZgLiBTdHJhaWdodGZvcndhcmQuIFRoZSBidWcgZml4IGl0c2VsZiBzZWVtcyBmdW5jdGlvbmFsOyBpdCBhZGRyZXNzZXMgYW4gUkNVIHRyYXZlcnNhbCBpc3N1ZSwgd2hpY2ggaXMgZ29vZC4gRGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLCBiYXNlZCBvbiB0aGUgYFdvcnRoRnV6emluZzogdHJ1ZWAgZmxhZy4gTXkgZm9jdXMgZm9yIHRlc3Rpbmcgd2lsbCBiZSBvbiB0aG9zZSB0aHJlZSBzeW1ib2xzOiBgcnQ2X2R1bXBfcm91dGVgLCBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AsIGFuZCBgaW5ldDZfZHVtcF9maWJgLiBUaG9zZSBzZWVtIGxpa2UgdGhlIGtleSBhcmVhcyB0byBwcm9iZS4gVGhlIG5lY2Vzc2FyeSBjb25maWd1cmF0aW9uIGlzIHN0cmFpZ2h0Zm9yd2FyZDogYEVuYWJsZUNvbmZpZ3M6IElQVjZgLgoKTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgYElQVjZgIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBSaWdodCwgaXQmIzM5O3MgYSBgbWVudWNvbmZpZ2Agb3B0aW9uIHdpdGhpbiBgbmV0L2lwdjYvS2NvbmZpZ2AuIEFuZCwgYXMgSSBzdXNwZWN0ZWQsIGl0IGRlcGVuZHMgb24gYElORVRgLiBUaGF0JiMzOTtzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQsIGluIGNhc2UgaXQgYWZmZWN0cyBob3cgSSBuZWVkIHRvIHNldCB1cCB0aGUgdGVzdGluZyBlbnZpcm9ubWVudC4gR290IGl0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttZW51Y29uZmlnIElQVjYmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWctNS1cbm5ldC9pcHY2L0tjb25maWc6NjptZW51Y29uZmlnIElQVjZcbm5ldC9pcHY2L0tjb25maWctNy1cdGJvb2wgXCYjMzQ7VGhlIElQdjYgcHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzUxOAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkV4YW1pbmluZyBJUHY2IENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYG5ldC9pcHY2L0tjb25maWdgIGZpbGUuIEdpdmVuIHRoZSBzdWJqZWN0IG1hdHRlciwgdGhhdCYjMzk7cyB3aGVyZSBJJiMzOTtkIGV4cGVjdCB0byBmaW5kIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gSVB2Ni4gSSBuZWVkIHRvIHF1aWNrbHkgYXNjZXJ0YWluIGFueSBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgYElQVjZgIHN5bWJvbCBtaWdodCBoYXZlLiBBcmUgdGhlcmUgYW55IHByZXJlcXVpc2l0ZXMsIG90aGVyIGZlYXR1cmVzIGl0IHJlbGllcyBvbiwgb3IgY29uZmxpY3RzIHRvIGNvbnNpZGVyPyBVbmRlcnN0YW5kaW5nIHRoZXNlIHJlbGF0aW9uc2hpcHMgaXMgY3J1Y2lhbCBiZWZvcmUgbWFraW5nIGFueSBjaGFuZ2VzIG9yIGVuYWJsaW5nIElQdjYgZnVuY3Rpb25hbGl0eS4gV2UgbmVlZCB0byBlbnN1cmUgdGhhdCB0aGUgcHJvcGVyIGJ1aWxkaW5nIGJsb2NrcyBhcmUgaW4gcGxhY2UgYW5kIHRoYXQgd2UgYXZvaWQgYW55IHVuZXhwZWN0ZWQgaXNzdWVzIGR1cmluZyBjb21waWxhdGlvbiBvciBydW50aW1lLiBUaW1lIHRvIGdldCBkaWdnaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgSVBWNiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY2L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvS2NvbmZpZy01LVxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy03LVx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxubmV0L2lwdjYvS2NvbmZpZy0yMC1cbm5ldC9pcHY2L0tjb25maWc6MjE6Y29uZmlnIElQVjZfUk9VVEVSX1BSRUZcbm5ldC9pcHY2L0tjb25maWctMjItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlciBQcmVmZXJlbmNlIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzAtXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cbm5ldC9pcHY2L0tjb25maWctMzItXHRib29sIFwmIzM0O0lQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzgtXG5uZXQvaXB2Ni9LY29uZmlnOjM5OmNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXG5uZXQvaXB2Ni9LY29uZmlnLTQwLVx0Ym9vbCBcJiMzNDtJUHY2OiBFbmFibGUgUkZDIDQ0MjkgT3B0aW1pc3RpYyBEQURcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXG5uZXQvaXB2Ni9LY29uZmlnOjExMjpjb25maWcgSVBWNl9NSVA2XG5uZXQvaXB2Ni9LY29uZmlnLTExMy1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IE1vYmlsaXR5XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xMTktXG5uZXQvaXB2Ni9LY29uZmlnOjEyMDpjb25maWcgSVBWNl9JTEFcbm5ldC9pcHY2L0tjb25maWctMTIxLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSWRlbnRpZmllciBMb2NhdG9yIEFkZHJlc3NpbmcgKElMQSlcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTE0Nj1jb25maWcgSU5FVDZfVFVOTkVMXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0xNDktXG5uZXQvaXB2Ni9LY29uZmlnOjE1MDpjb25maWcgSVBWNl9WVElcbm5ldC9pcHY2L0tjb25maWctMTUxLVx0dHJpc3RhdGUgXCYjMzQ7VmlydHVhbCAoc2VjdXJlKSBJUHY2OiB0dW5uZWxpbmdcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTE2MS1cbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxubmV0L2lwdjYvS2NvbmZpZy0xNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTc2LVxubmV0L2lwdjYvS2NvbmZpZzoxNzc6Y29uZmlnIElQVjZfU0lUXzZSRFxubmV0L2lwdjYvS2NvbmZpZy0xNzgtXHRib29sIFwmIzM0O0lQdjY6IElQdjYgUmFwaWQgRGVwbG95bWVudCAoNlJEKVwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMTk1LVxubmV0L2lwdjYvS2NvbmZpZzoxOTY6Y29uZmlnIElQVjZfTkRJU0NfTk9ERVRZUEVcbm5ldC9pcHY2L0tjb25maWctMTk3LVx0Ym9vbFxubmV0L2lwdjYvS2NvbmZpZy0xOTgtXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjAwLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMDktXG5uZXQvaXB2Ni9LY29uZmlnOjIxMDpjb25maWcgSVBWNl9HUkVcbm5ldC9pcHY2L0tjb25maWctMjExLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogR1JFIHR1bm5lbFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjI3LVxubmV0L2lwdjYvS2NvbmZpZzoyMjg6Y29uZmlnIElQVjZfRk9VXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXG5uZXQvaXB2Ni9LY29uZmlnOjIzMjpjb25maWcgSVBWNl9GT1VfVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTIzMy1cdHRyaXN0YXRlXG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yMzYtXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcbm5ldC9pcHY2L0tjb25maWctMjM4LVx0Ym9vbCBcJiMzNDtJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjQyLVxubmV0L2lwdjYvS2NvbmZpZzoyNDM6Y29uZmlnIElQVjZfU1VCVFJFRVNcbm5ldC9pcHY2L0tjb25maWctMjQ0LVx0Ym9vbCBcJiMzNDtJUHY2OiBzb3VyY2UgYWRkcmVzcyBiYXNlZCByb3V0aW5nXCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0yNTYtXG5uZXQvaXB2Ni9LY29uZmlnOjI1Nzpjb25maWcgSVBWNl9NUk9VVEVcbm5ldC9pcHY2L0tjb25maWctMjU4LVx0Ym9vbCBcJiMzNDtJUHY2OiBtdWx0aWNhc3Qgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjY0LVxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xubmV0L2lwdjYvS2NvbmZpZy0yNjYtXHRib29sIFwmIzM0O0lQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1wmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjc4LVxubmV0L2lwdjYvS2NvbmZpZzoyNzk6Y29uZmlnIElQVjZfUElNU01fVjJcbm5ldC9pcHY2L0tjb25maWctMjgwLVx0Ym9vbCBcJiMzNDtJUHY2OiBQSU0tU00gdmVyc2lvbiAyIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTI4NS1cbm5ldC9pcHY2L0tjb25maWc6Mjg2OmNvbmZpZyBJUFY2X1NFRzZfTFdUVU5ORUxcbm5ldC9pcHY2L0tjb25maWctMjg3LVx0Ym9vbCBcJiMzNDtJUHY2OiBTZWdtZW50IFJvdXRpbmcgSGVhZGVyIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMjk5LVxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXG5uZXQvaXB2Ni9LY29uZmlnLTMwMS1cdGJvb2wgXCYjMzQ7SVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC9pcHY2L0tjb25maWctMzExLVxubmV0L2lwdjYvS2NvbmZpZzozMTI6Y29uZmlnIElQVjZfU0VHNl9CUEZcbm5ldC9pcHY2L0tjb25maWctMzEzLVx0ZGVmX2Jvb2wgeVxuLS1cbm5ldC9pcHY2L0tjb25maWctMzE2LVxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXG5uZXQvaXB2Ni9LY29uZmlnLTMxOC1cdGJvb2wgXCYjMzQ7SVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L2lwdjYvS2NvbmZpZy0zMjctXG5uZXQvaXB2Ni9LY29uZmlnOjMyODpjb25maWcgSVBWNl9JT0FNNl9MV1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZy0zMjktXHRib29sIFwmIzM0O0lQdjY6IElPQU0gUHJlLWFsbG9jYXRlZCBUcmFjZSBpbnNlcnRpb24gc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjY0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipLY29uZmlnIEluc3BlY3Rpb246IElQdjYgQ29uZmlndXJhdGlvbioqCgpPa2F5LCB0aW1lIHRvIGRpdmUgaW50byB0aGUgSVB2NiBjb25maWd1cmF0aW9uIG9wdGlvbnMuIE15IGluc3RpbmN0IGlzIHRvIHN0YXJ0IGJ5IGxvb2tpbmcgYXQgdGhlIEtjb25maWcgZmlsZSwgc3BlY2lmaWNhbGx5IGBuZXQvaXB2Ni9LY29uZmlnYC4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgbGluZXMgMSB0aHJvdWdoIDE1LiBUaGlzIHVzdWFsbHkgY292ZXJzIHRoZSB0b3AtbGV2ZWwgZGVmaW5pdGlvbnMsIHBvdGVudGlhbGx5IGluY2x1ZGluZyB0aGluZ3MgbGlrZSB0aGUgbWFpbiBJUHY2IHN3aXRjaCBvciB0aGUgc2VsZWN0aW9uIG9mIGltcG9ydGFudCBJUHY2IHByb3RvY29scywgb3IgcGVyaGFwcyBzb21lIGdlbmVyYWwgYnVpbGQgZW52aXJvbm1lbnQgcGFyYW1ldGVycyBvciBkZXBlbmRlbmNpZXMuIEhvcGVmdWxseSBJJiMzOTtsbCBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFuZCB0aGVpciBiYXNpYyB2aXNpYmlsaXR5IHJlcXVpcmVtZW50cy4gVGhpcyB3aWxsIHNldCB0aGUgc3RhZ2UgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbjsgaWYgbmVlZGVkIEkgd2lsbCBjb250aW51ZSBsb29raW5nIGF0IHRoaXMgc2VjdGlvbiwgdG8gZmluZCBhbnkgY2x1ZXMgdGhhdCBhcmUgbWlzc2luZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvaXB2Ni9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0I1xuICAgMzpcdCMgSVB2NiBjb25maWd1cmF0aW9uXG4gICA0Olx0I1xuICAgNTpcdFxuICAgNjpcdG1lbnVjb25maWcgSVBWNlxuICAgNzpcdFx0Ym9vbCBcJiMzNDtUaGUgSVB2NiBwcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVmYXVsdCB5XG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG4gIDEwOlx0XHRoZWxwXG4gIDExOlx0XHQgIFN1cHBvcnQgZm9yIElQIHZlcnNpb24gNiAoSVB2NikuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIEZvciBnZW5lcmFsIGluZm9ybWF0aW9uIGFib3V0IElQdjYsIHNlZVxuICAxNDpcdFx0ICBcdTAwM2NodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JUHY2XHUwMDNlLlxuICAxNTpcdFx0ICBGb3Igc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgSVB2NiB1bmRlciBMaW51eCwgc2VlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2NTUKCQkJCQkJCW91dHB1dDogMTEwCgkJCQkJCQl0aG91Z2h0czogMjI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IElQdjYgUm91dGluZyBDb25jZXJucyoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoaXMgSVB2NiBzdHVmZiwgc3BlY2lmaWNhbGx5IHRoZSByb3V0ZSBkdW1waW5nIGZ1bmN0aW9uYWxpdHkuIE15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtZZXAsIElQdjYgaXMgZGVmaW5pdGVseSB0aGUgcmVsZXZhbnQgYXJlYSBoZXJlLiYjMzQ7IE5vdywgSSYjMzk7bSBkaWdnaW5nIGludG8gdGhlIGNvZGUgYW5kIEkmIzM5O20gYSBiaXQgcGVycGxleGVkLiBJIHNlZSBgcnQ2X2R1bXBfcm91dGVgLCBhbmQgSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBpdCYjMzk7cyBleHBvcnRlZCBvciBub3QuIEl0JiMzOTtzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLCBidXQgaXQmIzM5O3MgKmFsc28qIG5vdCBleHBsaWNpdGx5IGV4cG9ydGVkIGluIHRoZSB1c3VhbCB3YXkuIEhtbS4gVGhlbiBJIGNoZWNrIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBhbmQgcmVhbGl6ZSAqdGhhdCogZnVuY3Rpb24gKmlzKiBkZWNsYXJlZCBhcyBzdGF0aWMuIEFuZCB3aGlsZSBJJiMzOTttIGF0IGl0LCBJIHNlZSB0aGF0IGBpbmV0Nl9kdW1wX2ZpYmAgaXMgYWxzbyBkZWNsYXJlZCBhcyBzdGF0aWMuCgpPa2F5LCBzbyBiYWNrIHRvIHRoZSBsaXN0Li4uIEl0JiMzOTtzIGxvb2tpbmcgbGlrZSBgcnQ2X2R1bXBfcm91dGVgIHNob3VsZCBiZSBpbmNsdWRlZC4gYW5kIGBpbmV0Nl9kdW1wX2ZpYmAgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYXMgd2VsbC4KCldhaXQgYSBzZWNvbmTigKYgSSYjMzk7dmUgZ290IGEgYml0IG9mIGEgY29udHJhZGljdGlvbiBoZXJlLi4uIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyBzdGF0aWMsIGJ1dCAqdGhhdCYjMzk7cyogdGhlIG9uZSB0aGF0IHNlZW1zIHRvIGhhdmUgYmVlbiBtb2RpZmllZC4gCgpTbywgSSYjMzk7bSBnb2luZyB0byByZXZpc2UgYW5kIGZvY3VzIG9uIGluY2x1ZGluZyBgcnQ2X2R1bXBfcm91dGVgIGFuZCBgaW5ldDZfZHVtcF9maWJgIGluIG15IGxpc3QgZm9yIG5vdy4gSXQgc2VlbXMgdGhhdGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBzaG91bGQgYmUgZXhlbXB0LgoKTGV0IG1lIGp1c3QgZG8gYSBxdWljayBzY2FuIHRvIGNvbmZpcm0gdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMgb3IgZmxhZ3MgSSYjMzk7bSBtaXNzaW5nLiBOb3BlLCBzdGlsbCBjb25maWRlbnQgaW4gYElQVjZgLgoKVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljLiBJdCYjMzk7cyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB0aGF0IGdldHMgaGl0IGR1cmluZyBJUHY2IHJvdXRlIG5ldGxpbmsgZHVtcHMuIEdpdmVuIHRoZSBmdW5jdGlvbmFsIGltcGFjdCwgdGhpcyBkZWZpbml0ZWx5IG5lZWRzIGZ1enppbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtJUFY2JiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnQ2X2R1bXBfcm91dGUmIzM0OywKICAgICYjMzQ7aW5ldDZfZHVtcF9maWImIzM0OywKICAgICYjMzQ7ZmliNl9kdW1wX25vZGUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2Agd2hpY2ggaXMgcmVhY2hhYmxlIGR1cmluZyBJUHY2IHJvdXRlIG5ldGxpbmsgZHVtcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIElQdjYgcm91dGluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBWNiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3J0Nl9kdW1wX3JvdXRlJiMzNDssCiAgICAmIzM0O2luZXQ2X2R1bXBfZmliJiMzNDssCiAgICAmIzM0O2ZpYjZfZHVtcF9ub2RlJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIFJDVSBsaXN0IHRyYXZlcnNhbCBidWcgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHdoaWNoIGlzIHJlYWNoYWJsZSBkdXJpbmcgSVB2NiByb3V0ZSBuZXRsaW5rIGR1bXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBJUHY2IHJvdXRpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjUvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTUgMDk6MzE8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBhIGxpc3QgdHJhdmVyc2FsIG1hY3JvIGZyb20gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB0byBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgdG8gcHJvcGVybHkgdXNlIFJDVSBwcmltaXRpdmVzLiBUaGlzIGFkZHJlc3NlcyBwb3RlbnRpYWwgZGF0YSByYWNlcywgdXNlLWFmdGVyLWZyZWUgYnVncywgb3IgbG9ja2RlcCB3YXJuaW5ncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIG1lbW9yeSBhbGxvY2F0aW9uLCBpbml0aWFsaXphdGlvbiwgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDkxOTUwYTg2NzBkOWUxZWJkMmU3MzM1ZjUyMGViOWMzOTQxM2M1NzQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU2F0IEF1ZyAxNSAwOTozMDoxNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3JvdXRlLmMgYi9uZXQvaXB2Ni9yb3V0ZS5jCmluZGV4IDE2ZGZhYzU0YTI1OWEuLjUyNjUzNTM4NzUxMjMgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3JvdXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvcm91dGUuYwpAQCAtNjA0Niw3ICYjNDM7NjA0Niw3IEBAIHN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZykKIAkJcmV0dXJuIDA7CiAKIAlmb3IgKGkgPSAwOyBpICZsdDsgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkmIzQzOyYjNDM7KSB7Ci0JCWhsaXN0X2Zvcl9lYWNoX2VudHJ5KHJ0Nl9leCwgJmFtcDtidWNrZXQtJmd0O2NoYWluLCBobGlzdCkgewomIzQzOwkJaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgJmFtcDtidWNrZXQtJmd0O2NoYWluLCBobGlzdCkgewogCQkJaWYgKHctJmd0O3NraXApIHsKIAkJCQl3LSZndDtza2lwLS07CiAJCQkJY29udGludWU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNSAwOTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDEyCgkJCQkJCQlvdXRwdXQ6IDE0OQoJCQkJCQkJdGhvdWdodHM6IDM0MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSQ1UgRml4IGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCoqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIHJlcGxhY2VzIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgd2l0aCBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCB3aXRoaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIGluIGBuZXQvaXB2Ni9yb3V0ZS5jYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoaXMgaXMgYWxtb3N0IGNlcnRhaW5seSBhbiBSQ1UtcmVsYXRlZCBmaXgsIGxpa2VseSB0YXJnZXRpbmcgYSBtaXNzZWQgUkNVIHByb3RlY3Rpb24gb3IgYSBwb3RlbnRpYWwgZGF0YSByYWNlIG9yIHVzZS1hZnRlci1mcmVlIHNpdHVhdGlvbiBpbiB0aGUgbGlzdCB0cmF2ZXJzYWwuIEdpdmVuIHRoZSBjb250ZXh0LCBpdCB3b3VsZCBoYXZlIGJlZW4gY2F1Z2h0IGJ5IEtBU0FOLCBMT0NLREVQLCBvciBLQ1NBTi4KCk15IGltbWVkaWF0ZSBxdWVzdGlvbiwgYXMgYWx3YXlzLCBpcyB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBvciBleHBvc2VzIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcy4gTGV0JiMzOTtzIGRpZyBkZWVwZXIuIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyB1c2VkIGZvciBkdW1waW5nIGV4Y2VwdGlvbnMsIHByZXN1bWFibHkgdmlhIG5ldGxpbmssIHdoaWNoIHN1Z2dlc3RzIHRoZSBkYXRhIGlzIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLiBCdXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIG1hY3JvIGl0c2VsZi4gV2UmIzM5O3JlIG5vdCBzZWVpbmcgbmV3IGFsbG9jYXRpb25zLCBkYXRhIGNvcGllcywgb3Igb3RoZXIgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIGludHJvZHVjZSBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSB2dWxuZXJhYmlsaXR5LiBJdCYjMzk7cyBqdXN0IGEgY2hhbmdlIGluIHRoZSB3YXkgd2UgdHJhdmVyc2UgdGhlIGxpc3QuCgpUaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGlzIG5vdCByZWxldmFudCB0byBLTVNBTi4gVGhlIHJlYXNvbmluZyBpcyBzb2xpZC4gSSYjMzk7bGwgbWFyayBgTmVlZHNLTVNBTj1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE1IDA5OjMxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggY2hhbmdlcyBhIGxpc3QgdHJhdmVyc2FsIG1hY3JvIGZyb20gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB0byBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgdG8gcHJvcGVybHkgdXNlIFJDVSBwcmltaXRpdmVzLiBUaGlzIGFkZHJlc3NlcyBwb3RlbnRpYWwgZGF0YSByYWNlcywgdXNlLWFmdGVyLWZyZWUgYnVncywgb3IgbG9ja2RlcCB3YXJuaW5ncywgd2hpY2ggYXJlIGVmZmVjdGl2ZWx5IGRldGVjdGVkIGJ5IEtBU0FOLCBLQ1NBTiwgYW5kIExPQ0tERVAuIFRoZXJlIGFyZSBubyBjaGFuZ2VzIHRvIG1lbW9yeSBhbGxvY2F0aW9uLCBpbml0aWFsaXphdGlvbiwgb3IgZGF0YSBjb3B5aW5nIHRvIHVzZXJzcGFjZSB0aGF0IGNvdWxkIGludHJvZHVjZSB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkcyBvciBpbmZvLWxlYWtzLiBUaGVyZWZvcmUsIEtNU0FOIGlzIG5vdCBhcHBsaWNhYmxlIGhlcmUuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjE3LjQzMzM1Nzk1MloiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5ODExMDk5Njc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydDZfZHVtcF9yb3V0ZVwiLFxuICAgIFwiaW5ldDZfZHVtcF9maWJcIixcbiAgICBcImZpYjZfZHVtcF9ub2RlXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGEgbGlzdCB0cmF2ZXJzYWwgbWFjcm8gZnJvbSBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIHRvIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB0byBwcm9wZXJseSB1c2UgUkNVIHByaW1pdGl2ZXMuIFRoaXMgYWRkcmVzc2VzIHBvdGVudGlhbCBkYXRhIHJhY2VzLCB1c2UtYWZ0ZXItZnJlZSBidWdzLCBvciBsb2NrZGVwIHdhcm5pbmdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4sIEtDU0FOLCBhbmQgTE9DS0RFUC4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gbWVtb3J5IGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDoxNy40MzMzNjMzNjJaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NzIxMTY1MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDkxOTUwYTg2NzBkOWUxZWJkMmU3MzM1ZjUyMGViOWMzOTQxM2M1NzRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDk6MzA6MTYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvcm91dGUuYyBiL25ldC9pcHY2L3JvdXRlLmNcXG5pbmRleCAxNmRmYWM1NGEyNTlhLi41MjY1MzUzODc1MTIzIDEwMDY0NFxcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcXG4rKysgYi9uZXQvaXB2Ni9yb3V0ZS5jXFxuQEAgLTYwNDYsNyArNjA0Niw3IEBAIHN0YXRpYyBpbnQgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhzdHJ1Y3QgZmliNl9uaCAqbmgsIHZvaWQgKmFyZylcXG4gXFx0XFx0cmV0dXJuIDA7XFxuIFxcbiBcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkrKykge1xcbi1cXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeShydDZfZXgsIFxcdTAwMjZidWNrZXQtXFx1MDAzZWNoYWluLCBobGlzdCkge1xcbitcXHRcXHRobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3UocnQ2X2V4LCBcXHUwMDI2YnVja2V0LVxcdTAwM2VjaGFpbiwgaGxpc3QpIHtcXG4gXFx0XFx0XFx0aWYgKHctXFx1MDAzZXNraXApIHtcXG4gXFx0XFx0XFx0XFx0dy1cXHUwMDNlc2tpcC0tO1xcbiBcXHRcXHRcXHRcXHRjb250aW51ZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6MTcuODAxMjA5MDY0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDM1NzM0ODA4MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBWNlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0Nl9kdW1wX3JvdXRlXCIsXG4gICAgXCJpbmV0Nl9kdW1wX2ZpYlwiLFxuICAgIFwiZmliNl9kdW1wX25vZGVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBSQ1UgbGlzdCB0cmF2ZXJzYWwgYnVnIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB3aGljaCBpcyByZWFjaGFibGUgZHVyaW5nIElQdjYgcm91dGUgbmV0bGluayBkdW1wcy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgSVB2NiByb3V0aW5nIGxvZ2ljIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MTk1MGE4NjcwZDllMWViZDJlNzMzNWY1MjBlYjljMzk0MTNjNTc0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDk6MzA6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggMTZkZmFjNTRhMjU5YS4uNTI2NTM1Mzg3NTEyMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC02MDQ2LDcgKzYwNDYsNyBAQCBzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkrKykge1xuLVx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeShydDZfZXgsIFx1MDAyNmJ1Y2tldC1cdTAwM2VjaGFpbiwgaGxpc3QpIHtcbitcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuIFx0XHRcdGlmICh3LVx1MDAzZXNraXApIHtcbiBcdFx0XHRcdHctXHUwMDNlc2tpcC0tO1xuIFx0XHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDoxNy44MDEyMTAzMjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyNzM4MzM5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdW5kZXJzdGFuZGluZyBvZiB0aGUgc2l0dWF0aW9uLCBnaXZlbiB0aGlzIHBhdGNoOlxuXG4qKkFuYWx5emluZyBhbiBSQ1UgQnVnIEZpeCBpbiBJUHY2IFJvdXRpbmcqKlxuXG5Pa2F5LCBzbyB0aGUgY2hhbmdlIGlzIHByZXR0eSBzcGVjaWZpYzogd2UncmUgc3dhcHBpbmcgb3V0IGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgd2l0aCBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YCB3aXRoaW4gdGhlIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBmdW5jdGlvbiBpbiBgbmV0L2lwdjYvcm91dGUuY2AuIFRoaXMgaXMgc2NyZWFtaW5nIFwiUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBmaXhcIiB0byBtZSwgaW1tZWRpYXRlbHkuIE15IGd1dCBmZWVsaW5nIGlzIHRoaXMgaXMgcHJvYmFibHkgYSBjbGFzc2ljIGNhc2Ugd2hlcmUgdGhlIG9yaWdpbmFsIGNvZGUgd2Fzbid0IGNvcnJlY3RseSBoYW5kbGluZyBjb25jdXJyZW50IHJlYWQgYW5kIHdyaXRlIG9wZXJhdGlvbnMgb24gYW4gUkNVLXByb3RlY3RlZCBkYXRhIHN0cnVjdHVyZS4gVGhlIHJlZ3VsYXIgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCBtYWNybyBpc24ndCBSQ1Utc2FmZSwgc28gdGhpcyBwYXRjaCBpcyBmaXhpbmcgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uXG5cbk15IG5leHQgbW92ZSBpcyBjbGVhcjogSSBuZWVkIHRvIGRpZyBpbnRvIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpdHNlbGYgYW5kIHVuZGVyc3RhbmQgaXRzIGV4YWN0IHJvbGUgYW5kIHRoZSBicm9hZGVyIGNvbnRleHQgb2YgaXRzIHVzYWdlLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHdoZXJlIHRoZSBsaXN0IGJlaW5nIHRyYXZlcnNlZCBpcyBkZWZpbmVkLCBob3cgaXQncyBwb3B1bGF0ZWQgYW5kIG1vZGlmaWVkLCBhbmQgd2hhdCBvdGhlciBjb2RlIGlzIHBvdGVudGlhbGx5IGFjY2Vzc2luZyBpdCBjb25jdXJyZW50bHkuIEkgZXhwZWN0IEknbGwgd2FudCB0byB0cmFjZSBiYWNrIHRoZSBkYXRhIHN0cnVjdHVyZXMgaW52b2x2ZWQgdG8gYmUgMTAwJSBzdXJlLiBUaGlzIHBhdGNoIGlzIGEgcmVkIGZsYWcgdGhhdCB0aGVyZSdzIGEgcHJvYmxlbSBoZXJlLCBhbmQgSSdsbCB3YW50IHRvIGdldCBhIGdvb2QgdW5kZXJzdGFuZGluZyBvZiB3aGF0IHRoZSBvcmlnaW5hbCBpc3N1ZSB3YXMsIGJlZm9yZSBJIGV2YWx1YXRlIHRoZSBmaXguIEknbGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIHZhbGlkIGZpeCBmb3IgdGhlIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDE1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODEsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDoyMS40MDM5NTIzMDNaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDM0MzA4OTYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQ2X25oX2R1bXBfZXhjZXB0aW9uc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NjAyOD1zdHJ1Y3QgZmliNl9uaF9leGNlcHRpb25fZHVtcF93YWxrZXIge1xcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02MDM1LVxcbm5ldC9pcHY2L3JvdXRlLmM6NjAzNjpzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXFxubmV0L2lwdjYvcm91dGUuYy02MDM3LXtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmM9NjA4OT1pbnQgcnQ2X2R1bXBfcm91dGUoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnLCB1bnNpZ25lZCBpbnQgc2tpcClcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjE0Mi1cXHRcXHRcXHRlcnIgPSBuZXh0aG9wX2Zvcl9lYWNoX2ZpYjZfbmgocnQtXFx1MDAzZW5oLFxcbm5ldC9pcHY2L3JvdXRlLmM6NjE0MzpcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyxcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDQtXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcdTAwMjZ3KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDUtXFx0XFx0fSBlbHNlIHtcXG5uZXQvaXB2Ni9yb3V0ZS5jOjYxNDY6XFx0XFx0XFx0ZXJyID0gcnQ2X25oX2R1bXBfZXhjZXB0aW9ucyhydC1cXHUwMDNlZmliNl9uaCwgXFx1MDAyNncpO1xcbm5ldC9pcHY2L3JvdXRlLmMtNjE0Ny1cXHRcXHR9XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjIxLjQ0NzM4OTAwOVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTEwMzU5MDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSdtIHRoaW5raW5nIHRocm91Z2ggdGhpcyBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBgcnQ2X2R1bXBfcm91dGVgIEZ1bmN0aW9uKipcblxuT2theSwgc28gYHJ0Nl9kdW1wX3JvdXRlYCBpcyB3aGVyZSB0aGUgYWN0aW9uIGlzIHN0YXJ0aW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0J3MgaGFwcGVuaW5nIGhlcmUsIHNvIGxldCdzIGdldCByaWdodCBpbnRvIGV4YW1pbmluZyB0aGF0IGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gYW5hbHl6ZSBpdHMgY29kZSB0byBmaWd1cmUgb3V0IGV4YWN0bHkgaG93IGl0J3MgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgcm91dGluZyB0YWJsZSBhbmQgd2hhdCBkYXRhIGl0J3MgZXh0cmFjdGluZy4gVGhpcyBpcyBsaWtlbHkgdGhlIGVudHJ5IHBvaW50IHRvIGludmVzdGlnYXRlIHRoZSBkYXRhIGV4cG9ydC4gTGV0J3Mgc2VlIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjc1NCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjI2LjkzODQyNzIzNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU4NTM0NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydDZfZHVtcF9yb3V0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L3JvdXRlLmM9NjAzNj1zdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwODgtLyogUmV0dXJuIC0xIGlmIGRvbmUgd2l0aCBub2RlLCBudW1iZXIgb2YgaGFuZGxlZCByb3V0ZXMgb24gcGFydGlhbCBkdW1wICovXFxubmV0L2lwdjYvcm91dGUuYzo2MDg5OmludCBydDZfZHVtcF9yb3V0ZShzdHJ1Y3QgZmliNl9pbmZvICpydCwgdm9pZCAqcF9hcmcsIHVuc2lnbmVkIGludCBza2lwKVxcbm5ldC9pcHY2L3JvdXRlLmMtNjA5MC17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjI2Ljk4MzAxNzY3WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzMwNTMwNDU1OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBydDZfZHVtcF9yb3V0ZWAncyBVc2FnZSoqXG5cbk9rYXksIHNvIEknbSBkaWdnaW5nIGludG8gdGhpcyBgcnQ2X2R1bXBfcm91dGVgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyBhIGZ1bmRhbWVudGFsIHF1ZXN0aW9uIGFib3V0IGl0cyBzY29wZSBhbmQgdXNhZ2UuIElzIHRoaXMgZnVuY3Rpb24gYW4gZXh0ZXJuYWxseS1mYWNpbmcgQVBJLCBvciBpcyBpdCBhbiBpbnRlcm5hbCB1dGlsaXR5IHRoYXQncyBvbmx5IGV2ZXIgY2FsbGVkIHdpdGhpbiB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlIG9yIHN1YnN5c3RlbT8gS25vd2luZyB3aGV0aGVyIGl0J3MgZXhwb3J0ZWQgYW5kIG1lYW50IGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgc3lzdGVtIHRvIHVzZSwgb3IgaWYgaXQncyBwcmltYXJpbHkgYW4gaW50ZXJuYWwgZGVidWdnaW5nIHRvb2wsIGlzIGNyaXRpY2FsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBwdXJwb3NlIGFuZCBwb3RlbnRpYWwgaW1wYWN0LiBJZiBpdCdzIGV4cG9ydGVkLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMgYXJlIGRlcGVuZGluZyBvbiB0aGlzLCBhbmQgaG93IGl0IGlzIGJlaW5nIGNhbGxlZCBmcm9tIGVsc2V3aGVyZS4gVGhpcyBpcyB0aGUgc3RhcnRpbmcgcG9pbnQgZm9yIHJlYWxseSBkaWdnaW5nIGluIGFuZCB1bmRlcnN0YW5kaW5nIGl0cyBicm9hZGVyIGltcGFjdC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhlIGNhbGxzIGFyZSBjb21pbmcgZnJvbSB0byB1bmRlcnN0YW5kIGl0cyBjb250ZXh0LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDc3LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6MzAuMjg4MzI0NzhaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ4NDYwMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicnQ2X2R1bXBfcm91dGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz01Mjg9c3RhdGljIGludCBmaWI2X2R1bXBfbm9kZShzdHJ1Y3QgZmliNl93YWxrZXIgKncpXFxuLS1cXG5uZXQvaXB2Ni9pcDZfZmliLmMtNTMzLVxcdGZvcl9lYWNoX2ZpYjZfd2Fsa2VyX3J0KHcpIHtcXG5uZXQvaXB2Ni9pcDZfZmliLmM6NTM0OlxcdFxcdHJlcyA9IHJ0Nl9kdW1wX3JvdXRlKHJ0LCB3LVxcdTAwM2VhcmdzLCB3LVxcdTAwM2Vza2lwX2luX25vZGUpO1xcbm5ldC9pcHY2L2lwNl9maWIuYy01MzUtXFx0XFx0aWYgKHJlcyBcXHUwMDNlPSAwKSB7XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwMzY9c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxcbi0tXFxubmV0L2lwdjYvcm91dGUuYy02MDg4LS8qIFJldHVybiAtMSBpZiBkb25lIHdpdGggbm9kZSwgbnVtYmVyIG9mIGhhbmRsZWQgcm91dGVzIG9uIHBhcnRpYWwgZHVtcCAqL1xcbm5ldC9pcHY2L3JvdXRlLmM6NjA4OTppbnQgcnQ2X2R1bXBfcm91dGUoc3RydWN0IGZpYjZfaW5mbyAqcnQsIHZvaWQgKnBfYXJnLCB1bnNpZ25lZCBpbnQgc2tpcClcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYwOTAte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDozMC4zMzMxNzY0ODZaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjU5NjQzNTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgdGhlIG9uZSB0aGlua2luZyBpdDpcblxuKipEaXZpbmcgaW50byBJUHY2IEZJQiBEdW1wIExvZ2ljKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHdlIGhhbmRsZSBOZXRsaW5rIGR1bXBzIGZvciB0aGUgSVB2NiBGSUIuIEkgcmVtZW1iZXIgYGZpYjZfZHVtcF9ub2RlYCBpcyB0aGUgZnVuY3Rpb24gdGhhdCBhY3R1YWxseSBnZXRzIGNhbGxlZCB3aGVuIHdlJ3JlIHRyeWluZyB0byBkdW1wIHRoZSBGSUIgZW50cmllcy4gSXQgbG9va3MgbGlrZSBpdCdzIGNhbGxlZCBmcm9tIGBmaWI2X3dhbGtgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCBtYWtlcyBzZW5zZTsgdGhhdCdzIHRoZSB1c3VhbCB3YXkgdG8gaXRlcmF0ZSB0aHJvdWdoIGFuZCBkdW1wIGRhdGEgb3ZlciBOZXRsaW5rLiBMZXQncyBzZWUgd2hhdCBgZmliNl9kdW1wX25vZGVgIGlzIGRvaW5nIGludGVybmFsbHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJUHY2IEZJQiBkYXRhIHN0cnVjdHVyZXMgZHVyaW5nIGEgZHVtcCBvcGVyYXRpb24uIFRpbWUgdG8gZGlnIGluIGFuZCBzZWUgaG93IGl0IHdvcmtzIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNTk3LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6MzMuOTkyODIyM1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzNTAwNDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZmliNl9kdW1wX25vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvaXA2X2ZpYi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz00OTI9aW50IGZpYjZfdGFibGVzX2R1bXAoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTUyNy1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6NTI4OnN0YXRpYyBpbnQgZmliNl9kdW1wX25vZGUoc3RydWN0IGZpYjZfd2Fsa2VyICp3KVxcbm5ldC9pcHY2L2lwNl9maWIuYy01Mjkte1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTYzMT1zdGF0aWMgaW50IGluZXQ2X2R1bXBfZmliKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBuZXRsaW5rX2NhbGxiYWNrICpjYilcXG4tLVxcbm5ldC9pcHY2L2lwNl9maWIuYy02NjgtXFx0XFx0fVxcbm5ldC9pcHY2L2lwNl9maWIuYzo2Njk6XFx0XFx0dy1cXHUwMDNlZnVuYyA9IGZpYjZfZHVtcF9ub2RlO1xcbm5ldC9pcHY2L2lwNl9maWIuYy02NzAtXFx0XFx0Y2ItXFx1MDAzZWFyZ3NbMl0gPSAobG9uZyl3O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDozNC4wMzYxNzkxNjVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDM1NzA5ODU2MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiB0aGUgSVB2NiBSb3V0aW5nIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBsb29raW5nIGF0IHRoaXMsIGl0J3MgY2xlYXIgdGhlIGNvcmUgaXNzdWUgbGllcyB3aXRoaW4gYGluZXQ2X2R1bXBfZmliYCwgd2hpY2gsIGFzIHdlIGtub3csIGlzIHRoZSBuZXRsaW5rIGR1bXAgZnVuY3Rpb24gcmVzcG9uc2libGUgZm9yIElQdjYgcm91dGVzLiBUaGUgYnVnIGZpeCBpdHNlbGYgaXMgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgLCB0aGUgZnVuY3Rpb24gY2FsbGVkIGR1cmluZyB0aGUgbmV0bGluayBkdW1wIHByb2Nlc3Mgc3BlY2lmaWNhbGx5IGZvciBJUHY2IHJvdXRlcy4gVGhlIGZpeCBpcyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBzd2FwIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgd2l0aCBgaGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1YC4gU2ltcGxlIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsIGZvciBzdGFiaWxpdHkgZHVyaW5nIG5ldGxpbmsgZHVtcHMuXG5cbkdpdmVuIHRoaXMsIEknbSBhbHJlYWR5IHRoaW5raW5nIHRoaXMgaXMgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIEkgbmVlZCB0byBmb2N1cyBteSBmdXp6aW5nIGVmZm9ydHMgb24gdGhlIHN5bWJvbHMgSSBrbm93IGFyZSBpbnZvbHZlZDogYHJ0Nl9kdW1wX3JvdXRlYCwgYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgLCBhbmQgYGluZXQ2X2R1bXBfZmliYC4gQW5kIG9mIGNvdXJzZSwgdGhlIGBJUFY2YCBjb25maWcgbmVlZHMgdG8gYmUgZW5hYmxlZCBmb3IgaXQgYWxsIHRvIG1hdHRlci4gVGhpcyBzZWVtcyBsaWtlIGEgZmFpcmx5IGlzb2xhdGVkIGFyZWEsIGJ1dCB0aGUgaW1wYWN0IG9mIGEgYnVnIGluIGEgbmV0bGluayBkdW1wIGNhbiBiZSBzZXZlcmUsIHBvdGVudGlhbGx5IGNhdXNpbmcgaGFuZ3Mgb3IgZXZlbiBtb3JlIHNlcmlvdXMgaXNzdWVzIGlmIHRyaWdnZXJlZCBkdXJpbmcgYSByb3V0aW5nIHVwZGF0ZS4gVGltZSB0byBnZXQgdGhlIGZ1enplciBydW5uaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDg1LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjM4LjM5MzI4MDI5OFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDU1Nzk1NTUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiaW5ldDZfZHVtcF9maWJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2lwNl9maWIuYz01ODU9c3RhdGljIGludCBmaWI2X2R1bXBfdGFibGUoc3RydWN0IGZpYjZfdGFibGUgKnRhYmxlLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jLTYzMC1cXG5uZXQvaXB2Ni9pcDZfZmliLmM6NjMxOnN0YXRpYyBpbnQgaW5ldDZfZHVtcF9maWIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5ldGxpbmtfY2FsbGJhY2sgKmNiKVxcbm5ldC9pcHY2L2lwNl9maWIuYy02MzIte1xcbi0tXFxubmV0L2lwdjYvaXA2X2ZpYi5jPTI1NjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydG5sX21zZ19oYW5kbGVyIGZpYjZfcnRubF9tc2dfaGFuZGxlcnNbXSBfX2luaXRjb25zdF9vcl9tb2R1bGUgPSB7XFxubmV0L2lwdjYvaXA2X2ZpYi5jLTI1NjQtXFx0ey5vd25lciA9IFRISVNfTU9EVUxFLCAucHJvdG9jb2wgPSBQRl9JTkVUNiwgLm1zZ3R5cGUgPSBSVE1fR0VUUk9VVEUsXFxubmV0L2lwdjYvaXA2X2ZpYi5jOjI1NjU6XFx0IC5kdW1waXQgPSBpbmV0Nl9kdW1wX2ZpYixcXG5uZXQvaXB2Ni9pcDZfZmliLmMtMjU2Ni1cXHQgLmZsYWdzID0gUlROTF9GTEFHX0RVTVBfVU5MT0NLRUQgfCBSVE5MX0ZMQUdfRFVNUF9TUExJVF9OTE1fRE9ORX0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjM4LjQzODg2NjA2M1oiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzc4NjU2NDU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhpbmtpbmcgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgSVB2NiBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYElQVjZgLiBUaGF0IHRlbGxzIG1lIHdlJ3JlIGRlYWxpbmcgd2l0aCBJUHY2LCB3aGljaCBpcyBwcmV0dHkgZnVuZGFtZW50YWwgdG8gbW9kZXJuIG5ldHdvcmtpbmcsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCAqaG93KiBpdCdzIHNldCB1cCB3aXRoaW4gdGhpcyBjb250ZXh0LiBJIGltbWVkaWF0ZWx5IHRoaW5rIHRvIGNoZWNrIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlLCBzcGVjaWZpY2FsbHkgYG5ldC9pcHY2L0tjb25maWdgLiBUaGF0J3Mgd2hlcmUgYWxsIHRoZSByZWxldmFudCBJUHY2IG9wdGlvbnMgc2hvdWxkIGJlIGRlZmluZWQuIEJ5IGV4YW1pbmluZyBgbmV0L2lwdjYvS2NvbmZpZ2AsIEkgY2FuIHVuZGVyc3RhbmQgcHJlY2lzZWx5IGhvdyBgSVBWNmAgaXMgZW5hYmxlZCwgYW55IGRlcGVuZGVuY2llcyBpdCBtaWdodCBoYXZlLCBhbmQgb3RoZXIgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFRoaXMgd2lsbCBnaXZlIG1lIGEgc29saWQgZm91bmRhdGlvbiBmb3IgZXZhbHVhdGluZyBob3cgdGhpcyBzeXN0ZW0gaGFuZGxlcyBJUHY2LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODA2LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTVUMDk6MzA6NDEuMjE3NTI1NTk3WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjgxNjgyMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjQxLjU0NTcwNDExM1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTYwMzU1MzI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkRlYnVnZ2luZyBJUHY2IFJvdXRpbmcgRXhjZXB0aW9ucyoqXG5cbk9rYXksIHNvIHRoZSBidWcgZml4IGlzIHN1cHBvc2VkIHRvIGJlIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byB6ZXJvIGluIG9uIElQdjYtc3BlY2lmaWMgY29uZmlndXJhdGlvbnMuIExldCdzIHNlZSBpZiB0aGVyZSBhcmUgYW55IHNldHRpbmdzIHRoYXQgbWlnaHQgYmUgaW5mbHVlbmNpbmcgdGhpcyBiZWhhdmlvciDigJMgYElQVjZfTVVMVElQTEVfVEFCTEVTYCBhbmQgYElQVjZfUk9VVEVfSU5GT2AgaW1tZWRpYXRlbHkgY29tZSB0byBtaW5kLiBJIGtub3cgdGhpcyBhcmVhIGluc2lkZSBhbmQgb3V0LCBzbyBJJ20gZ29pbmcgdG8gcXVpY2tseSBjcm9zcy1yZWZlcmVuY2UgdGhhdCBmdW5jdGlvbiB3aXRoaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIHRoZSBjb250ZXh0IEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQncyBnb2luZyBvbiBhbmQgdmVyaWZ5IHRoZSBmaXguXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NTgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo3OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0NC41MDYwNjM4NjhaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQzNzU4OTA2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvcm91dGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9yb3V0ZS5jPTYwMjg9c3RydWN0IGZpYjZfbmhfZXhjZXB0aW9uX2R1bXBfd2Fsa2VyIHtcXG4tLVxcbm5ldC9pcHY2L3JvdXRlLmMtNjAzNS1cXG5uZXQvaXB2Ni9yb3V0ZS5jOjYwMzY6c3RhdGljIGludCBydDZfbmhfZHVtcF9leGNlcHRpb25zKHN0cnVjdCBmaWI2X25oICpuaCwgdm9pZCAqYXJnKVxcbm5ldC9pcHY2L3JvdXRlLmMtNjAzNy17XFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jPTYwODk9aW50IHJ0Nl9kdW1wX3JvdXRlKHN0cnVjdCBmaWI2X2luZm8gKnJ0LCB2b2lkICpwX2FyZywgdW5zaWduZWQgaW50IHNraXApXFxuLS1cXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDItXFx0XFx0XFx0ZXJyID0gbmV4dGhvcF9mb3JfZWFjaF9maWI2X25oKHJ0LVxcdTAwM2VuaCxcXG5uZXQvaXB2Ni9yb3V0ZS5jOjYxNDM6XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMsXFxubmV0L2lwdjYvcm91dGUuYy02MTQ0LVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXHUwMDI2dyk7XFxubmV0L2lwdjYvcm91dGUuYy02MTQ1LVxcdFxcdH0gZWxzZSB7XFxubmV0L2lwdjYvcm91dGUuYzo2MTQ2OlxcdFxcdFxcdGVyciA9IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMocnQtXFx1MDAzZWZpYjZfbmgsIFxcdTAwMjZ3KTtcXG5uZXQvaXB2Ni9yb3V0ZS5jLTYxNDctXFx0XFx0fVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0NC41NDk4Mjc5MjRaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDA4MzQyOTA1MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBJUFY2IEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyB0aGlzIGlzIGFib3V0IGBJUFY2YC4gU3RyYWlnaHRmb3J3YXJkLiBUaGUgYnVnIGZpeCBpdHNlbGYgc2VlbXMgZnVuY3Rpb25hbDsgaXQgYWRkcmVzc2VzIGFuIFJDVSB0cmF2ZXJzYWwgaXNzdWUsIHdoaWNoIGlzIGdvb2QuIERlZmluaXRlbHkgd29ydGggZnV6emluZywgYmFzZWQgb24gdGhlIGBXb3J0aEZ1enppbmc6IHRydWVgIGZsYWcuIE15IGZvY3VzIGZvciB0ZXN0aW5nIHdpbGwgYmUgb24gdGhvc2UgdGhyZWUgc3ltYm9sczogYHJ0Nl9kdW1wX3JvdXRlYCwgYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgLCBhbmQgYGluZXQ2X2R1bXBfZmliYC4gVGhvc2Ugc2VlbSBsaWtlIHRoZSBrZXkgYXJlYXMgdG8gcHJvYmUuIFRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbiBpcyBzdHJhaWdodGZvcndhcmQ6IGBFbmFibGVDb25maWdzOiBJUFY2YC5cblxuTm93LCBsZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gaWYgYElQVjZgIGhhcyBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgSSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBSaWdodCwgaXQncyBhIGBtZW51Y29uZmlnYCBvcHRpb24gd2l0aGluIGBuZXQvaXB2Ni9LY29uZmlnYC4gQW5kLCBhcyBJIHN1c3BlY3RlZCwgaXQgZGVwZW5kcyBvbiBgSU5FVGAuIFRoYXQncyBpbXBvcnRhbnQgdG8ga2VlcCBpbiBtaW5kLCBpbiBjYXNlIGl0IGFmZmVjdHMgaG93IEkgbmVlZCB0byBzZXQgdXAgdGhlIHRlc3RpbmcgZW52aXJvbm1lbnQuIEdvdCBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6NzExNiwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0OC42MzMyNTk1NzVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NjgwMzc2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1lbnVjb25maWcgSVBWNlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L0tjb25maWctNS1cXG5uZXQvaXB2Ni9LY29uZmlnOjY6bWVudWNvbmZpZyBJUFY2XFxubmV0L2lwdjYvS2NvbmZpZy03LVxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo0OC42Nzg5NTA4NDFaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk1OTgyODI4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRXhhbWluaW5nIElQdjYgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKlxuXG5BbHJpZ2h0LCBsZXQncyBkaXZlIGluLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcyB0byBjaGVjayB0aGUgYG5ldC9pcHY2L0tjb25maWdgIGZpbGUuIEdpdmVuIHRoZSBzdWJqZWN0IG1hdHRlciwgdGhhdCdzIHdoZXJlIEknZCBleHBlY3QgdG8gZmluZCB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIElQdjYuIEkgbmVlZCB0byBxdWlja2x5IGFzY2VydGFpbiBhbnkgZGVwZW5kZW5jaWVzIHRoYXQgdGhlIGBJUFY2YCBzeW1ib2wgbWlnaHQgaGF2ZS4gQXJlIHRoZXJlIGFueSBwcmVyZXF1aXNpdGVzLCBvdGhlciBmZWF0dXJlcyBpdCByZWxpZXMgb24sIG9yIGNvbmZsaWN0cyB0byBjb25zaWRlcj8gVW5kZXJzdGFuZGluZyB0aGVzZSByZWxhdGlvbnNoaXBzIGlzIGNydWNpYWwgYmVmb3JlIG1ha2luZyBhbnkgY2hhbmdlcyBvciBlbmFibGluZyBJUHY2IGZ1bmN0aW9uYWxpdHkuIFdlIG5lZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHByb3BlciBidWlsZGluZyBibG9ja3MgYXJlIGluIHBsYWNlIGFuZCB0aGF0IHdlIGF2b2lkIGFueSB1bmV4cGVjdGVkIGlzc3VlcyBkdXJpbmcgY29tcGlsYXRpb24gb3IgcnVudGltZS4gVGltZSB0byBnZXQgZGlnZ2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzUxOCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjUxLjYzODc4MTYzNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ0MjU1NDUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQVjZcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjYvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2Ni9LY29uZmlnLTUtXFxubmV0L2lwdjYvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctNy1cXHRib29sIFxcXCJUaGUgSVB2NiBwcm90b2NvbFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTk9aWYgSVBWNlxcbm5ldC9pcHY2L0tjb25maWctMjAtXFxubmV0L2lwdjYvS2NvbmZpZzoyMTpjb25maWcgSVBWNl9ST1VURVJfUFJFRlxcbm5ldC9pcHY2L0tjb25maWctMjItXFx0Ym9vbCBcXFwiSVB2NjogUm91dGVyIFByZWZlcmVuY2UgKFJGQyA0MTkxKSBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMC1cXG5uZXQvaXB2Ni9LY29uZmlnOjMxOmNvbmZpZyBJUFY2X1JPVVRFX0lORk9cXG5uZXQvaXB2Ni9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIklQdjY6IFJvdXRlIEluZm9ybWF0aW9uIChSRkMgNDE5MSkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzgtXFxubmV0L2lwdjYvS2NvbmZpZzozOTpjb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxcbm5ldC9pcHY2L0tjb25maWctNDAtXFx0Ym9vbCBcXFwiSVB2NjogRW5hYmxlIFJGQyA0NDI5IE9wdGltaXN0aWMgREFEXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xMDI9Y29uZmlnIElORVQ2X0lQQ09NUFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0xMTEtXFxubmV0L2lwdjYvS2NvbmZpZzoxMTI6Y29uZmlnIElQVjZfTUlQNlxcbm5ldC9pcHY2L0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBNb2JpbGl0eVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTE5LVxcbm5ldC9pcHY2L0tjb25maWc6MTIwOmNvbmZpZyBJUFY2X0lMQVxcbm5ldC9pcHY2L0tjb25maWctMTIxLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJZGVudGlmaWVyIExvY2F0b3IgQWRkcmVzc2luZyAoSUxBKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9MTQ2PWNvbmZpZyBJTkVUNl9UVU5ORUxcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTQ5LVxcbm5ldC9pcHY2L0tjb25maWc6MTUwOmNvbmZpZyBJUFY2X1ZUSVxcbm5ldC9pcHY2L0tjb25maWctMTUxLVxcdHRyaXN0YXRlIFxcXCJWaXJ0dWFsIChzZWN1cmUpIElQdjY6IHR1bm5lbGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTYxLVxcbm5ldC9pcHY2L0tjb25maWc6MTYyOmNvbmZpZyBJUFY2X1NJVFxcbm5ldC9pcHY2L0tjb25maWctMTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBJUHY2LWluLUlQdjQgdHVubmVsIChTSVQgZHJpdmVyKVxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMTc2LVxcbm5ldC9pcHY2L0tjb25maWc6MTc3OmNvbmZpZyBJUFY2X1NJVF82UkRcXG5uZXQvaXB2Ni9LY29uZmlnLTE3OC1cXHRib29sIFxcXCJJUHY2OiBJUHY2IFJhcGlkIERlcGxveW1lbnQgKDZSRClcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE5NS1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5Njpjb25maWcgSVBWNl9ORElTQ19OT0RFVFlQRVxcbm5ldC9pcHY2L0tjb25maWctMTk3LVxcdGJvb2xcXG5uZXQvaXB2Ni9LY29uZmlnLTE5OC1cXG5uZXQvaXB2Ni9LY29uZmlnOjE5OTpjb25maWcgSVBWNl9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTIwMC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogSVAtaW4tSVB2NiB0dW5uZWwgKFJGQzI0NzMpXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMDktXFxubmV0L2lwdjYvS2NvbmZpZzoyMTA6Y29uZmlnIElQVjZfR1JFXFxubmV0L2lwdjYvS2NvbmZpZy0yMTEtXFx0dHJpc3RhdGUgXFxcIklQdjY6IEdSRSB0dW5uZWxcXFwiXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIyNy1cXG5uZXQvaXB2Ni9LY29uZmlnOjIyODpjb25maWcgSVBWNl9GT1VcXG5uZXQvaXB2Ni9LY29uZmlnLTIyOS1cXHR0cmlzdGF0ZVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yMzEtXFxubmV0L2lwdjYvS2NvbmZpZzoyMzI6Y29uZmlnIElQVjZfRk9VX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjMzLVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTIzNi1cXG5uZXQvaXB2Ni9LY29uZmlnOjIzNzpjb25maWcgSVBWNl9NVUxUSVBMRV9UQUJMRVNcXG5uZXQvaXB2Ni9LY29uZmlnLTIzOC1cXHRib29sIFxcXCJJUHY2OiBNdWx0aXBsZSBSb3V0aW5nIFRhYmxlc1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjQyLVxcbm5ldC9pcHY2L0tjb25maWc6MjQzOmNvbmZpZyBJUFY2X1NVQlRSRUVTXFxubmV0L2lwdjYvS2NvbmZpZy0yNDQtXFx0Ym9vbCBcXFwiSVB2Njogc291cmNlIGFkZHJlc3MgYmFzZWQgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjU2LVxcbm5ldC9pcHY2L0tjb25maWc6MjU3OmNvbmZpZyBJUFY2X01ST1VURVxcbm5ldC9pcHY2L0tjb25maWctMjU4LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCByb3V0aW5nXFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yNjQtXFxubmV0L2lwdjYvS2NvbmZpZzoyNjU6Y29uZmlnIElQVjZfTVJPVVRFX01VTFRJUExFX1RBQkxFU1xcbm5ldC9pcHY2L0tjb25maWctMjY2LVxcdGJvb2wgXFxcIklQdjY6IG11bHRpY2FzdCBwb2xpY3kgcm91dGluZ1xcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMjc4LVxcbm5ldC9pcHY2L0tjb25maWc6Mjc5OmNvbmZpZyBJUFY2X1BJTVNNX1YyXFxubmV0L2lwdjYvS2NvbmZpZy0yODAtXFx0Ym9vbCBcXFwiSVB2NjogUElNLVNNIHZlcnNpb24gMiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yODUtXFxubmV0L2lwdjYvS2NvbmZpZzoyODY6Y29uZmlnIElQVjZfU0VHNl9MV1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWctMjg3LVxcdGJvb2wgXFxcIklQdjY6IFNlZ21lbnQgUm91dGluZyBIZWFkZXIgZW5jYXBzdWxhdGlvbiBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0yOTktXFxubmV0L2lwdjYvS2NvbmZpZzozMDA6Y29uZmlnIElQVjZfU0VHNl9ITUFDXFxubmV0L2lwdjYvS2NvbmZpZy0zMDEtXFx0Ym9vbCBcXFwiSVB2NjogU2VnbWVudCBSb3V0aW5nIEhNQUMgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9pcHY2L0tjb25maWctMzExLVxcbm5ldC9pcHY2L0tjb25maWc6MzEyOmNvbmZpZyBJUFY2X1NFRzZfQlBGXFxubmV0L2lwdjYvS2NvbmZpZy0zMTMtXFx0ZGVmX2Jvb2wgeVxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMTYtXFxubmV0L2lwdjYvS2NvbmZpZzozMTc6Y29uZmlnIElQVjZfUlBMX0xXVFVOTkVMXFxubmV0L2lwdjYvS2NvbmZpZy0zMTgtXFx0Ym9vbCBcXFwiSVB2NjogUlBMIFNvdXJjZSBSb3V0aW5nIEhlYWRlciBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZy0zMjctXFxubmV0L2lwdjYvS2NvbmZpZzozMjg6Y29uZmlnIElQVjZfSU9BTTZfTFdUVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnLTMyOS1cXHRib29sIFxcXCJJUHY2OiBJT0FNIFByZS1hbGxvY2F0ZWQgVHJhY2UgaW5zZXJ0aW9uIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjUxLjY4MzIxMzE4OVoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODIzMDQ1ODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKktjb25maWcgSW5zcGVjdGlvbjogSVB2NiBDb25maWd1cmF0aW9uKipcblxuT2theSwgdGltZSB0byBkaXZlIGludG8gdGhlIElQdjYgY29uZmlndXJhdGlvbiBvcHRpb25zLiBNeSBpbnN0aW5jdCBpcyB0byBzdGFydCBieSBsb29raW5nIGF0IHRoZSBLY29uZmlnIGZpbGUsIHNwZWNpZmljYWxseSBgbmV0L2lwdjYvS2NvbmZpZ2AuIExldCBtZSBxdWlja2x5IGNoZWNrIGxpbmVzIDEgdGhyb3VnaCAxNS4gVGhpcyB1c3VhbGx5IGNvdmVycyB0aGUgdG9wLWxldmVsIGRlZmluaXRpb25zLCBwb3RlbnRpYWxseSBpbmNsdWRpbmcgdGhpbmdzIGxpa2UgdGhlIG1haW4gSVB2NiBzd2l0Y2ggb3IgdGhlIHNlbGVjdGlvbiBvZiBpbXBvcnRhbnQgSVB2NiBwcm90b2NvbHMsIG9yIHBlcmhhcHMgc29tZSBnZW5lcmFsIGJ1aWxkIGVudmlyb25tZW50IHBhcmFtZXRlcnMgb3IgZGVwZW5kZW5jaWVzLiBIb3BlZnVsbHkgSSdsbCBxdWlja2x5IGdldCBhIGhhbmRsZSBvbiB0aGUgbWFpbiBjb25maWd1cmF0aW9uIG5vZGVzIGFuZCB0aGVpciBiYXNpYyB2aXNpYmlsaXR5IHJlcXVpcmVtZW50cy4gVGhpcyB3aWxsIHNldCB0aGUgc3RhZ2UgZm9yIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbjsgaWYgbmVlZGVkIEkgd2lsbCBjb250aW51ZSBsb29raW5nIGF0IHRoaXMgc2VjdGlvbiwgdG8gZmluZCBhbnkgY2x1ZXMgdGhhdCBhcmUgbWlzc2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTI2NCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMwOjU0LjUwNjI2MjYxN1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzA4MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvaXB2Ni9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIElQdjYgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIElQVjZcXG4gICA3OlxcdFxcdGJvb2wgXFxcIlRoZSBJUHY2IHByb3RvY29sXFxcIlxcbiAgIDg6XFx0XFx0ZGVmYXVsdCB5XFxuICAgOTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXFxuICAxMDpcXHRcXHRoZWxwXFxuICAxMTpcXHRcXHQgIFN1cHBvcnQgZm9yIElQIHZlcnNpb24gNiAoSVB2NikuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgRm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgSVB2Niwgc2VlXFxuICAxNDpcXHRcXHQgIFxcdTAwM2NodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9JUHY2XFx1MDAzZS5cXG4gIDE1OlxcdFxcdCAgRm9yIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IElQdjYgdW5kZXIgTGludXgsIHNlZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMDo1NC41MDYzNDc3MzdaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Njc4NjQyNDIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJUHY2IFJvdXRpbmcgQ29uY2VybnMqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhpcyBJUHY2IHN0dWZmLCBzcGVjaWZpY2FsbHkgdGhlIHJvdXRlIGR1bXBpbmcgZnVuY3Rpb25hbGl0eS4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlllcCwgSVB2NiBpcyBkZWZpbml0ZWx5IHRoZSByZWxldmFudCBhcmVhIGhlcmUuXCIgTm93LCBJJ20gZGlnZ2luZyBpbnRvIHRoZSBjb2RlIGFuZCBJJ20gYSBiaXQgcGVycGxleGVkLiBJIHNlZSBgcnQ2X2R1bXBfcm91dGVgLCBhbmQgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGl0J3MgZXhwb3J0ZWQgb3Igbm90LiBJdCdzIG5vdCBzdGF0aWMsIHdoaWNoIGlzIGEga2V5IG9ic2VydmF0aW9uLCBidXQgaXQncyAqYWxzbyogbm90IGV4cGxpY2l0bHkgZXhwb3J0ZWQgaW4gdGhlIHVzdWFsIHdheS4gSG1tLiBUaGVuIEkgY2hlY2sgYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIGFuZCByZWFsaXplICp0aGF0KiBmdW5jdGlvbiAqaXMqIGRlY2xhcmVkIGFzIHN0YXRpYy4gQW5kIHdoaWxlIEknbSBhdCBpdCwgSSBzZWUgdGhhdCBgaW5ldDZfZHVtcF9maWJgIGlzIGFsc28gZGVjbGFyZWQgYXMgc3RhdGljLlxuXG5Pa2F5LCBzbyBiYWNrIHRvIHRoZSBsaXN0Li4uIEl0J3MgbG9va2luZyBsaWtlIGBydDZfZHVtcF9yb3V0ZWAgc2hvdWxkIGJlIGluY2x1ZGVkLiBhbmQgYGluZXQ2X2R1bXBfZmliYCBzaG91bGQgYmUgY29uc2lkZXJlZCBhcyB3ZWxsLlxuXG5XYWl0IGEgc2Vjb25k4oCmIEkndmUgZ290IGEgYml0IG9mIGEgY29udHJhZGljdGlvbiBoZXJlLi4uIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyBzdGF0aWMsIGJ1dCAqdGhhdCdzKiB0aGUgb25lIHRoYXQgc2VlbXMgdG8gaGF2ZSBiZWVuIG1vZGlmaWVkLiBcblxuU28sIEknbSBnb2luZyB0byByZXZpc2UgYW5kIGZvY3VzIG9uIGluY2x1ZGluZyBgcnQ2X2R1bXBfcm91dGVgIGFuZCBgaW5ldDZfZHVtcF9maWJgIGluIG15IGxpc3QgZm9yIG5vdy4gSXQgc2VlbXMgdGhhdGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBzaG91bGQgYmUgZXhlbXB0LlxuXG5MZXQgbWUganVzdCBkbyBhIHF1aWNrIHNjYW4gdG8gY29uZmlybSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zIG9yIGZsYWdzIEknbSBtaXNzaW5nLiBOb3BlLCBzdGlsbCBjb25maWRlbnQgaW4gYElQVjZgLlxuXG5UaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBJUHY2IHJvdXRpbmcgbG9naWMuIEl0J3MgYW4gUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgdGhhdCBnZXRzIGhpdCBkdXJpbmcgSVB2NiByb3V0ZSBuZXRsaW5rIGR1bXBzLiBHaXZlbiB0aGUgZnVuY3Rpb25hbCBpbXBhY3QsIHRoaXMgZGVmaW5pdGVseSBuZWVkcyBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjU1LCJPdXRwdXRUb2tlbnMiOjExMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMxOjAxLjI5Mjc3NDc1WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE5MTA4NzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQVjZcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydDZfZHVtcF9yb3V0ZVwiLFxuICAgIFwiaW5ldDZfZHVtcF9maWJcIixcbiAgICBcImZpYjZfZHVtcF9ub2RlXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gUkNVIGxpc3QgdHJhdmVyc2FsIGJ1ZyBpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2Agd2hpY2ggaXMgcmVhY2hhYmxlIGR1cmluZyBJUHY2IHJvdXRlIG5ldGxpbmsgZHVtcHMuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIElQdjYgcm91dGluZyBsb2dpYyBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUFY2XCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnQ2X2R1bXBfcm91dGVcIixcbiAgICBcImluZXQ2X2R1bXBfZmliXCIsXG4gICAgXCJmaWI2X2R1bXBfbm9kZVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIFJDVSBsaXN0IHRyYXZlcnNhbCBidWcgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHdoaWNoIGlzIHJlYWNoYWJsZSBkdXJpbmcgSVB2NiByb3V0ZSBuZXRsaW5rIGR1bXBzLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBJUHY2IHJvdXRpbmcgbG9naWMgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMxOjAxLjM3NDY5NDU1MVoiLCJTZXEiOjI1LCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6IklmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg2OTc1NDAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE1VDA5OjMxOjAxLjM3NTE4OTU2MVoiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1ODY5MjU1NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBjaGFuZ2VzIGEgbGlzdCB0cmF2ZXJzYWwgbWFjcm8gZnJvbSBgaGxpc3RfZm9yX2VhY2hfZW50cnlgIHRvIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCB0byBwcm9wZXJseSB1c2UgUkNVIHByaW1pdGl2ZXMuIFRoaXMgYWRkcmVzc2VzIHBvdGVudGlhbCBkYXRhIHJhY2VzLCB1c2UtYWZ0ZXItZnJlZSBidWdzLCBvciBsb2NrZGVwIHdhcm5pbmdzLCB3aGljaCBhcmUgZWZmZWN0aXZlbHkgZGV0ZWN0ZWQgYnkgS0FTQU4sIEtDU0FOLCBhbmQgTE9DS0RFUC4gVGhlcmUgYXJlIG5vIGNoYW5nZXMgdG8gbWVtb3J5IGFsbG9jYXRpb24sIGluaXRpYWxpemF0aW9uLCBvciBkYXRhIGNvcHlpbmcgdG8gdXNlcnNwYWNlIHRoYXQgY291bGQgaW50cm9kdWNlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJlYWRzIG9yIGluZm8tbGVha3MuIFRoZXJlZm9yZSwgS01TQU4gaXMgbm90IGFwcGxpY2FibGUgaGVyZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5MTk1MGE4NjcwZDllMWViZDJlNzMzNWY1MjBlYjljMzk0MTNjNTc0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFNhdCBBdWcgMTUgMDk6MzA6MTYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9yb3V0ZS5jIGIvbmV0L2lwdjYvcm91dGUuY1xuaW5kZXggMTZkZmFjNTRhMjU5YS4uNTI2NTM1Mzg3NTEyMyAxMDA2NDRcbi0tLSBhL25ldC9pcHY2L3JvdXRlLmNcbisrKyBiL25ldC9pcHY2L3JvdXRlLmNcbkBAIC02MDQ2LDcgKzYwNDYsNyBAQCBzdGF0aWMgaW50IHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnMoc3RydWN0IGZpYjZfbmggKm5oLCB2b2lkICphcmcpXG4gXHRcdHJldHVybiAwO1xuIFxuIFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgRklCNl9FWENFUFRJT05fQlVDS0VUX1NJWkU7IGkrKykge1xuLVx0XHRobGlzdF9mb3JfZWFjaF9lbnRyeShydDZfZXgsIFx1MDAyNmJ1Y2tldC1cdTAwM2VjaGFpbiwgaGxpc3QpIHtcbitcdFx0aGxpc3RfZm9yX2VhY2hfZW50cnlfcmN1KHJ0Nl9leCwgXHUwMDI2YnVja2V0LVx1MDAzZWNoYWluLCBobGlzdCkge1xuIFx0XHRcdGlmICh3LVx1MDAzZXNraXApIHtcbiBcdFx0XHRcdHctXHUwMDNlc2tpcC0tO1xuIFx0XHRcdFx0Y29udGludWU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMTowMS4zNzUxOTA0NzFaIiwiU2VxIjoyNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTg2OTIzMjgzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBSQ1UgRml4IGluIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggcmVwbGFjZXMgYGhsaXN0X2Zvcl9lYWNoX2VudHJ5YCB3aXRoIGBobGlzdF9mb3JfZWFjaF9lbnRyeV9yY3VgIHdpdGhpbiBgcnQ2X25oX2R1bXBfZXhjZXB0aW9uc2AgaW4gYG5ldC9pcHY2L3JvdXRlLmNgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IGFuIFJDVS1yZWxhdGVkIGZpeCwgbGlrZWx5IHRhcmdldGluZyBhIG1pc3NlZCBSQ1UgcHJvdGVjdGlvbiBvciBhIHBvdGVudGlhbCBkYXRhIHJhY2Ugb3IgdXNlLWFmdGVyLWZyZWUgc2l0dWF0aW9uIGluIHRoZSBsaXN0IHRyYXZlcnNhbC4gR2l2ZW4gdGhlIGNvbnRleHQsIGl0IHdvdWxkIGhhdmUgYmVlbiBjYXVnaHQgYnkgS0FTQU4sIExPQ0tERVAsIG9yIEtDU0FOLlxuXG5NeSBpbW1lZGlhdGUgcXVlc3Rpb24sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgb3IgZXhwb3NlcyBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3MuIExldCdzIGRpZyBkZWVwZXIuIGBydDZfbmhfZHVtcF9leGNlcHRpb25zYCBpcyB1c2VkIGZvciBkdW1waW5nIGV4Y2VwdGlvbnMsIHByZXN1bWFibHkgdmlhIG5ldGxpbmssIHdoaWNoIHN1Z2dlc3RzIHRoZSBkYXRhIGlzIGJlaW5nIHNlbnQgdG8gdXNlcnNwYWNlLiBCdXQgdGhlIHBhdGNoICpvbmx5KiBtb2RpZmllcyB0aGUgaXRlcmF0aW9uIG1hY3JvIGl0c2VsZi4gV2UncmUgbm90IHNlZWluZyBuZXcgYWxsb2NhdGlvbnMsIGRhdGEgY29waWVzLCBvciBvdGhlciBvcGVyYXRpb25zIHRoYXQgY291bGQgaW50cm9kdWNlIGFuIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHZ1bG5lcmFiaWxpdHkuIEl0J3MganVzdCBhIGNoYW5nZSBpbiB0aGUgd2F5IHdlIHRyYXZlcnNlIHRoZSBsaXN0LlxuXG5UaGVyZWZvcmUsIHRoaXMgY2hhbmdlIGlzIG5vdCByZWxldmFudCB0byBLTVNBTi4gVGhlIHJlYXNvbmluZyBpcyBzb2xpZC4gSSdsbCBtYXJrIGBOZWVkc0tNU0FOPWZhbHNlYC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAxMiwiT3V0cHV0VG9rZW5zIjoxNDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNVQwOTozMTowNy4yNDQ0MjYyNTdaIiwiU2VxIjoyOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGNoYW5nZXMgYSBsaXN0IHRyYXZlcnNhbCBtYWNybyBmcm9tIGBobGlzdF9mb3JfZWFjaF9lbnRyeWAgdG8gYGhsaXN0X2Zvcl9lYWNoX2VudHJ5X3JjdWAgaW4gYHJ0Nl9uaF9kdW1wX2V4Y2VwdGlvbnNgIHRvIHByb3Blcmx5IHVzZSBSQ1UgcHJpbWl0aXZlcy4gVGhpcyBhZGRyZXNzZXMgcG90ZW50aWFsIGRhdGEgcmFjZXMsIHVzZS1hZnRlci1mcmVlIGJ1Z3MsIG9yIGxvY2tkZXAgd2FybmluZ3MsIHdoaWNoIGFyZSBlZmZlY3RpdmVseSBkZXRlY3RlZCBieSBLQVNBTiwgS0NTQU4sIGFuZCBMT0NLREVQLiBUaGVyZSBhcmUgbm8gY2hhbmdlcyB0byBtZW1vcnkgYWxsb2NhdGlvbiwgaW5pdGlhbGl6YXRpb24sIG9yIGRhdGEgY29weWluZyB0byB1c2Vyc3BhY2UgdGhhdCBjb3VsZCBpbnRyb2R1Y2UgdW5pbml0aWFsaXplZCBtZW1vcnkgcmVhZHMgb3IgaW5mby1sZWFrcy4gVGhlcmVmb3JlLCBLTVNBTiBpcyBub3QgYXBwbGljYWJsZSBoZXJlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowzdntt[1] Phase: Succeeded StartedAt: 2026-08-15 09:31:18 +0000 UTC FinishedAt: 2026-08-15 09:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-15 09:31:18 +0000 UTC FinishedAt: 2026-08-15 09:31:18 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2] Phase: Succeeded StartedAt: 2026-08-15 09:31:18 +0000 UTC FinishedAt: 2026-08-15 13:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-15 09:31:18 +0000 UTC FinishedAt: 2026-08-15 13:11:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-15 09:31:18 +0000 UTC FinishedAt: 2026-08-15 09:31:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-15 09:31:18 +0000 UTC FinishedAt: 2026-08-15 09:31:23 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzdntt/series-workflowzdntt-convert-artifact-3677344734/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-15 09:31:28 +0000 UTC FinishedAt: 2026-08-15 09:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-15 09:31:28 +0000 UTC FinishedAt: 2026-08-15 09:47: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:*40845a2c-7cb6-45dc-b309-bde894c91979,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-workflowzdntt/series-workflowzdntt-convert-artifact-3677344734/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": "a17b5ca2-beb6-4811-84bb-7b013d573aa8", "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-workflowzdntt/series-workflowzdntt-build-action-2964059332/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-15 09:31:28 +0000 UTC FinishedAt: 2026-08-15 09:47:43 +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:*40845a2c-7cb6-45dc-b309-bde894c91979,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-workflowzdntt/series-workflowzdntt-convert-artifact-3677344734/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": "a17b5ca2-beb6-4811-84bb-7b013d573aa8", "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-workflowzdntt/series-workflowzdntt-build-action-2964059332/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-15 09:47:53 +0000 UTC FinishedAt: 2026-08-15 09:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-15 09:47:53 +0000 UTC FinishedAt: 2026-08-15 09:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-15 09:47:53 +0000 UTC FinishedAt: 2026-08-15 09:48:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-15 09:47:53 +0000 UTC FinishedAt: 2026-08-15 09:47:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowzdntt/series-workflowzdntt-convert-artifact-4247034769/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-15 09:48:04 +0000 UTC FinishedAt: 2026-08-15 09:49:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-15 09:48:04 +0000 UTC FinishedAt: 2026-08-15 09:49:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a17b5ca2-beb6-4811-84bb-7b013d573aa8,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-workflowzdntt/series-workflowzdntt-build-action-2964059332/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-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-15 09:49:55 +0000 UTC FinishedAt: 2026-08-15 09:49:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-15 09:49:55 +0000 UTC FinishedAt: 2026-08-15 09:49:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-15 09:49:55 +0000 UTC FinishedAt: 2026-08-15 10:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-15 09:49:55 +0000 UTC FinishedAt: 2026-08-15 10:06:27 +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:*40845a2c-7cb6-45dc-b309-bde894c91979,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-workflowzdntt/series-workflowzdntt-convert-artifact-4247034769/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": "7ea8241c-a081-4d63-9bf9-afe262fa43be", "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-workflowzdntt/series-workflowzdntt-build-action-3007023965/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-15 09:49:55 +0000 UTC FinishedAt: 2026-08-15 10:06:17 +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:*40845a2c-7cb6-45dc-b309-bde894c91979,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-workflowzdntt/series-workflowzdntt-convert-artifact-4247034769/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": "7ea8241c-a081-4d63-9bf9-afe262fa43be", "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-workflowzdntt/series-workflowzdntt-build-action-3007023965/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-15 10:06:27 +0000 UTC FinishedAt: 2026-08-15 10:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-15 10:06:27 +0000 UTC FinishedAt: 2026-08-15 10:06:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-15 10:06:27 +0000 UTC FinishedAt: 2026-08-15 10:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-15 10:06:27 +0000 UTC FinishedAt: 2026-08-15 10:08:15 +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:*7ea8241c-a081-4d63-9bf9-afe262fa43be,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-workflowzdntt/series-workflowzdntt-build-action-3007023965/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-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 13:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 13:11:10 +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":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"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:*a17b5ca2-beb6-4811-84bb-7b013d573aa8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7ea8241c-a081-4d63-9bf9-afe262fa43be,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-workflowzdntt/series-workflowzdntt-build-action-2964059332/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-workflowzdntt/series-workflowzdntt-build-action-3007023965/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 10:08:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 10:08:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"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-workflowzdntt/series-workflowzdntt-convert-artifact-3278649030/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 10:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 10:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-15 10:08:25 +0000 UTC FinishedAt: 2026-08-15 10:08:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-15 10:08:35 +0000 UTC FinishedAt: 2026-08-15 13:11:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowzdntt[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rt6_dump_route","inet6_dump_fib","fib6_dump_node"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"e6a5d573d24cd375e09d24f136523cb3cc85c9d3","config_name":"upstream-apparmor-kasan.config","enable_configs":["IPV6"],"series_id":"5b01c533-f005-4dab-9b72-e3a0be88850e","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-15 10:08:35 +0000 UTC FinishedAt: 2026-08-15 13:11:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*a17b5ca2-beb6-4811-84bb-7b013d573aa8,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*7ea8241c-a081-4d63-9bf9-afe262fa43be,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-workflowzdntt/series-workflowzdntt-build-action-2964059332/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-workflowzdntt/series-workflowzdntt-build-action-3007023965/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-workflowzdntt/series-workflowzdntt-convert-artifact-3278649030/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,}