Name: series-workflowgw7s5 Phase: Succeeded StartedAt: 2026-08-14 13:58:49 +0000 UTC FinishedAt: 2026-08-14 18:55:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[0] Phase: Succeeded StartedAt: 2026-08-14 13:58:49 +0000 UTC FinishedAt: 2026-08-14 14:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[0].run-triage Phase: Succeeded StartedAt: 2026-08-14 13:58:49 +0000 UTC FinishedAt: 2026-08-14 14:58:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "INET", "NF_CONNTRACK", "NETFILTER_ADVANCED", "NFT_CONNLIMIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "INET", "NF_CONNTRACK", "NETFILTER_ADVANCED", "NFT_CONNLIMIT" ], "series_id": "d8c480e8-da2a-4843-b015-f40fe74ffd3c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ovs_ct_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORlRfQ09OTkxJTUlUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2N0X2luaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2ViZDJlNWQ4YjQxODM5MGY5NDczZjhhNTYwNTZhOGIzMjczYWYyZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUwOjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuaW5kZXggOTU2OTdkNGUxNmU2NC4uZmJhYTY3NzE0NDE0MyAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXG5AQCAtMjAwMSw2ICYjNDM7MjAwMSw5IEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuIFx0dW5zaWduZWQgaW50IG5fYml0cyA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tleV9jdF9sYWJlbHMpICogQklUU19QRVJfQllURTtcbiBcdHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTtcbiYjNDM7I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxuJiM0MztcdGludCBlcnI7XG4mIzQzOyNlbmRpZlxuIFxuIFx0aWYgKG5mX2Nvbm5sYWJlbHNfZ2V0KG5ldCwgbl9iaXRzIC0gMSkpIHtcbiBcdFx0b3ZzX25ldC1cdTAwM2V4dF9sYWJlbCA9IGZhbHNlO1xuQEAgLTIwMTAsNyAmIzQzOzIwMTMsMTAgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbiBcdH1cbiBcbiAjaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG4tXHRyZXR1cm4gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcbiYjNDM7XHRlcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xuJiM0MztcdGlmIChlcnIgXHUwMDI2XHUwMDI2IG92c19uZXQtXHUwMDNleHRfbGFiZWwpXG4mIzQzO1x0XHRuZl9jb25ubGFiZWxzX3B1dChuZXQpO1xuJiM0MztcdHJldHVybiBlcnI7XG4gI2Vsc2VcbiBcdHJldHVybiAwO1xuICNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfQURWQU5DRUQmIzM0OywKICAgICYjMzQ7TkZUX0NPTk5MSU1JVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19jdF9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2ViZDJlNWQ4YjQxODM5MGY5NDczZjhhNTYwNTZhOGIzMjczYWYyZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUwOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jCmluZGV4IDk1Njk3ZDRlMTZlNjQuLmZiYWE2NzcxNDQxNDMgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMKQEAgLTIwMDEsNiAmIzQzOzIwMDEsOSBAQCBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KQogewogCXVuc2lnbmVkIGludCBuX2JpdHMgPSBzaXplb2Yoc3RydWN0IG92c19rZXlfY3RfbGFiZWxzKSAqIEJJVFNfUEVSX0JZVEU7CiAJc3RydWN0IG92c19uZXQgKm92c19uZXQgPSBuZXRfZ2VuZXJpYyhuZXQsIG92c19uZXRfaWQpOwomIzQzOyNpZglJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKQomIzQzOwlpbnQgZXJyOwomIzQzOyNlbmRpZgogCiAJaWYgKG5mX2Nvbm5sYWJlbHNfZ2V0KG5ldCwgbl9iaXRzIC0gMSkpIHsKIAkJb3ZzX25ldC0mZ3Q7eHRfbGFiZWwgPSBmYWxzZTsKQEAgLTIwMTAsNyAmIzQzOzIwMTMsMTAgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAl9CiAKICNpZglJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKQotCXJldHVybiBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpOwomIzQzOwllcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpOwomIzQzOwlpZiAoZXJyICZhbXA7JmFtcDsgb3ZzX25ldC0mZ3Q7eHRfbGFiZWwpCiYjNDM7CQluZl9jb25ubGFiZWxzX3B1dChuZXQpOwomIzQzOwlyZXR1cm4gZXJyOwogI2Vsc2UKIAlyZXR1cm4gMDsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT3BlbiB2U3dpdGNoIENvbm50cmFjayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY2AuIFNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgZml4LCBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsgb2YgYG5mX2Nvbm5sYWJlbHNgIHdpdGhpbiBgb3ZzX2N0X2luaXRgLiBUaGlzIGlzIGEgcHJldHR5IGNyaXRpY2FsIGFyZWEsIGFzIGBvdnNfY3RfaW5pdGAgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBPcGVuIHZTd2l0Y2ggaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEFueSBsZWFrcyB0aGVyZSBjb3VsZCBiZSBwcm9ibGVtYXRpYywgZXNwZWNpYWxseSBhdCBzY2FsZS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gYG92c19jdF9pbml0YCBhbmQgYG92c19jdF9saW1pdF9pbml0YCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGJ1Zy4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIHRoZSBwYXRjaCBhcHBlYXJzIHRvIGFkZCBhIGBuZl9jb25ubGFiZWxzX3B1dChuZXQpYCBjYWxsIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMgYW5kIGEgY29uZGl0aW9uIGlzIG1ldCDigJMgc3BlY2lmaWNhbGx5LCBpZiBgb3ZzX25ldC0mZ3Q7eHRfbGFiZWxgIGlzIHRydWUuIFRoYXQgaW5kaWNhdGVzIGEgY29uZGl0aW9uYWwgY2xlYW51cCwgd2hpY2ggaXMgZ29vZC4gV2UgZGVmaW5pdGVseSB3YW50IHRvIGVuc3VyZSB0aGVzZSBsYWJlbHMgYXJlIHJlbGVhc2VkIGNvcnJlY3RseSBpbiBlcnJvciBwYXRocy4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgb3ZzX2N0X2luaXRgIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZWJhc2UgdG8gZ2V0IHRoZSBicm9hZGVyIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGhvdyBmcmVxdWVudGx5IHdpbGwgaGVscCBtZSBhc3Nlc3MgdGhlIGltcGFjdCBhbmQgcG90ZW50aWFsIHNldmVyaXR5IG9mIHRoZSBvcmlnaW5hbCBsZWFrLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGFuZCBjb25maXJtIHRoYXQgdGhlIGZpeCBwcm9wZXJseSBhZGRyZXNzZXMgYWxsIHBvdGVudGlhbCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2N0X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0zNjQ9c3RhdGljIHN0cnVjdCBuZl9jb25uX2xhYmVscyAqb3ZzX2N0X2dldF9jb25uX2xhYmVscyhzdHJ1Y3QgbmZfY29ubiAqY3QpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTM4MC0gKi9cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzozODE6c3RhdGljIGludCBvdnNfY3RfaW5pdF9sYWJlbHMoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0zODItXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG92c19rZXlfY3RfbGFiZWxzICpsYWJlbHMsXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTk1Nz1zdGF0aWMgaW50IG92c19jdF9jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMTAxMi1cdGlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSkge1xubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjEwMTM6XHRcdGVyciA9IG92c19jdF9pbml0X2xhYmVscyhjdCwga2V5LCBcdTAwMjZpbmZvLVx1MDAzZWxhYmVscy52YWx1ZSxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0xMDE0LVx0XHRcdFx0XHQgXHUwMDI2aW5mby1cdTAwM2VsYWJlbHMubWFzayk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTE5ODM9c3RydWN0IGdlbmxfZmFtaWx5IGRwX2N0X2xpbWl0X2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMTk5OS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzoyMDAwOmludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAwMS17XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oPTEzPWVudW0gb3ZzX2tleV9hdHRyO1xuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaC0xNS0jaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oOjE2OmludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICopO1xubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTE3LXZvaWQgb3ZzX2N0X2V4aXQoc3RydWN0IG5ldCAqKTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg9MzI9dm9pZCBvdnNfY3RfZnJlZV9hY3Rpb24oY29uc3Qgc3RydWN0IG5sYXR0ciAqYSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTQwLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oOjQxOnN0YXRpYyBpbmxpbmUgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gMDsgfVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTQyLVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI3MTg9c3RhdGljIGludCBfX25ldF9pbml0IG92c19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjcyNi1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI3Mjc6XHRlcnIgPSBvdnNfY3RfaW5pdChuZXQpO1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjcyOC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM4OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIE9wZW4gdlN3aXRjaCBLZXJuZWwgQ2hhbmdlKioKCk9rYXksIHNvIGBvdnNfY3RfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG92c19pbml0X25ldGAsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0JiMzOTtzIHRoZSBPcGVuIHZTd2l0Y2ggbmV0bnMgaW5pdGlhbGl6YXRpb24gY2FsbGJhY2suIFRoaXMgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgaW4gaG93IE9wZW4gdlN3aXRjaCBoYW5kbGVzIGVycm9ycyBkdXJpbmcgdGhlIG5ldG5zIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIENydWNpYWxseSwgaXQmIzM5O3MgZml4aW5nIGEgbWVtb3J5IGxlYWssIHdoaWNoIGlzIGFsd2F5cyB3b3J0aCBhZGRyZXNzaW5nLgoKR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlICp3aXRoaW4gdGhlIGtlcm5lbCosIGZ1enppbmcgaXMgYWJzb2x1dGVseSB3YXJyYW50ZWQgaGVyZS4gV2UgbmVlZCB0byBiZSB0aG9yb3VnaC4gVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBmb3Igb3VyIGZ1enppbmcgc3RyYXRlZ3kgYXJlIGBvdnNfY3RfaW5pdGAgYW5kIGBvdnNfaW5pdF9uZXRgLgoKQmVmb3JlIHdlIGdvIHRvbyBkZWVwLCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYE9QRU5WU1dJVENIYCBhbmQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGFyZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBJJiMzOTtsbCBjaGVjayBLY29uZmlnIGZvciB0aG9zZSBmaXJzdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29uZmlnLCBgTkZfQ09OTlRSQUNLYCBzaG91bGQgYmUgZW5hYmxlZCwgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT1BFTlZTV0lUQ0gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnLTUtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaFwmIzM0O1xuLS1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxubmV0L29wZW52c3dpdGNoL0tjb25maWc6NDQ6Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggR1JFIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNTYtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo1Nzpjb25maWcgT1BFTlZTV0lUQ0hfVlhMQU5cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIFZYTEFOIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNjgtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYE5FVEZJTFRFUl9DT05OQ09VTlRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIHJpZ2h0IGluLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0byBjaGVjayB0aGUgc3RhdHVzIG9mIGBORVRGSUxURVJfQ09OTkNPVU5UYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgY2FwYWJpbGl0aWVzIHdpdGhpbiBOZXRmaWx0ZXIuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBhbmQgdHJvdWJsZXNob290aW5nIG5ldHdvcmsgYm90dGxlbmVja3MsIHBhcnRpY3VsYXJseSBpbiBzY2VuYXJpb3Mgd2l0aCBoaWdoIGNvbm5lY3Rpb24gcmF0ZXMgb3IgcG90ZW50aWFsIERvUyBhdHRhY2tzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIG1vZHVsZSBpcyBiZWhhdmluZywgd2hldGhlciBpdCYjMzk7cyBlbmFibGVkLCBhbmQgaWYgYW55IGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIGFyZSBiZWluZyB1c2VkLiBBcmUgY29ubmVjdGlvbiB0cmFja2luZyBsaW1pdHMgY29uZmlndXJlZD8gV2hhdCBhYm91dCB0aGUgY29ubnRyYWNrIGhhc2ggc2l6ZT8gVW5kZXJzdGFuZGluZyB0aGlzIGJhc2VsaW5lIGlzIGZ1bmRhbWVudGFsIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHBvaW50IG9mIHJlZmVyZW5jZSBpZiBJIG5lZWQgdG8gZGlhZ25vc2UgYW4gaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTEwPWlmIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTpjb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMi1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWdzOiBgT1BFTlZTV0lUQ0hgLCBgTkVURklMVEVSX0NPTk5DT1VOVGAsIGFuZCBgTkZfQ09OTlRSQUNLYC4gSG1tLCBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXMgYSB0cmlzdGF0ZSBjb25maWcsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgdGhlcmUmIzM5O3Mgbm8gZGlyZWN0IHByb21wdCBmb3IgaXQuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYmVpbmcgKnNlbGVjdGVkKiBieSBhbm90aGVyIGNvbmZpZy4gUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcHVsbGluZyBpdCBpbi4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHNlbGVjdGluZyBpdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTUxMT1jb25maWcgTkZUX0NPTk5MSU1JVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MTQtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUxNTpcdHNlbGVjdCBORVRGSUxURVJfQ09OTkNPVU5UXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjI4PWNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzEtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzI6XHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzMtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2ODQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBPcGVuIHZTd2l0Y2ggQ29ubmVjdGlvbiBUcmFja2luZyoqCgpSaWdodCwgc28gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGFib3V0IGNvbm5lY3Rpb24gZmx1c2hpbmcgaW4gT3BlbiB2U3dpdGNoIGFuZCBpbW1lZGlhdGVseSBqdW1wZWQgdG8gYE9QRU5WU1dJVENIX0NPTk5GTFVTSGAuIEJ1dCB0aGF0IGRvZXNuJiMzOTt0IHNvdW5kIHF1aXRlIHJpZ2h0Li4uIGlzbiYjMzk7dCB0aGF0IGhhbmRsZWQgYnkgYSBkaWZmZXJlbnQgbWVjaGFuaXNtPyBBaCwgeWVzLCBJIHNlZW0gdG8gcmVjYWxsIE9wZW4gdlN3aXRjaCBsZXZlcmFnaW5nIHRoZSBgSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClgIHNldHRpbmcuIFRoYXQgcmluZ3MgYSBiZWxsLgoKSG1tLCBidXQgdGhhdCBicmluZ3MgdXAgYSBxdWVzdGlvbi4gRG9lcyBPcGVuIHZTd2l0Y2ggYWN0dWFsbHkgKnNlbGVjdCogYE5FVEZJTFRFUl9DT05OQ09VTlRgPyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBCZXN0IHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSBob3cgT3BlbiB2U3dpdGNoIGhhbmRsZXMgdGhpcyBkZXBlbmRlbmN5LiBHb3R0YSBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVURklMVEVSX0NPTk5DT1VOVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL0tjb25maWc9Nj1jb25maWcgT1BFTlZTV0lUQ0hcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy0xMS1cdFx0XHRcdCAgICAgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgXFxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjEyOlx0XHRcdFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxubmV0L29wZW52c3dpdGNoL0tjb25maWctMTMtXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgIVBTQU1QTEVcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9NjE9c3RydWN0IG92c19jb25udHJhY2tfaW5mbyB7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTc5LVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjgwOiNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04MS0jZGVmaW5lIE9WU19DVF9MSU1JVF9VTkxJTUlURURcdDBcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9ODYwPXN0YXRpYyBib29sIGxhYmVsc19ub256ZXJvKGNvbnN0IHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscyAqbGFiZWxzKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04NzAtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6ODcxOiNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04NzItc3RhdGljIHN0cnVjdCBobGlzdF9oZWFkICpjdF9saW1pdF9oYXNoX2J1Y2tldChcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9OTU3PXN0YXRpYyBpbnQgb3ZzX2N0X2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzMtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6OTc0OiNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzUtXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZvdnNfY3RfbGltaXRfZW5hYmxlZCkpIHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MTU2OT1zdGF0aWMgdm9pZCBfX292c19jdF9mcmVlX2FjdGlvbihzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICpjdF9pbmZvKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0xNTg0LVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjE1ODU6I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODYtc3RhdGljIGludCBvdnNfY3RfbGltaXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0KVxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0yMDAwPWludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMDMtXHRzdHJ1Y3Qgb3ZzX25ldCAqb3ZzX25ldCA9IG5ldF9nZW5lcmljKG5ldCwgb3ZzX25ldF9pZCk7XG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAwNDojaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAwNS1cdGludCBlcnI7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMTQtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAxNTojaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAxNi1cdGVyciA9IG92c19jdF9saW1pdF9pbml0KG5ldCwgb3ZzX25ldCk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTIwMjU9dm9pZCBvdnNfY3RfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMjgtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAyOTojaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAzMC1cdG92c19jdF9saW1pdF9leGl0KG5ldCwgb3ZzX25ldCk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oPTk4PXN0YXRpYyBpbmxpbmUgdm9pZCBvdnNfY3RfZnJlZV9hY3Rpb24oY29uc3Qgc3RydWN0IG5sYXR0ciAqYSkgeyB9XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTEwMi1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaDoxMDM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmgtMTA0LWV4dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHBfY3RfbGltaXRfZ2VubF9mYW1pbHk7XG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjY4MD1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5ICogY29uc3QgZHBfZ2VubF9mYW1pbGllc1tdID0ge1xuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI2ODUtXHRcdTAwMjZkcF9tZXRlcl9nZW5sX2ZhbWlseSxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI2ODY6I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjY4Ny1cdFx1MDAyNmRwX2N0X2xpbWl0X2dlbmxfZmFtaWx5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTE3MD1zdHJ1Y3Qgb3ZzX25ldCB7XG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMTczLVx0c3RydWN0IGRlbGF5ZWRfd29yayBtYXNrc19yZWJhbGFuY2U7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDoxNzQ6I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMTc1LVx0c3RydWN0IG92c19jdF9saW1pdF9pbmZvICpjdF9saW1pdF9pbmZvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkgbmVlZCBgTkVURklMVEVSX0NPTk5DT1VOVGAgZm9yIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBSaWdodCwgbWFrZXMgc2Vuc2UuIExldCBtZSBhZGQgYE9QRU5WU1dJVENIYCwgYE5GX0NPTk5UUkFDS2AsIGFuZCBgTkVURklMVEVSX0NPTk5DT1VOVGAgdG8gbXkgY29uZmlndXJhdGlvbi4gSG9sZCBvbiwgd2hhdCYjMzk7cyB0aGlzPyBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXNuJiMzOTt0IGRpcmVjdGx5IHNlbGVjdGFibGUg4oCTIGl0JiMzOTtzIHRyaXN0YXRlIGFuZCBsYWNrcyBhIHByb21wdC4gT2theSwgc28gSSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gKmVuYWJsZSogaXQgaW5kaXJlY3RseS4gQWgsIHJpZ2h0ISBJIGNhbiBzZWxlY3QgZWl0aGVyIGBORlRfQ09OTkxJTUlUYCBvciBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAuIExldCYjMzk7cyBnbyB3aXRoIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgYWRkIHRoYXQgdG8gdGhlIEVuYWJsZUNvbmZpZ3MuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhZ2FpbiB0aGF0IEkgY2FuJiMzOTt0IGVuYWJsZSBgTkVURklMVEVSX0NPTk5DT1VOVGAgZGlyZWN0bHkuIFllcCwgaXQgaGFzIG5vIHByb21wdC4gR29vZCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNob2ljZS4KCk5vdywgbGV0JiMzOTtzIHJlZm9jdXMuIE15IGtleSBzeW1ib2xzIGhlcmUgYXJlIGBvdnNfY3RfaW5pdGAgYW5kIGBvdnNfaW5pdF9uZXRgLiBIYW5nIG9uLCBgb3ZzX2luaXRfbmV0YCBpcyBhIG5ldG5zIGluaXQgY2FsbGJhY2s7IHRoYXQmIzM5O3MgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgaXMgY3JlYXRlZC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZnV6emluZywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBvdnNfY3RfaW5pdGAuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYG92c19jdF9pbml0YCBpcyBzdGF0aWMuIE5vcGUsIGl0JiMzOTtzIGBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KWAuIE9rYXksIG5leHQgSSBzaG91bGQgY2hlY2sgYG92c19jdF9saW1pdF9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2N0X2xpbWl0X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0xNTY5PXN0YXRpYyB2b2lkIF9fb3ZzX2N0X2ZyZWVfYWN0aW9uKHN0cnVjdCBvdnNfY29ubnRyYWNrX2luZm8gKmN0X2luZm8pXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODUtI2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjE1ODY6c3RhdGljIGludCBvdnNfY3RfbGltaXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0KVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODcte1xuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0yMDAwPWludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMTUtI2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjIwMTY6XHRlcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMTctXHRpZiAoZXJyIFx1MDAyNlx1MDAyNiBvdnNfbmV0LVx1MDAzZXh0X2xhYmVsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjIwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE9WUyBDb25uZWN0aW9uIFRyYWNraW5nIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgT3BlbiB2U3dpdGNoIGluaXRpYWxpemVzIGl0cyBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2N0X2xpbWl0X2luaXRgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBwcm9iYWJseSBub3Qgd2hlcmUgdGhlIGFjdGlvbiBpcy4gSW5zdGVhZCwgSSBuZWVkIHRvIHpvb20gaW4gb24gYG92c19jdF9pbml0YCBhbmQgYG92c19pbml0X25ldGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgbGlrZWx5IGhhbmRsZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbi4KCkxldCBtZSBxdWlja2x5IHZlcmlmeSBteSBoeXBvdGhlc2lzIGFib3V0IGBvdnNfaW5pdF9uZXRgLiBJcyB0aGF0IG9uZSBhbHNvIHN0YXRpYywgb3IgZG9lcyBpdCBvZmZlciBhIHBhdGggZm9yIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24gb3IgZXh0ZW5zaW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYmVmb3JlIEkgY2FuIGRldGVybWluZSB0aGUgcHJvcGVyIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19pbml0X25ldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjY5OT1zdGF0aWMgaW50IF9faW5pdCBkcF9yZWdpc3Rlcl9nZW5sKHZvaWQpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjcxNy1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI3MTg6c3RhdGljIGludCBfX25ldF9pbml0IG92c19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNzE5LXtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yNzkxPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgb3ZzX25ldF9vcHMgPSB7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzoyNzkyOlx0LmluaXQgPSBvdnNfaW5pdF9uZXQsXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNzkzLVx0LmV4aXQgPSBvdnNfZXhpdF9uZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgT3BlbiB2U3dpdGNoIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2luaXRfbmV0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGxpbWl0cyBpdHMgc2NvcGUuIFdhaXQsIGhvbGQgb24uLi4gYG92c19jdF9pbml0YCBpcyAqbm90KiBzdGF0aWMsIHRoYXQmIzM5O3MgdGhlIGtleSBkaXN0aW5jdGlvbiBoZXJlLiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uPyBObywgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgb3ZzX2N0X2luaXRgLiBUaGlzIG1lYW5zIGBvdnNfY3RfaW5pdGAgaXMgdGhlIHNvbGUgbm9uLXN0YXRpYyBmdW5jdGlvbiBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcy4gR29vZC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaXMgYG92c19jdF9pbml0YCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2U/IFRoZSBhbnN3ZXIgaXMgeWVzLCBhYnNvbHV0ZWx5LiBJIGNhbiBzZWUgaG93IHlvdSBjb3VsZCB0cmlnZ2VyIGl0IGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLiBgdW5zaGFyZSAtbmAgb3IgZXZlbiBgY2xvbmUoQ0xPTkVfTkVXTkVUKWAgd2lsbCBmaXJlIG9mZiBgb3ZzX2luaXRfbmV0YCwgYW5kIHRoYXQsIGluIHR1cm4sIGNhbGxzIGBvdnNfY3RfaW5pdGAuIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0ZXN0IHBhdGguIEkmIzM5O3ZlIGdvdCBhIGNsZWFyIHdheSB0byB2ZXJpZnkgdGhlIGNoYW5nZSBub3cuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IHRoZSBjb25maWd1cmF0aW9ucyBzdHJhaWdodC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbmVlZGluZyBgT1BFTlZTV0lUQ0hgLCBvZiBjb3Vyc2UsIHRoZW4gYE5GX0NPTk5UUkFDS2AgYW5kLCBpbXBvcnRhbnRseSwgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIHRvIGVuYWJsZSBgTkVURklMVEVSX0NPTk5DT1VOVGAuCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTIxNT1jb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MQUJFTFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMjg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb25ubGltaXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMjEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlOiBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUKioKCk9rYXksIHRpbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCYjMzk7cyBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLCBJIGtub3cgdGhpcyBtYXRjaCBpcyB1c2VkIGZvciBjb25uZWN0aW9uIHJhdGUgbGltaXRpbmcuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcmV2aWV3IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgc2VlIGl0cyBkaXJlY3QgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aHJvdWdoIG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMuIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29ubmVjdGlvbiB0cmFja2luZyBmZWF0dXJlcyBpdCBtaWdodCBjb25mbGljdCB3aXRoLCBvciByZWx5IHVwb24/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUgc2l6ZSBhbmQgcGVyZm9ybWFuY2Ugd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zPyBJIGFsc28gbmVlZCB0byBjb25zaWRlciBwb3NzaWJsZSBpbXBhY3RzIG9uIHRoZSB1c2Vyc3BhY2UgdG9vbHMgdGhhdCBtaWdodCBpbnRlcmFjdCB3aXRoIHRoaXMgbW9kdWxlLCBzdWNoIGFzIGBpcHRhYmxlc2Agb3IgYG5mdGFibGVzYCwgYW5kIHdoZXRoZXIgdGhlaXIgY29kZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGFzc3VtcHRpb25zIHRpZWQgdG8gdGhpcyBtYXRjaC4gSXQmIzM5O3MgYWxzbyB3b3J0aCBhIHF1aWNrIHJldmlldyBvZiBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uIHRvIGNoZWNrIHRoZSBkZXRhaWxzIG9mIGltcGxlbWVudGF0aW9uLCBhbmQgd2hhdCBwb3RlbnRpYWwgYnVncyB3ZXJlIGZvdW5kIGluIHByZXZpb3VzIHZlcnNpb25zLiBGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb2RlIHBhdGggZm9yIHRoaXMgYW5kIHJlbGF0ZWQgbW9kdWxlcyBqdXN0IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIyODpcdGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXG4xMjI5Olx0XHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm5saW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbjEyMzA6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4xMjMxOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuMTIzMjpcdFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcbjEyMzM6XHRcdGhlbHBcbjEyMzQ6XHRcdCAgVGhpcyBtYXRjaCBhbGxvd3MgeW91IHRvIG1hdGNoIGFnYWluc3QgdGhlIG51bWJlciBvZiBwYXJhbGxlbFxuMTIzNTpcdFx0ICBjb25uZWN0aW9ucyB0byBhIHNlcnZlciBwZXIgY2xpZW50IElQIGFkZHJlc3MgKG9yIGFkZHJlc3MgYmxvY2spLlxuMTIzNjpcdFxuMTIzNzpcdGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIGNvbnNpZGVyYXRpb25zLCBkaXN0aWxsZWQgaW50byBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBBIFF1aWNrIFJldmlldyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB0aGUgYmVoYXZpb3IgaGluZ2VzIG9uIHRoZSBwcmVzZW5jZSBvZiBgTkZfQ09OTlRSQUNLYCBhbmQgYE5FVEZJTFRFUl9BRFZBTkNFRGAuIENsZWFybHksIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBORVRGSUxURVJfQURWQU5DRURgIGlzIGVuYWJsZWQgaW4gbXkgY29uZmlncywgdGhhdCYjMzk7cyBhIGdpdmVuLgoKV2FpdCBhIHNlY29uZCwgdGhlcmUmIzM5O3MgYW5vdGhlciBkZXBlbmRlbmN5IEkgbmVlZCB0byBmYWN0b3IgaW4hIGBORlRfQ09OTkxJTUlUYCBzZWxlY3RzIGBORVRGSUxURVJfQ09OTkNPVU5UYC4gQmVzdCBkb3VibGUtY2hlY2sgdGhlIGBORlRfQ09OTkxJTUlUYCBjb25maWd1cmF0aW9uIGFsb25nc2lkZSB0aGUgb3RoZXJzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHByb3Blcmx5IGVuYWJsZWQgYW5kIGFsaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTExLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MTE6XHRjb25maWcgTkZUX0NPTk5MSU1JVFxuIDUxMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBjb25ubGltaXQgbW9kdWxlXCYjMzQ7XG4gNTEzOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDUxNDpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiA1MTU6XHRcdHNlbGVjdCBORVRGSUxURVJfQ09OTkNPVU5UXG4gNTE2Olx0XHRoZWxwXG4gNTE3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIFwmIzM0O2Nvbm5saW1pdFwmIzM0OyBleHByZXNzaW9uIHRoYXQgeW91IGNhbiB1c2UgdG9cbiA1MTg6XHRcdCAgcmF0ZWxpbWl0IHJ1bGUgbWF0Y2hpbmdzIHBlciBjb25uZWN0aW9ucy5cbiA1MTk6XHRcbiA1MjA6XHRjb25maWcgTkZUX0xPR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjEwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSBzZWUgd2UmIzM5O3JlIGFscmVhZHkgc2VsZWN0aW5nIGBORVRGSUxURVJfQ09OTkNPVU5UYC4gR29vZCwgYSBzb2xpZCBmb3VuZGF0aW9uLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgcGF0Y2gsIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBpbiBgb3ZzX2N0X2luaXRgIHdoZW4gYG92c19jdF9saW1pdF9pbml0YCBmYWlscywgSSYjMzk7bSBnb2luZyB0byBhZGQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX0FEVkFOQ0VEYCB0byB0aGUgbWl4LiBUaGVzZSBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbGltaXRpbmcgYXNwZWN0cywgYW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiB3aXRoaW4gT3BlbiB2U3dpdGNoLCB0aGV5JiMzOTtyZSBwcm9iYWJseSBjcml0aWNhbCB0byB0aGUgZnVsbCBmdW5jdGlvbmFsaXR5IGFuZCB0aHVzLCBmdXp6aW5nIGNhcGFiaWxpdHkuCgpUaGVyZWZvcmUsIG15IGZpbmFsIGNvbmZpZ3VyYXRpb24gY2hlY2tsaXN0IGxvb2tzIGxpa2UgdGhpczoKCiogICBgT1BFTlZTV0lUQ0hgCiogICBgTkZfQ09OTlRSQUNLYAoqICAgYE5FVEZJTFRFUl9BRFZBTkNFRGAKKiAgIGBORlRfQ09OTkxJTUlUYAoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIGdvaW5nIHRvIGJlIGBvdnNfY3RfaW5pdGAuIFRoZSBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBmYWlsdXJlIHNjZW5hcmlvIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGVuY291bnRlcnMgYW4gaXNzdWUuIFRoaXMgY2xlYXJseSBwb2ludHMgdG8gYW4gZXJyb3IgcGF0aCB0aGF0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcgYXR0ZW50aW9uLiBJdCYjMzk7cyB0cmlnZ2VyZWQgYnkgdGhlIGNyZWF0aW9uIG9mIG5ldyBuZXR3b3JrIG5hbWVzcGFjZXMsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIGFuZCB0aHVzLCBhIGdvb2QgY2FuZGlkYXRlIGZvciB0cmlnZ2VyaW5nIHRoZSBlcnJvci4KCkxldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIE9wZW4gdlN3aXRjaCBjb25maWd1cmF0aW9uIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJIHdhbnQgdG8gYmUgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGlzIG1lbW9yeSBsZWFrIGR1cmluZyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA2Olx0Y29uZmlnIE9QRU5WU1dJVENIXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2hcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAgOTpcdFx0ZGVwZW5kcyBvbiAhTkZfQ09OTlRSQUNLIHx8IFxcXG4gIDEwOlx0XHRcdCAgIChORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2ICgoIU5GX0RFRlJBR19JUFY2IHx8IE5GX0RFRlJBR19JUFY2KSBcdTAwMjZcdTAwMjYgXFxcbiAgMTE6XHRcdFx0XHRcdCAgICAgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgXFxcbiAgMTI6XHRcdFx0XHRcdCAgICAgKCFORVRGSUxURVJfQ09OTkNPVU5UIHx8IE5FVEZJTFRFUl9DT05OQ09VTlQpKSlcbiAgMTM6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCAhUFNBTVBMRVxuICAxNDpcdFx0c2VsZWN0IE1QTFNcbiAgMTU6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gIDE2Olx0XHRzZWxlY3QgTkVUX01QTFNfR1NPXG4gIDE3Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gIDE4Olx0XHRzZWxlY3QgTkVUX05TSFxuICAxOTpcdFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlMgaWYgTkZfQ09OTlRSQUNLXG4gIDIwOlx0XHRzZWxlY3QgTkZfTkFUX09WUyBpZiBORl9OQVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk4MgoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCB0aGlzIGhpbmdlcyBvbiBgSU5FVGAsIHNvIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gYWRkaW5nLiBDb25zaWRlcmluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLCBJIHNlZSBhIG5lZWQgZm9yIGBPUEVOVlNXSVRDSGAsIGBJTkVUYCwgbmF0dXJhbGx5LCBhbG9uZyB3aXRoIGBORl9DT05OVFJBQ0tgLCBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYW5kIGBORlRfQ09OTkxJTUlUYC4gV2FpdCBhIHNlY29uZOKApiBpZGVhbGx5LCB3ZeKAmWQgZGlyZWN0bHkgdGFyZ2V0IGBORVRGSUxURVJfQ09OTkNPVU5UYCwgYnV0IHRoYXQgb25lIGlzbiYjMzk7dCBhIHByb21wdGFibGUgb3B0aW9uLiBObyBwcm9ibGVtLCBgTkZUX0NPTk5MSU1JVGAgZWZmZWN0aXZlbHkgZW5hYmxlcyBpdCwgc28gSSYjMzk7bGwganVzdCBsaXN0IHRoYXQgdG8ga2VlcCB0aGluZ3MgdGlkeS4KCkhtbSwgYW55dGhpbmcgZWxzZSBjcml0aWNhbD8gUmlnaHQsIHRoZSBwYXRjaCBtb2RpZmllcyBgb3ZzX2N0X2luaXRgLCBhbmQgdGhhdCBmdW5jdGlvbiBpcywgdGhhbmtmdWxseSwgbm9uLXN0YXRpYy4gR29vZCBuZXdzLiBUaGlzIGRlZmluaXRlbHkgcXVhbGlmaWVzIGFzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcsIHNvIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5LiBMZXQmIzM5O3MgZ2V0IHRoZXNlIHJlc3VsdHMgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1BFTlZTV0lUQ0gmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdnNfY3RfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBgb3ZzX2N0X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlIGZvciBPcGVuIHZTd2l0Y2guIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1BFTlZTV0lUQ0gmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdnNfY3RfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBgb3ZzX2N0X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlIGZvciBPcGVuIHZTd2l0Y2guIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNlYmQyZTVkOGI0MTgzOTBmOTQ3M2Y4YTU2MDU2YThiMzI3M2FmMmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYwppbmRleCA5NTY5N2Q0ZTE2ZTY0Li5mYmFhNjc3MTQ0MTQzIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jCkBAIC0yMDAxLDYgJiM0MzsyMDAxLDkgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAl1bnNpZ25lZCBpbnQgbl9iaXRzID0gc2l6ZW9mKHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscykgKiBCSVRTX1BFUl9CWVRFOwogCXN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTsKJiM0MzsjaWYJSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVCkKJiM0MzsJaW50IGVycjsKJiM0MzsjZW5kaWYKIAogCWlmIChuZl9jb25ubGFiZWxzX2dldChuZXQsIG5fYml0cyAtIDEpKSB7CiAJCW92c19uZXQtJmd0O3h0X2xhYmVsID0gZmFsc2U7CkBAIC0yMDEwLDcgJiM0MzsyMDEzLDEwIEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCiAJfQogCiAjaWYJSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVCkKLQlyZXR1cm4gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTsKJiM0MzsJZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTsKJiM0MzsJaWYgKGVyciAmYW1wOyZhbXA7IG92c19uZXQtJmd0O3h0X2xhYmVsKQomIzQzOwkJbmZfY29ubmxhYmVsc19wdXQobmV0KTsKJiM0MzsJcmV0dXJuIGVycjsKICNlbHNlCiAJcmV0dXJuIDA7CiAjZW5kaWYKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjQKCQkJCQkJCW91dHB1dDogMTI3CgkJCQkJCQl0aG91Z2h0czogNDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBPcGVuIHZTd2l0Y2ggQ29ubnRyYWNrIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgb3ZzX2N0X2luaXRgIHdpdGhpbiBgbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jYC4gTXkgaW5pdGlhbCByZWFkIGluZGljYXRlcyBpdCYjMzk7cyBhZGRpbmcgc29tZSBtdWNoLW5lZWRlZCBlcnJvciBoYW5kbGluZyBhcm91bmQgYG92c19jdF9saW1pdF9pbml0YC4gVGhlIGxvZ2ljIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscyBhbmQgdGhpcyBgb3ZzX25ldC0mZ3Q7eHRfbGFiZWxgIGZsYWcgaXMgc2V0LCB0aGVuIHdlIGNhbGwgYG5mX2Nvbm5sYWJlbHNfcHV0KG5ldClgLgoKSW1tZWRpYXRlbHksIEkgc2VlIHRoaXMgYXMgYSByZXNvdXJjZSBsZWFrIHByZXZlbnRpb24gbWVhc3VyZS4gV2UgYXJlIGNsZWFuaW5nIHVwIHBvdGVudGlhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgb24gYW4gZXJyb3IgcGF0aC4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgZG9lcyBub3Qgc2VlbSB0byBwcmVzZW50IGEgcmlzayBvZiByZWFkaW5nIG9yIHdyaXRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0IGlzIHB1cmVseSBhbiBlcnJvciBwYXRoIGNsZWFudXAuIE5vIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLgoKR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgcmVzb3VyY2UgbGVhayBmaXguIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIG1lbW9yeSBzYWZldHkgaXMgcmVxdWlyZWQuIEkmIzM5O2xsIGZsYWcgdGhpcyBhcyBzdWNoLiBUaGVyZWZvcmUgSSB3aWxsIHNldCBOZWVkc0tNU0FOPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUxOjAwLjc5MDgyMDUyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwOTU5MDAxODU4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GVF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfY3RfaW5pdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgYnkgY2FsbGluZyBgbmZfY29ubmxhYmVsc19wdXRgIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIFRoaXMgaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0b3JzIChrbWVtbGVhaykgYXJlIHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MTowMC43OTA4NDQ4OTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzkyNzMyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZWJkMmU1ZDhiNDE4MzkwZjk0NzNmOGE1NjA1NmE4YjMyNzNhZjJmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUwOjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xcbmluZGV4IDk1Njk3ZDRlMTZlNjQuLmZiYWE2NzcxNDQxNDMgMTAwNjQ0XFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXFxuQEAgLTIwMDEsNiArMjAwMSw5IEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IG5fYml0cyA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tleV9jdF9sYWJlbHMpICogQklUU19QRVJfQllURTtcXG4gXFx0c3RydWN0IG92c19uZXQgKm92c19uZXQgPSBuZXRfZ2VuZXJpYyhuZXQsIG92c19uZXRfaWQpO1xcbisjaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbitcXHRpbnQgZXJyO1xcbisjZW5kaWZcXG4gXFxuIFxcdGlmIChuZl9jb25ubGFiZWxzX2dldChuZXQsIG5fYml0cyAtIDEpKSB7XFxuIFxcdFxcdG92c19uZXQtXFx1MDAzZXh0X2xhYmVsID0gZmFsc2U7XFxuQEAgLTIwMTAsNyArMjAxMywxMCBAQCBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHR9XFxuIFxcbiAjaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbi1cXHRyZXR1cm4gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcXG4rXFx0ZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcXG4rXFx0aWYgKGVyciBcXHUwMDI2XFx1MDAyNiBvdnNfbmV0LVxcdTAwM2V4dF9sYWJlbClcXG4rXFx0XFx0bmZfY29ubmxhYmVsc19wdXQobmV0KTtcXG4rXFx0cmV0dXJuIGVycjtcXG4gI2Vsc2VcXG4gXFx0cmV0dXJuIDA7XFxuICNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MTowMi4yMzEwMTQ0NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQwMTE2NDg2OTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GVF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfY3RfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZWJkMmU1ZDhiNDE4MzkwZjk0NzNmOGE1NjA1NmE4YjMyNzNhZjJmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6NTA6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMgYi9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmNcbmluZGV4IDk1Njk3ZDRlMTZlNjQuLmZiYWE2NzcxNDQxNDMgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmNcbisrKyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuQEAgLTIwMDEsNiArMjAwMSw5IEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuIFx0dW5zaWduZWQgaW50IG5fYml0cyA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tleV9jdF9sYWJlbHMpICogQklUU19QRVJfQllURTtcbiBcdHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTtcbisjaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG4rXHRpbnQgZXJyO1xuKyNlbmRpZlxuIFxuIFx0aWYgKG5mX2Nvbm5sYWJlbHNfZ2V0KG5ldCwgbl9iaXRzIC0gMSkpIHtcbiBcdFx0b3ZzX25ldC1cdTAwM2V4dF9sYWJlbCA9IGZhbHNlO1xuQEAgLTIwMTAsNyArMjAxMywxMCBAQCBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0fVxuIFxuICNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbi1cdHJldHVybiBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xuK1x0ZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcbitcdGlmIChlcnIgXHUwMDI2XHUwMDI2IG92c19uZXQtXHUwMDNleHRfbGFiZWwpXG4rXHRcdG5mX2Nvbm5sYWJlbHNfcHV0KG5ldCk7XG4rXHRyZXR1cm4gZXJyO1xuICNlbHNlXG4gXHRyZXR1cm4gMDtcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUxOjAyLjIzMTAxNTc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NTAyMDkyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPcGVuIHZTd2l0Y2ggQ29ubnRyYWNrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBgbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jYC4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXgsIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvZiBgbmZfY29ubmxhYmVsc2Agd2l0aGluIGBvdnNfY3RfaW5pdGAuIFRoaXMgaXMgYSBwcmV0dHkgY3JpdGljYWwgYXJlYSwgYXMgYG92c19jdF9pbml0YCBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIE9wZW4gdlN3aXRjaCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gQW55IGxlYWtzIHRoZXJlIGNvdWxkIGJlIHByb2JsZW1hdGljLCBlc3BlY2lhbGx5IGF0IHNjYWxlLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIGBvdnNfY3RfaW5pdGAgYW5kIGBvdnNfY3RfbGltaXRfaW5pdGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBidWcuIEZyb20gdGhlIGRlc2NyaXB0aW9uLCB0aGUgcGF0Y2ggYXBwZWFycyB0byBhZGQgYSBgbmZfY29ubmxhYmVsc19wdXQobmV0KWAgY2FsbCBpZiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzIGFuZCBhIGNvbmRpdGlvbiBpcyBtZXQg4oCTIHNwZWNpZmljYWxseSwgaWYgYG92c19uZXQtXHUwMDNleHRfbGFiZWxgIGlzIHRydWUuIFRoYXQgaW5kaWNhdGVzIGEgY29uZGl0aW9uYWwgY2xlYW51cCwgd2hpY2ggaXMgZ29vZC4gV2UgZGVmaW5pdGVseSB3YW50IHRvIGVuc3VyZSB0aGVzZSBsYWJlbHMgYXJlIHJlbGVhc2VkIGNvcnJlY3RseSBpbiBlcnJvciBwYXRocy5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0J3MganVzdCBkbyBhIHF1aWNrIGBncmVwYCBmb3IgYG92c19jdF9pbml0YCB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGViYXNlIHRvIGdldCB0aGUgYnJvYWRlciBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBob3cgZnJlcXVlbnRseSB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBpbXBhY3QgYW5kIHBvdGVudGlhbCBzZXZlcml0eSBvZiB0aGUgb3JpZ2luYWwgbGVhay4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgY29uZmlybSB0aGF0IHRoZSBmaXggcHJvcGVybHkgYWRkcmVzc2VzIGFsbCBwb3RlbnRpYWwgc2NlbmFyaW9zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTE6NDMuOTgxMjI4MDI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MDE1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92c19jdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTM2ND1zdGF0aWMgc3RydWN0IG5mX2Nvbm5fbGFiZWxzICpvdnNfY3RfZ2V0X2Nvbm5fbGFiZWxzKHN0cnVjdCBuZl9jb25uICpjdClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0zODAtICovXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjM4MTpzdGF0aWMgaW50IG92c19jdF9pbml0X2xhYmVscyhzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0zODItXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IG92c19rZXlfY3RfbGFiZWxzICpsYWJlbHMsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9OTU3PXN0YXRpYyBpbnQgb3ZzX2N0X2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTEwMTItXFx0aWYgKCFuZl9jdF9pc19jb25maXJtZWQoY3QpKSB7XFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjEwMTM6XFx0XFx0ZXJyID0gb3ZzX2N0X2luaXRfbGFiZWxzKGN0LCBrZXksIFxcdTAwMjZpbmZvLVxcdTAwM2VsYWJlbHMudmFsdWUsXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTEwMTQtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpbmZvLVxcdTAwM2VsYWJlbHMubWFzayk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MTk4Mz1zdHJ1Y3QgZ2VubF9mYW1pbHkgZHBfY3RfbGltaXRfZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE5OTktXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjIwMDA6aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAwMS17XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg9MTM9ZW51bSBvdnNfa2V5X2F0dHI7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmgtMTUtI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg6MTY6aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKik7XFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTE3LXZvaWQgb3ZzX2N0X2V4aXQoc3RydWN0IG5ldCAqKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaD0zMj12b2lkIG92c19jdF9mcmVlX2FjdGlvbihjb25zdCBzdHJ1Y3QgbmxhdHRyICphKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaC00MC1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg6NDE6c3RhdGljIGlubGluZSBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KSB7IHJldHVybiAwOyB9XFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTQyLVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjcxOD1zdGF0aWMgaW50IF9fbmV0X2luaXQgb3ZzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3MjYtXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MjcyNzpcXHRlcnIgPSBvdnNfY3RfaW5pdChuZXQpO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3MjgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTE6NDQuMDMwMjQ4NDM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2MzE2NzUzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBPcGVuIHZTd2l0Y2ggS2VybmVsIENoYW5nZSoqXG5cbk9rYXksIHNvIGBvdnNfY3RfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG92c19pbml0X25ldGAsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0J3MgdGhlIE9wZW4gdlN3aXRjaCBuZXRucyBpbml0aWFsaXphdGlvbiBjYWxsYmFjay4gVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiBob3cgT3BlbiB2U3dpdGNoIGhhbmRsZXMgZXJyb3JzIGR1cmluZyB0aGUgbmV0bnMgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gQ3J1Y2lhbGx5LCBpdCdzIGZpeGluZyBhIG1lbW9yeSBsZWFrLCB3aGljaCBpcyBhbHdheXMgd29ydGggYWRkcmVzc2luZy5cblxuR2l2ZW4gdGhhdCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgKndpdGhpbiB0aGUga2VybmVsKiwgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLiBUaGUga2V5IHN5bWJvbHMgdG8ga2VlcCBpbiBtaW5kIGZvciBvdXIgZnV6emluZyBzdHJhdGVneSBhcmUgYG92c19jdF9pbml0YCBhbmQgYG92c19pbml0X25ldGAuXG5cbkJlZm9yZSB3ZSBnbyB0b28gZGVlcCwgbGV0J3MgbWFrZSBzdXJlIHRoYXQgYE9QRU5WU1dJVENIYCBhbmQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGFyZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBJJ2xsIGNoZWNrIEtjb25maWcgZm9yIHRob3NlIGZpcnN0LiBBbmQsIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgY29ubmVjdGlvbiB0cmFja2luZyBjb25maWcsIGBORl9DT05OVFJBQ0tgIHNob3VsZCBiZSBlbmFibGVkLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzg4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUyOjA5LjY2MTkyNjY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDI5MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBPUEVOVlNXSVRDSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTUtXFxubmV0L29wZW52c3dpdGNoL0tjb25maWc6Njpjb25maWcgT1BFTlZTV0lUQ0hcXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2hcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00My1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo0NDpjb25maWcgT1BFTlZTV0lUQ0hfR1JFXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHUkUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy01Ni1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo1Nzpjb25maWcgT1BFTlZTV0lUQ0hfVlhMQU5cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy01OC1cXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoIFZYTEFOIHR1bm5lbGluZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNjgtXFxubmV0L29wZW52c3dpdGNoL0tjb25maWc6Njk6Y29uZmlnIE9QRU5WU1dJVENIX0dFTkVWRVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTcwLVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggR2VuZXZlIHR1bm5lbGluZyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjowOS43MDgzNjE0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTA2MTIyNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBORVRGSUxURVJfQ09OTkNPVU5UYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgcmlnaHQgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgYE5FVEZJTFRFUl9DT05OQ09VTlRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBjYXBhYmlsaXRpZXMgd2l0aGluIE5ldGZpbHRlci4gVGhpcyBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGFuZCB0cm91Ymxlc2hvb3RpbmcgbmV0d29yayBib3R0bGVuZWNrcywgcGFydGljdWxhcmx5IGluIHNjZW5hcmlvcyB3aXRoIGhpZ2ggY29ubmVjdGlvbiByYXRlcyBvciBwb3RlbnRpYWwgRG9TIGF0dGFja3MuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgbW9kdWxlIGlzIGJlaGF2aW5nLCB3aGV0aGVyIGl0J3MgZW5hYmxlZCwgYW5kIGlmIGFueSBjb25maWd1cmFibGUgcGFyYW1ldGVycyBhcmUgYmVpbmcgdXNlZC4gQXJlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbGltaXRzIGNvbmZpZ3VyZWQ/IFdoYXQgYWJvdXQgdGhlIGNvbm50cmFjayBoYXNoIHNpemU/IFVuZGVyc3RhbmRpbmcgdGhpcyBiYXNlbGluZSBpcyBmdW5kYW1lbnRhbCBiZWZvcmUgSSBkaWcgYW55IGRlZXBlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCBvZiByZWZlcmVuY2UgaWYgSSBuZWVkIHRvIGRpYWdub3NlIGFuIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTI6MTIuNjE4OTc2MjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwMjc1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTExMD1pZiBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExOmNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMi1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjoxMi42NjkwMDk4NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODUxMTYxMTUzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWdzOiBgT1BFTlZTV0lUQ0hgLCBgTkVURklMVEVSX0NPTk5DT1VOVGAsIGFuZCBgTkZfQ09OTlRSQUNLYC4gSG1tLCBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXMgYSB0cmlzdGF0ZSBjb25maWcsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgdGhlcmUncyBubyBkaXJlY3QgcHJvbXB0IGZvciBpdC4gVGhhdCBtZWFucyBpdCdzIGJlaW5nICpzZWxlY3RlZCogYnkgYW5vdGhlciBjb25maWcuIFJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgcHVsbGluZyBpdCBpbi4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZS4gTGV0J3Mgc2VlIHdoYXQncyBzZWxlY3RpbmcgaXQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjE3Ljc4NTEyODczMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1MjAwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTExPWNvbmZpZyBORlRfQ09OTkxJTUlUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE0LVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUxNTpcXHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTEyMjg9Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMxLVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzI6XFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzMy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjE3Ljg1MTY1NTQ5MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODM4ODI1MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBPcGVuIHZTd2l0Y2ggQ29ubmVjdGlvbiBUcmFja2luZyoqXG5cblJpZ2h0LCBzbyBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYWJvdXQgY29ubmVjdGlvbiBmbHVzaGluZyBpbiBPcGVuIHZTd2l0Y2ggYW5kIGltbWVkaWF0ZWx5IGp1bXBlZCB0byBgT1BFTlZTV0lUQ0hfQ09OTkZMVVNIYC4gQnV0IHRoYXQgZG9lc24ndCBzb3VuZCBxdWl0ZSByaWdodC4uLiBpc24ndCB0aGF0IGhhbmRsZWQgYnkgYSBkaWZmZXJlbnQgbWVjaGFuaXNtPyBBaCwgeWVzLCBJIHNlZW0gdG8gcmVjYWxsIE9wZW4gdlN3aXRjaCBsZXZlcmFnaW5nIHRoZSBgSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClgIHNldHRpbmcuIFRoYXQgcmluZ3MgYSBiZWxsLlxuXG5IbW0sIGJ1dCB0aGF0IGJyaW5ncyB1cCBhIHF1ZXN0aW9uLiBEb2VzIE9wZW4gdlN3aXRjaCBhY3R1YWxseSAqc2VsZWN0KiBgTkVURklMVEVSX0NPTk5DT1VOVGA/IEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIEJlc3QgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9vcGVudnN3aXRjaC9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIGhvdyBPcGVuIHZTd2l0Y2ggaGFuZGxlcyB0aGlzIGRlcGVuZGVuY3kuIEdvdHRhIGJlIHByZWNpc2UgYWJvdXQgdGhlc2UgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njg0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTU6MjcuNjkwNDgzNDY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwNDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRGSUxURVJfQ09OTkNPVU5UXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWc9Nj1jb25maWcgT1BFTlZTV0lUQ0hcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTExLVxcdFxcdFxcdFxcdCAgICAgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxubmV0L29wZW52c3dpdGNoL0tjb25maWc6MTI6XFx0XFx0XFx0XFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTEzLVxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCAhUFNBTVBMRVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTYxPXN0cnVjdCBvdnNfY29ubnRyYWNrX2luZm8ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTc5LVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzo4MDojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04MS0jZGVmaW5lIE9WU19DVF9MSU1JVF9VTkxJTUlURURcXHQwXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9ODYwPXN0YXRpYyBib29sIGxhYmVsc19ub256ZXJvKGNvbnN0IHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscyAqbGFiZWxzKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTg3MC1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6ODcxOiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTg3Mi1zdGF0aWMgc3RydWN0IGhsaXN0X2hlYWQgKmN0X2xpbWl0X2hhc2hfYnVja2V0KFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTk1Nz1zdGF0aWMgaW50IG92c19jdF9jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzMtXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjk3NDojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzUtXFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNm92c19jdF9saW1pdF9lbmFibGVkKSkge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTE1Njk9c3RhdGljIHZvaWQgX19vdnNfY3RfZnJlZV9hY3Rpb24oc3RydWN0IG92c19jb25udHJhY2tfaW5mbyAqY3RfaW5mbylcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0xNTg0LVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzoxNTg1OiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODYtc3RhdGljIGludCBvdnNfY3RfbGltaXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTIwMDA9aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDAzLVxcdHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTtcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAwNDojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDA1LVxcdGludCBlcnI7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAxNC1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAxNTojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDE2LVxcdGVyciA9IG92c19jdF9saW1pdF9pbml0KG5ldCwgb3ZzX25ldCk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MjAyNT12b2lkIG92c19jdF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDI4LVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzoyMDI5OiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMzAtXFx0b3ZzX2N0X2xpbWl0X2V4aXQobmV0LCBvdnNfbmV0KTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaD05OD1zdGF0aWMgaW5saW5lIHZvaWQgb3ZzX2N0X2ZyZWVfYWN0aW9uKGNvbnN0IHN0cnVjdCBubGF0dHIgKmEpIHsgfVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTEwMi1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg6MTAzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaC0xMDQtZXh0ZXJuIHN0cnVjdCBnZW5sX2ZhbWlseSBkcF9jdF9saW1pdF9nZW5sX2ZhbWlseTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI2ODA9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSAqIGNvbnN0IGRwX2dlbmxfZmFtaWxpZXNbXSA9IHtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI2ODUtXFx0XFx1MDAyNmRwX21ldGVyX2dlbmxfZmFtaWx5LFxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI2ODY6I2lmXFx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNjg3LVxcdFxcdTAwMjZkcF9jdF9saW1pdF9nZW5sX2ZhbWlseSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTE3MD1zdHJ1Y3Qgb3ZzX25ldCB7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0xNzMtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBtYXNrc19yZWJhbGFuY2U7XFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg6MTc0OiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMTc1LVxcdHN0cnVjdCBvdnNfY3RfbGltaXRfaW5mbyAqY3RfbGltaXRfaW5mbztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTU6MjcuNzM2MDA1MjAzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTE3ODY3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGZvciB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aC4gUmlnaHQsIG1ha2VzIHNlbnNlLiBMZXQgbWUgYWRkIGBPUEVOVlNXSVRDSGAsIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIHRvIG15IGNvbmZpZ3VyYXRpb24uIEhvbGQgb24sIHdoYXQncyB0aGlzPyBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXNuJ3QgZGlyZWN0bHkgc2VsZWN0YWJsZSDigJMgaXQncyB0cmlzdGF0ZSBhbmQgbGFja3MgYSBwcm9tcHQuIE9rYXksIHNvIEkgbmVlZCB0byBmaW5kIGEgd2F5IHRvICplbmFibGUqIGl0IGluZGlyZWN0bHkuIEFoLCByaWdodCEgSSBjYW4gc2VsZWN0IGVpdGhlciBgTkZUX0NPTk5MSU1JVGAgb3IgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgLiBMZXQncyBnbyB3aXRoIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgYWRkIHRoYXQgdG8gdGhlIEVuYWJsZUNvbmZpZ3MuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQncyBkb3VibGUtY2hlY2sgYWdhaW4gdGhhdCBJIGNhbid0IGVuYWJsZSBgTkVURklMVEVSX0NPTk5DT1VOVGAgZGlyZWN0bHkuIFllcCwgaXQgaGFzIG5vIHByb21wdC4gR29vZCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNob2ljZS5cblxuTm93LCBsZXQncyByZWZvY3VzLiBNeSBrZXkgc3ltYm9scyBoZXJlIGFyZSBgb3ZzX2N0X2luaXRgIGFuZCBgb3ZzX2luaXRfbmV0YC4gSGFuZyBvbiwgYG92c19pbml0X25ldGAgaXMgYSBuZXRucyBpbml0IGNhbGxiYWNrOyB0aGF0J3MgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgaXMgY3JlYXRlZC4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYG92c19jdF9pbml0YC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYG92c19jdF9pbml0YCBpcyBzdGF0aWMuIE5vcGUsIGl0J3MgYGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpYC4gT2theSwgbmV4dCBJIHNob3VsZCBjaGVjayBgb3ZzX2N0X2xpbWl0X2luaXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjM0Ljg0Nzc5NjY5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxMDQ5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2N0X2xpbWl0X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MTU2OT1zdGF0aWMgdm9pZCBfX292c19jdF9mcmVlX2FjdGlvbihzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICpjdF9pbmZvKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODUtI2lmXFx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MTU4NjpzdGF0aWMgaW50IG92c19jdF9saW1pdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG92c19uZXQgKm92c19uZXQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODcte1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTIwMDA9aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDE1LSNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjIwMTY6XFx0ZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAxNy1cXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IG92c19uZXQtXFx1MDAzZXh0X2xhYmVsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NTozNC44OTI5MDU5NDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5MzQ3MTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgT1ZTIENvbm5lY3Rpb24gVHJhY2tpbmcgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgT3BlbiB2U3dpdGNoIGluaXRpYWxpemVzIGl0cyBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2N0X2xpbWl0X2luaXRgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgc28gdGhhdCdzIHByb2JhYmx5IG5vdCB3aGVyZSB0aGUgYWN0aW9uIGlzLiBJbnN0ZWFkLCBJIG5lZWQgdG8gem9vbSBpbiBvbiBgb3ZzX2N0X2luaXRgIGFuZCBgb3ZzX2luaXRfbmV0YC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBsaWtlbHkgaGFuZGxlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uLlxuXG5MZXQgbWUgcXVpY2tseSB2ZXJpZnkgbXkgaHlwb3RoZXNpcyBhYm91dCBgb3ZzX2luaXRfbmV0YC4gSXMgdGhhdCBvbmUgYWxzbyBzdGF0aWMsIG9yIGRvZXMgaXQgb2ZmZXIgYSBwYXRoIGZvciBleHRlcm5hbCBjb25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGJlZm9yZSBJIGNhbiBkZXRlcm1pbmUgdGhlIHByb3BlciBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjIwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTU6MzcuNzg2MzgxODgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTI2MjY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfaW5pdF9uZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yNjk5PXN0YXRpYyBpbnQgX19pbml0IGRwX3JlZ2lzdGVyX2dlbmwodm9pZClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3MTctXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MjcxODpzdGF0aWMgaW50IF9fbmV0X2luaXQgb3ZzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNzE5LXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI3OTE9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBvdnNfbmV0X29wcyA9IHtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzoyNzkyOlxcdC5pbml0ID0gb3ZzX2luaXRfbmV0LFxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3OTMtXFx0LmV4aXQgPSBvdnNfZXhpdF9uZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjM3LjgzMTY2MjE3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQzOTA5ODg4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBPcGVuIHZTd2l0Y2ggSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2luaXRfbmV0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGxpbWl0cyBpdHMgc2NvcGUuIFdhaXQsIGhvbGQgb24uLi4gYG92c19jdF9pbml0YCBpcyAqbm90KiBzdGF0aWMsIHRoYXQncyB0aGUga2V5IGRpc3RpbmN0aW9uIGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvIHplcm8gaW4gb24/IE5vLCB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGBvdnNfY3RfaW5pdGAuIFRoaXMgbWVhbnMgYG92c19jdF9pbml0YCBpcyB0aGUgc29sZSBub24tc3RhdGljIGZ1bmN0aW9uIGltcGFjdGVkIGJ5IHRoZSBjaGFuZ2VzLiBHb29kLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIGBvdnNfY3RfaW5pdGAgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlPyBUaGUgYW5zd2VyIGlzIHllcywgYWJzb2x1dGVseS4gSSBjYW4gc2VlIGhvdyB5b3UgY291bGQgdHJpZ2dlciBpdCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS4gYHVuc2hhcmUgLW5gIG9yIGV2ZW4gYGNsb25lKENMT05FX05FV05FVClgIHdpbGwgZmlyZSBvZmYgYG92c19pbml0X25ldGAsIGFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgb3ZzX2N0X2luaXRgLiBUaGF0J3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0ZXN0IHBhdGguIEkndmUgZ290IGEgY2xlYXIgd2F5IHRvIHZlcmlmeSB0aGUgY2hhbmdlIG5vdy5cblxuQWxyaWdodCwgbGV0J3MgZ2V0IHRoZSBjb25maWd1cmF0aW9ucyBzdHJhaWdodC4gV2UncmUgbG9va2luZyBhdCBuZWVkaW5nIGBPUEVOVlNXSVRDSGAsIG9mIGNvdXJzZSwgdGhlbiBgTkZfQ09OTlRSQUNLYCBhbmQsIGltcG9ydGFudGx5LCBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAgdG8gZW5hYmxlIGBORVRGSUxURVJfQ09OTkNPVU5UYC5cblxuRmluYWxseSwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjoxNC4yNzA3NjQ5ODVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTQwMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjE1PWNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxBQkVMXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIyODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI5LVxcdHRyaXN0YXRlICdcXFwiY29ubmxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjoxNC4zMjIzMTI4NjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5Mjc3OTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCoqXG5cbk9rYXksIHRpbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCdzIG5ldGZpbHRlciBhcmNoaXRlY3R1cmUsIEkga25vdyB0aGlzIG1hdGNoIGlzIHVzZWQgZm9yIGNvbm5lY3Rpb24gcmF0ZSBsaW1pdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byByZXZpZXcgdGhlIEtjb25maWcgZmlsZSBmb3IgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGFuZCBzZWUgaXRzIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRocm91Z2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgc3lzdGVtLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgZmVhdHVyZXMgaXQgbWlnaHQgY29uZmxpY3Qgd2l0aCwgb3IgcmVseSB1cG9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBjb25uZWN0aW9uIHRyYWNraW5nIHN0YXRlIHNpemUgYW5kIHBlcmZvcm1hbmNlIHdpdGggdmFyaW91cyBjb25maWd1cmF0aW9ucz8gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgcG9zc2libGUgaW1wYWN0cyBvbiB0aGUgdXNlcnNwYWNlIHRvb2xzIHRoYXQgbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGlzIG1vZHVsZSwgc3VjaCBhcyBgaXB0YWJsZXNgIG9yIGBuZnRhYmxlc2AsIGFuZCB3aGV0aGVyIHRoZWlyIGNvZGUgaGFzIHNwZWNpZmljIHJlcXVpcmVtZW50cyBvciBhc3N1bXB0aW9ucyB0aWVkIHRvIHRoaXMgbWF0Y2guIEl0J3MgYWxzbyB3b3J0aCBhIHF1aWNrIHJldmlldyBvZiBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uIHRvIGNoZWNrIHRoZSBkZXRhaWxzIG9mIGltcGxlbWVudGF0aW9uLCBhbmQgd2hhdCBwb3RlbnRpYWwgYnVncyB3ZXJlIGZvdW5kIGluIHByZXZpb3VzIHZlcnNpb25zLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvZGUgcGF0aCBmb3IgdGhpcyBhbmQgcmVsYXRlZCBtb2R1bGVzIGp1c3QgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMyMSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU2OjE4LjExNTA5NjEzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMjgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMjg6XFx0Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcXG4xMjI5OlxcdFxcdHRyaXN0YXRlICdcXFwiY29ubmxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbjEyMzA6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4xMjMxOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuMTIzMjpcXHRcXHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxcbjEyMzM6XFx0XFx0aGVscFxcbjEyMzQ6XFx0XFx0ICBUaGlzIG1hdGNoIGFsbG93cyB5b3UgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsXFxuMTIzNTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIGEgc2VydmVyIHBlciBjbGllbnQgSVAgYWRkcmVzcyAob3IgYWRkcmVzcyBibG9jaykuXFxuMTIzNjpcXHRcXG4xMjM3OlxcdGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTY6MTguMTE1MjUzMDE2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwODQxNjcwOTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgY29uc2lkZXJhdGlvbnMsIGRpc3RpbGxlZCBpbnRvIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogQSBRdWljayBSZXZpZXcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBiZWhhdmlvciBoaW5nZXMgb24gdGhlIHByZXNlbmNlIG9mIGBORl9DT05OVFJBQ0tgIGFuZCBgTkVURklMVEVSX0FEVkFOQ0VEYC4gQ2xlYXJseSwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBlbmFibGVkIGluIG15IGNvbmZpZ3MsIHRoYXQncyBhIGdpdmVuLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGVyZSdzIGFub3RoZXIgZGVwZW5kZW5jeSBJIG5lZWQgdG8gZmFjdG9yIGluISBgTkZUX0NPTk5MSU1JVGAgc2VsZWN0cyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEJlc3QgZG91YmxlLWNoZWNrIHRoZSBgTkZUX0NPTk5MSU1JVGAgY29uZmlndXJhdGlvbiBhbG9uZ3NpZGUgdGhlIG90aGVycyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZydzIHByb3Blcmx5IGVuYWJsZWQgYW5kIGFsaWduZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjI4Ljk1NjkyNzAzMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTc4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUxMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUxMTpcXHRjb25maWcgTkZUX0NPTk5MSU1JVFxcbiA1MTI6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgY29ubmxpbWl0IG1vZHVsZVxcXCJcXG4gNTEzOlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXFxuIDUxNDpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiA1MTU6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcXG4gNTE2OlxcdFxcdGhlbHBcXG4gNTE3OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgXFxcImNvbm5saW1pdFxcXCIgZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gdXNlIHRvXFxuIDUxODpcXHRcXHQgIHJhdGVsaW1pdCBydWxlIG1hdGNoaW5ncyBwZXIgY29ubmVjdGlvbnMuXFxuIDUxOTpcXHRcXG4gNTIwOlxcdGNvbmZpZyBORlRfTE9HXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjI4Ljk1NzA0NjI4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDY4NDc2NjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJIHNlZSB3ZSdyZSBhbHJlYWR5IHNlbGVjdGluZyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEdvb2QsIGEgc29saWQgZm91bmRhdGlvbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsgaW4gYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMsIEknbSBnb2luZyB0byBhZGQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX0FEVkFOQ0VEYCB0byB0aGUgbWl4LiBUaGVzZSBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbGltaXRpbmcgYXNwZWN0cywgYW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiB3aXRoaW4gT3BlbiB2U3dpdGNoLCB0aGV5J3JlIHByb2JhYmx5IGNyaXRpY2FsIHRvIHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgYW5kIHRodXMsIGZ1enppbmcgY2FwYWJpbGl0eS5cblxuVGhlcmVmb3JlLCBteSBmaW5hbCBjb25maWd1cmF0aW9uIGNoZWNrbGlzdCBsb29rcyBsaWtlIHRoaXM6XG5cbiogICBgT1BFTlZTV0lUQ0hgXG4qICAgYE5GX0NPTk5UUkFDS2BcbiogICBgTkVURklMVEVSX0FEVkFOQ0VEYFxuKiAgIGBORlRfQ09OTkxJTUlUYFxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZ29pbmcgdG8gYmUgYG92c19jdF9pbml0YC4gVGhlIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGZhaWx1cmUgc2NlbmFyaW8gd2l0aGluIHRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZW5jb3VudGVycyBhbiBpc3N1ZS4gVGhpcyBjbGVhcmx5IHBvaW50cyB0byBhbiBlcnJvciBwYXRoIHRoYXQgbmVlZHMgdGhvcm91Z2ggZnV6emluZyBhdHRlbnRpb24uIEl0J3MgdHJpZ2dlcmVkIGJ5IHRoZSBjcmVhdGlvbiBvZiBuZXcgbmV0d29yayBuYW1lc3BhY2VzLCB3aGljaCBtZWFucyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCBhbmQgdGh1cywgYSBnb29kIGNhbmRpZGF0ZSBmb3IgdHJpZ2dlcmluZyB0aGUgZXJyb3IuXG5cbkxldCdzIHF1aWNrbHkgc2NhbiB0aGUgT3BlbiB2U3dpdGNoIGNvbmZpZ3VyYXRpb24gdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSB3YW50IHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlIEkgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZCB0byBlZmZlY3RpdmVseSB0YXJnZXQgdGhpcyBtZW1vcnkgbGVhayBkdXJpbmcgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIxMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjM4LjAyNTUyNjk4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9vcGVudnN3aXRjaC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDY6XFx0Y29uZmlnIE9QRU5WU1dJVENIXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgXFxcXFxcbiAgMTA6XFx0XFx0XFx0ICAgKE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiAoKCFORl9ERUZSQUdfSVBWNiB8fCBORl9ERUZSQUdfSVBWNikgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiAgMTE6XFx0XFx0XFx0XFx0XFx0ICAgICAoIU5GX05BVCB8fCBORl9OQVQpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gIDEyOlxcdFxcdFxcdFxcdFxcdCAgICAgKCFORVRGSUxURVJfQ09OTkNPVU5UIHx8IE5FVEZJTFRFUl9DT05OQ09VTlQpKSlcXG4gIDEzOlxcdFxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCAhUFNBTVBMRVxcbiAgMTQ6XFx0XFx0c2VsZWN0IE1QTFNcXG4gIDE1OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICAxNjpcXHRcXHRzZWxlY3QgTkVUX01QTFNfR1NPXFxuICAxNzpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuICAxODpcXHRcXHRzZWxlY3QgTkVUX05TSFxcbiAgMTk6XFx0XFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlMgaWYgTkZfQ09OTlRSQUNLXFxuICAyMDpcXHRcXHRzZWxlY3QgTkZfTkFUX09WUyBpZiBORl9OQVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTc6MzguMDI1NTg2OTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI4Njk4MjMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgdGhpcyBoaW5nZXMgb24gYElORVRgLCBzbyB0aGF0J3MgdGhlIGZpcnN0IHRoaW5nIEknbSBhZGRpbmcuIENvbnNpZGVyaW5nIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIEkgc2VlIGEgbmVlZCBmb3IgYE9QRU5WU1dJVENIYCwgYElORVRgLCBuYXR1cmFsbHksIGFsb25nIHdpdGggYE5GX0NPTk5UUkFDS2AsIGBORVRGSUxURVJfQURWQU5DRURgLCBhbmQgYE5GVF9DT05OTElNSVRgLiBXYWl0IGEgc2Vjb25k4oCmIGlkZWFsbHksIHdl4oCZZCBkaXJlY3RseSB0YXJnZXQgYE5FVEZJTFRFUl9DT05OQ09VTlRgLCBidXQgdGhhdCBvbmUgaXNuJ3QgYSBwcm9tcHRhYmxlIG9wdGlvbi4gTm8gcHJvYmxlbSwgYE5GVF9DT05OTElNSVRgIGVmZmVjdGl2ZWx5IGVuYWJsZXMgaXQsIHNvIEknbGwganVzdCBsaXN0IHRoYXQgdG8ga2VlcCB0aGluZ3MgdGlkeS5cblxuSG1tLCBhbnl0aGluZyBlbHNlIGNyaXRpY2FsPyBSaWdodCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBvdnNfY3RfaW5pdGAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzLCB0aGFua2Z1bGx5LCBub24tc3RhdGljLiBHb29kIG5ld3MuIFRoaXMgZGVmaW5pdGVseSBxdWFsaWZpZXMgYXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZywgc28gSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkuIExldCdzIGdldCB0aGVzZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk4MiwiT3V0cHV0VG9rZW5zIjoxNDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0My4zMTI1NzIxNTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzMwODA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIixcbiAgICBcIklORVRcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORlRfQ09OTkxJTUlUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZzX2N0X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBgb3ZzX2N0X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlIGZvciBPcGVuIHZTd2l0Y2guIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GVF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfY3RfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0My4zOTU4ODg1NDZaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODQ5MjYxNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0My4zOTY1MTQ2ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njk4NDI5NTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgYnkgY2FsbGluZyBgbmZfY29ubmxhYmVsc19wdXRgIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIFRoaXMgaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0b3JzIChrbWVtbGVhaykgYXJlIHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlYmQyZTVkOGI0MTgzOTBmOTQ3M2Y4YTU2MDU2YThiMzI3M2FmMmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MDo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuaW5kZXggOTU2OTdkNGUxNmU2NC4uZmJhYTY3NzE0NDE0MyAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuKysrIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXG5AQCAtMjAwMSw2ICsyMDAxLDkgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4gXHR1bnNpZ25lZCBpbnQgbl9iaXRzID0gc2l6ZW9mKHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscykgKiBCSVRTX1BFUl9CWVRFO1xuIFx0c3RydWN0IG92c19uZXQgKm92c19uZXQgPSBuZXRfZ2VuZXJpYyhuZXQsIG92c19uZXRfaWQpO1xuKyNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbitcdGludCBlcnI7XG4rI2VuZGlmXG4gXG4gXHRpZiAobmZfY29ubmxhYmVsc19nZXQobmV0LCBuX2JpdHMgLSAxKSkge1xuIFx0XHRvdnNfbmV0LVx1MDAzZXh0X2xhYmVsID0gZmFsc2U7XG5AQCAtMjAxMCw3ICsyMDEzLDEwIEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHR9XG4gXG4gI2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxuLVx0cmV0dXJuIG92c19jdF9saW1pdF9pbml0KG5ldCwgb3ZzX25ldCk7XG4rXHRlcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xuK1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgb3ZzX25ldC1cdTAwM2V4dF9sYWJlbClcbitcdFx0bmZfY29ubmxhYmVsc19wdXQobmV0KTtcbitcdHJldHVybiBlcnI7XG4gI2Vsc2VcbiBcdHJldHVybiAwO1xuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTc6NDMuMzk2NTE3Mzk2WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5ODQyNjY5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE9wZW4gdlN3aXRjaCBDb25udHJhY2sgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgb3ZzX2N0X2luaXRgIHdpdGhpbiBgbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jYC4gTXkgaW5pdGlhbCByZWFkIGluZGljYXRlcyBpdCdzIGFkZGluZyBzb21lIG11Y2gtbmVlZGVkIGVycm9yIGhhbmRsaW5nIGFyb3VuZCBgb3ZzX2N0X2xpbWl0X2luaXRgLiBUaGUgbG9naWMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpZiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzIGFuZCB0aGlzIGBvdnNfbmV0LVx1MDAzZXh0X2xhYmVsYCBmbGFnIGlzIHNldCwgdGhlbiB3ZSBjYWxsIGBuZl9jb25ubGFiZWxzX3B1dChuZXQpYC5cblxuSW1tZWRpYXRlbHksIEkgc2VlIHRoaXMgYXMgYSByZXNvdXJjZSBsZWFrIHByZXZlbnRpb24gbWVhc3VyZS4gV2UgYXJlIGNsZWFuaW5nIHVwIHBvdGVudGlhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgb24gYW4gZXJyb3IgcGF0aC4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgZG9lcyBub3Qgc2VlbSB0byBwcmVzZW50IGEgcmlzayBvZiByZWFkaW5nIG9yIHdyaXRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0IGlzIHB1cmVseSBhbiBlcnJvciBwYXRoIGNsZWFudXAuIE5vIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLlxuXG5HaXZlbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEknbSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlc291cmNlIGxlYWsgZml4LiBObyBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW50byBtZW1vcnkgc2FmZXR5IGlzIHJlcXVpcmVkLiBJJ2xsIGZsYWcgdGhpcyBhcyBzdWNoLiBUaGVyZWZvcmUgSSB3aWxsIHNldCBOZWVkc0tNU0FOPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0LCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjUwLjM4MDc4NjUxNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgYnkgY2FsbGluZyBgbmZfY29ubmxhYmVsc19wdXRgIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIFRoaXMgaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0b3JzIChrbWVtbGVhaykgYXJlIHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgb3ZzX2N0X2luaXRgIGJ5IGNhbGxpbmcgYG5mX2Nvbm5sYWJlbHNfcHV0YCBpZiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBUaGlzIGlzIHJlbGF0ZWQgdG8gcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBsZWFrIGRldGVjdG9ycyAoa21lbWxlYWspIGFyZSBzdWZmaWNpZW50IGZvciBjYXRjaGluZyBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-14 13:58:49 +0000 UTC FinishedAt: 2026-08-14 14:57:51 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "INET", "NF_CONNTRACK", "NETFILTER_ADVANCED", "NFT_CONNLIMIT" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "24ef02f934eeb48830cff6b739abc3c62b1d107b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "OPENVSWITCH", "INET", "NF_CONNTRACK", "NETFILTER_ADVANCED", "NFT_CONNLIMIT" ], "series_id": "d8c480e8-da2a-4843-b015-f40fe74ffd3c" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ovs_ct_init" ], "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+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUxPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Nm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O09QRU5WU1dJVENIJiMzNDssCiAgICAmIzM0O0lORVQmIzM0OywKICAgICYjMzQ7TkZfQ09OTlRSQUNLJiMzNDssCiAgICAmIzM0O05FVEZJTFRFUl9BRFZBTkNFRCYjMzQ7LAogICAgJiMzNDtORlRfQ09OTkxJTUlUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7b3ZzX2N0X2luaXQmIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUxPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgY2ViZDJlNWQ4YjQxODM5MGY5NDczZjhhNTYwNTZhOGIzMjczYWYyZlxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUwOjU4IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuaW5kZXggOTU2OTdkNGUxNmU2NC4uZmJhYTY3NzE0NDE0MyAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXG5AQCAtMjAwMSw2ICYjNDM7MjAwMSw5IEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuIFx0dW5zaWduZWQgaW50IG5fYml0cyA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tleV9jdF9sYWJlbHMpICogQklUU19QRVJfQllURTtcbiBcdHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTtcbiYjNDM7I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxuJiM0MztcdGludCBlcnI7XG4mIzQzOyNlbmRpZlxuIFxuIFx0aWYgKG5mX2Nvbm5sYWJlbHNfZ2V0KG5ldCwgbl9iaXRzIC0gMSkpIHtcbiBcdFx0b3ZzX25ldC1cdTAwM2V4dF9sYWJlbCA9IGZhbHNlO1xuQEAgLTIwMTAsNyAmIzQzOzIwMTMsMTAgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbiBcdH1cbiBcbiAjaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG4tXHRyZXR1cm4gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcbiYjNDM7XHRlcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xuJiM0MztcdGlmIChlcnIgXHUwMDI2XHUwMDI2IG92c19uZXQtXHUwMDNleHRfbGFiZWwpXG4mIzQzO1x0XHRuZl9jb25ubGFiZWxzX3B1dChuZXQpO1xuJiM0MztcdHJldHVybiBlcnI7XG4gI2Vsc2VcbiBcdHJldHVybiAwO1xuICNlbmRpZlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjUxPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjZtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtPUEVOVlNXSVRDSCYjMzQ7LAogICAgJiMzNDtJTkVUJiMzNDssCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORVRGSUxURVJfQURWQU5DRUQmIzM0OywKICAgICYjMzQ7TkZUX0NPTk5MSU1JVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O292c19jdF9pbml0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgY2ViZDJlNWQ4YjQxODM5MGY5NDczZjhhNTYwNTZhOGIzMjczYWYyZgpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUwOjU4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jCmluZGV4IDk1Njk3ZDRlMTZlNjQuLmZiYWE2NzcxNDQxNDMgMTAwNjQ0Ci0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMKQEAgLTIwMDEsNiAmIzQzOzIwMDEsOSBAQCBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KQogewogCXVuc2lnbmVkIGludCBuX2JpdHMgPSBzaXplb2Yoc3RydWN0IG92c19rZXlfY3RfbGFiZWxzKSAqIEJJVFNfUEVSX0JZVEU7CiAJc3RydWN0IG92c19uZXQgKm92c19uZXQgPSBuZXRfZ2VuZXJpYyhuZXQsIG92c19uZXRfaWQpOwomIzQzOyNpZglJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKQomIzQzOwlpbnQgZXJyOwomIzQzOyNlbmRpZgogCiAJaWYgKG5mX2Nvbm5sYWJlbHNfZ2V0KG5ldCwgbl9iaXRzIC0gMSkpIHsKIAkJb3ZzX25ldC0mZ3Q7eHRfbGFiZWwgPSBmYWxzZTsKQEAgLTIwMTAsNyAmIzQzOzIwMTMsMTAgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIAl9CiAKICNpZglJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKQotCXJldHVybiBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpOwomIzQzOwllcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpOwomIzQzOwlpZiAoZXJyICZhbXA7JmFtcDsgb3ZzX25ldC0mZ3Q7eHRfbGFiZWwpCiYjNDM7CQluZl9jb25ubGFiZWxzX3B1dChuZXQpOwomIzQzOwlyZXR1cm4gZXJyOwogI2Vsc2UKIAlyZXR1cm4gMDsKICNlbmRpZgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMTU5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgT3BlbiB2U3dpdGNoIENvbm50cmFjayBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQmIzM5O3MgdG91Y2hpbmcgYG5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY2AuIFNlZW1zIGxpa2UgYSBzdHJhaWdodGZvcndhcmQgZml4LCBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsgb2YgYG5mX2Nvbm5sYWJlbHNgIHdpdGhpbiBgb3ZzX2N0X2luaXRgLiBUaGlzIGlzIGEgcHJldHR5IGNyaXRpY2FsIGFyZWEsIGFzIGBvdnNfY3RfaW5pdGAgZ2V0cyBjYWxsZWQgZHVyaW5nIHRoZSBPcGVuIHZTd2l0Y2ggaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UuIEFueSBsZWFrcyB0aGVyZSBjb3VsZCBiZSBwcm9ibGVtYXRpYywgZXNwZWNpYWxseSBhdCBzY2FsZS4KCk15IGluaXRpYWwgdGhvdWdodCBpcyB0byBkaXZlIHN0cmFpZ2h0IGludG8gYG92c19jdF9pbml0YCBhbmQgYG92c19jdF9saW1pdF9pbml0YCDigJMgdGhvc2UgYXJlIHRoZSBrZXkgZnVuY3Rpb25zIHRvIHVuZGVyc3RhbmQgdGhlIGJ1Zy4gRnJvbSB0aGUgZGVzY3JpcHRpb24sIHRoZSBwYXRjaCBhcHBlYXJzIHRvIGFkZCBhIGBuZl9jb25ubGFiZWxzX3B1dChuZXQpYCBjYWxsIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMgYW5kIGEgY29uZGl0aW9uIGlzIG1ldCDigJMgc3BlY2lmaWNhbGx5LCBpZiBgb3ZzX25ldC0mZ3Q7eHRfbGFiZWxgIGlzIHRydWUuIFRoYXQgaW5kaWNhdGVzIGEgY29uZGl0aW9uYWwgY2xlYW51cCwgd2hpY2ggaXMgZ29vZC4gV2UgZGVmaW5pdGVseSB3YW50IHRvIGVuc3VyZSB0aGVzZSBsYWJlbHMgYXJlIHJlbGVhc2VkIGNvcnJlY3RseSBpbiBlcnJvciBwYXRocy4KCkJlZm9yZSBJIGdvIGZ1cnRoZXIsIGxldCYjMzk7cyBqdXN0IGRvIGEgcXVpY2sgYGdyZXBgIGZvciBgb3ZzX2N0X2luaXRgIHdpdGhpbiB0aGUgcmVsZXZhbnQgY29kZWJhc2UgdG8gZ2V0IHRoZSBicm9hZGVyIGNvbnRleHQuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYW5kIGhvdyBmcmVxdWVudGx5IHdpbGwgaGVscCBtZSBhc3Nlc3MgdGhlIGltcGFjdCBhbmQgcG90ZW50aWFsIHNldmVyaXR5IG9mIHRoZSBvcmlnaW5hbCBsZWFrLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGFuZCBjb25maXJtIHRoYXQgdGhlIGZpeCBwcm9wZXJseSBhZGRyZXNzZXMgYWxsIHBvdGVudGlhbCBzY2VuYXJpb3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2N0X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0zNjQ9c3RhdGljIHN0cnVjdCBuZl9jb25uX2xhYmVscyAqb3ZzX2N0X2dldF9jb25uX2xhYmVscyhzdHJ1Y3QgbmZfY29ubiAqY3QpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTM4MC0gKi9cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzozODE6c3RhdGljIGludCBvdnNfY3RfaW5pdF9sYWJlbHMoc3RydWN0IG5mX2Nvbm4gKmN0LCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0zODItXHRcdFx0ICAgICAgY29uc3Qgc3RydWN0IG92c19rZXlfY3RfbGFiZWxzICpsYWJlbHMsXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTk1Nz1zdGF0aWMgaW50IG92c19jdF9jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMTAxMi1cdGlmICghbmZfY3RfaXNfY29uZmlybWVkKGN0KSkge1xubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjEwMTM6XHRcdGVyciA9IG92c19jdF9pbml0X2xhYmVscyhjdCwga2V5LCBcdTAwMjZpbmZvLVx1MDAzZWxhYmVscy52YWx1ZSxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0xMDE0LVx0XHRcdFx0XHQgXHUwMDI2aW5mby1cdTAwM2VsYWJlbHMubWFzayk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTE5ODM9c3RydWN0IGdlbmxfZmFtaWx5IGRwX2N0X2xpbWl0X2dlbmxfZmFtaWx5IF9fcm9fYWZ0ZXJfaW5pdCA9IHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMTk5OS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzoyMDAwOmludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAwMS17XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oPTEzPWVudW0gb3ZzX2tleV9hdHRyO1xuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaC0xNS0jaWYgSVNfRU5BQkxFRChDT05GSUdfTkZfQ09OTlRSQUNLKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oOjE2OmludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICopO1xubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTE3LXZvaWQgb3ZzX2N0X2V4aXQoc3RydWN0IG5ldCAqKTtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg9MzI9dm9pZCBvdnNfY3RfZnJlZV9hY3Rpb24oY29uc3Qgc3RydWN0IG5sYXR0ciAqYSk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTQwLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oOjQxOnN0YXRpYyBpbmxpbmUgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldCkgeyByZXR1cm4gMDsgfVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTQyLVxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI3MTg9c3RhdGljIGludCBfX25ldF9pbml0IG92c19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjcyNi1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI3Mjc6XHRlcnIgPSBvdnNfY3RfaW5pdChuZXQpO1xubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjcyOC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzM4OAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBUaGlzIE9wZW4gdlN3aXRjaCBLZXJuZWwgQ2hhbmdlKioKCk9rYXksIHNvIGBvdnNfY3RfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG92c19pbml0X25ldGAsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0JiMzOTtzIHRoZSBPcGVuIHZTd2l0Y2ggbmV0bnMgaW5pdGlhbGl6YXRpb24gY2FsbGJhY2suIFRoaXMgc2VlbXMgbGlrZSBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgaW4gaG93IE9wZW4gdlN3aXRjaCBoYW5kbGVzIGVycm9ycyBkdXJpbmcgdGhlIG5ldG5zIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuIENydWNpYWxseSwgaXQmIzM5O3MgZml4aW5nIGEgbWVtb3J5IGxlYWssIHdoaWNoIGlzIGFsd2F5cyB3b3J0aCBhZGRyZXNzaW5nLgoKR2l2ZW4gdGhhdCBpdCYjMzk7cyBhIGZ1bmN0aW9uYWwgY2hhbmdlICp3aXRoaW4gdGhlIGtlcm5lbCosIGZ1enppbmcgaXMgYWJzb2x1dGVseSB3YXJyYW50ZWQgaGVyZS4gV2UgbmVlZCB0byBiZSB0aG9yb3VnaC4gVGhlIGtleSBzeW1ib2xzIHRvIGtlZXAgaW4gbWluZCBmb3Igb3VyIGZ1enppbmcgc3RyYXRlZ3kgYXJlIGBvdnNfY3RfaW5pdGAgYW5kIGBvdnNfaW5pdF9uZXRgLgoKQmVmb3JlIHdlIGdvIHRvbyBkZWVwLCBsZXQmIzM5O3MgbWFrZSBzdXJlIHRoYXQgYE9QRU5WU1dJVENIYCBhbmQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGFyZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBJJiMzOTtsbCBjaGVjayBLY29uZmlnIGZvciB0aG9zZSBmaXJzdC4gQW5kLCBvZiBjb3Vyc2UsIHRoZSBnZW5lcmFsIGNvbm5lY3Rpb24gdHJhY2tpbmcgY29uZmlnLCBgTkZfQ09OTlRSQUNLYCBzaG91bGQgYmUgZW5hYmxlZCwgYXMgd2VsbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgT1BFTlZTV0lUQ0gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnLTUtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OmNvbmZpZyBPUEVOVlNXSVRDSFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaFwmIzM0O1xuLS1cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTQzLVxubmV0L29wZW52c3dpdGNoL0tjb25maWc6NDQ6Y29uZmlnIE9QRU5WU1dJVENIX0dSRVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDUtXHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2ggR1JFIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNTYtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo1Nzpjb25maWcgT1BFTlZTV0lUQ0hfVlhMQU5cbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTU4LVx0dHJpc3RhdGUgXCYjMzQ7T3BlbiB2U3dpdGNoIFZYTEFOIHR1bm5lbGluZyBzdXBwb3J0XCYjMzQ7XG4tLVxubmV0L29wZW52c3dpdGNoL0tjb25maWctNjgtXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo2OTpjb25maWcgT1BFTlZTV0lUQ0hfR0VORVZFXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03MC1cdHRyaXN0YXRlIFwmIzM0O09wZW4gdlN3aXRjaCBHZW5ldmUgdHVubmVsaW5nIHN1cHBvcnRcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1MjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIxCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQ2hlY2tpbmcgYE5FVEZJTFRFUl9DT05OQ09VTlRgKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIHJpZ2h0IGluLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBwb3BzIGludG8gbXkgaGVhZCBpcyB0byBjaGVjayB0aGUgc3RhdHVzIG9mIGBORVRGSUxURVJfQ09OTkNPVU5UYC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNvbm5lY3Rpb24gdHJhY2tpbmcgY2FwYWJpbGl0aWVzIHdpdGhpbiBOZXRmaWx0ZXIuIFRoaXMgaXMgY3J1Y2lhbCBmb3IgcGVyZm9ybWFuY2UgbW9uaXRvcmluZyBhbmQgdHJvdWJsZXNob290aW5nIG5ldHdvcmsgYm90dGxlbmVja3MsIHBhcnRpY3VsYXJseSBpbiBzY2VuYXJpb3Mgd2l0aCBoaWdoIGNvbm5lY3Rpb24gcmF0ZXMgb3IgcG90ZW50aWFsIERvUyBhdHRhY2tzLiBJIHdhbnQgdG8gc2VlIGhvdyB0aGlzIG1vZHVsZSBpcyBiZWhhdmluZywgd2hldGhlciBpdCYjMzk7cyBlbmFibGVkLCBhbmQgaWYgYW55IGNvbmZpZ3VyYWJsZSBwYXJhbWV0ZXJzIGFyZSBiZWluZyB1c2VkLiBBcmUgY29ubmVjdGlvbiB0cmFja2luZyBsaW1pdHMgY29uZmlndXJlZD8gV2hhdCBhYm91dCB0aGUgY29ubnRyYWNrIGhhc2ggc2l6ZT8gVW5kZXJzdGFuZGluZyB0aGlzIGJhc2VsaW5lIGlzIGZ1bmRhbWVudGFsIGJlZm9yZSBJIGRpZyBhbnkgZGVlcGVyLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIHBvaW50IG9mIHJlZmVyZW5jZSBpZiBJIG5lZWQgdG8gZGlhZ25vc2UgYW4gaXNzdWUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTI8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTEwPWlmIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnOjExMTpjb25maWcgTkVURklMVEVSX0NPTk5DT1VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMi1cdHRyaXN0YXRlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTI8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjNtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDI5NAoJCQkJCQkJb3V0cHV0OiAyOAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgS2VybmVsIENvbmZpZ3VyYXRpb24qKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWdzOiBgT1BFTlZTV0lUQ0hgLCBgTkVURklMVEVSX0NPTk5DT1VOVGAsIGFuZCBgTkZfQ09OTlRSQUNLYC4gSG1tLCBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXMgYSB0cmlzdGF0ZSBjb25maWcsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgdGhlcmUmIzM5O3Mgbm8gZGlyZWN0IHByb21wdCBmb3IgaXQuIFRoYXQgbWVhbnMgaXQmIzM5O3MgYmVpbmcgKnNlbGVjdGVkKiBieSBhbm90aGVyIGNvbmZpZy4gUmlnaHQsIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgcHVsbGluZyBpdCBpbi4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZS4gTGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIHNlbGVjdGluZyBpdC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTUxMT1jb25maWcgTkZUX0NPTk5MSU1JVFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MTQtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUxNTpcdHNlbGVjdCBORVRGSUxURVJfQ09OTkNPVU5UXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE2LVx0aGVscFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjI4PWNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzEtXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzI6XHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxubmV0L25ldGZpbHRlci9LY29uZmlnLTEyMzMtXHRoZWxwXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ2ODQKCQkJCQkJCW91dHB1dDogMzEKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIG15IG93bjoKCioqSW52ZXN0aWdhdGluZyBPcGVuIHZTd2l0Y2ggQ29ubmVjdGlvbiBUcmFja2luZyoqCgpSaWdodCwgc28gSSB3YXMgaW5pdGlhbGx5IHRoaW5raW5nIGFib3V0IGNvbm5lY3Rpb24gZmx1c2hpbmcgaW4gT3BlbiB2U3dpdGNoIGFuZCBpbW1lZGlhdGVseSBqdW1wZWQgdG8gYE9QRU5WU1dJVENIX0NPTk5GTFVTSGAuIEJ1dCB0aGF0IGRvZXNuJiMzOTt0IHNvdW5kIHF1aXRlIHJpZ2h0Li4uIGlzbiYjMzk7dCB0aGF0IGhhbmRsZWQgYnkgYSBkaWZmZXJlbnQgbWVjaGFuaXNtPyBBaCwgeWVzLCBJIHNlZW0gdG8gcmVjYWxsIE9wZW4gdlN3aXRjaCBsZXZlcmFnaW5nIHRoZSBgSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClgIHNldHRpbmcuIFRoYXQgcmluZ3MgYSBiZWxsLgoKSG1tLCBidXQgdGhhdCBicmluZ3MgdXAgYSBxdWVzdGlvbi4gRG9lcyBPcGVuIHZTd2l0Y2ggYWN0dWFsbHkgKnNlbGVjdCogYE5FVEZJTFRFUl9DT05OQ09VTlRgPyBJIHNob3VsZCBwcm9iYWJseSB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBCZXN0IHRvIGdvIHN0cmFpZ2h0IHRvIHRoZSBzb3VyY2UuIFRpbWUgdG8gZGlnIGludG8gdGhlIGBuZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZ2AgZmlsZSBhbmQgY29uZmlybSBob3cgT3BlbiB2U3dpdGNoIGhhbmRsZXMgdGhpcyBkZXBlbmRlbmN5LiBHb3R0YSBiZSBwcmVjaXNlIGFib3V0IHRoZXNlIHRoaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TkVURklMVEVSX0NPTk5DT1VOVCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL0tjb25maWc9Nj1jb25maWcgT1BFTlZTV0lUQ0hcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy0xMS1cdFx0XHRcdCAgICAgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgXFxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnOjEyOlx0XHRcdFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxubmV0L29wZW52c3dpdGNoL0tjb25maWctMTMtXHRkZXBlbmRzIG9uIFBTQU1QTEUgfHwgIVBTQU1QTEVcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9NjE9c3RydWN0IG92c19jb25udHJhY2tfaW5mbyB7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTc5LVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjgwOiNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04MS0jZGVmaW5lIE9WU19DVF9MSU1JVF9VTkxJTUlURURcdDBcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9ODYwPXN0YXRpYyBib29sIGxhYmVsc19ub256ZXJvKGNvbnN0IHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscyAqbGFiZWxzKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04NzAtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6ODcxOiNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04NzItc3RhdGljIHN0cnVjdCBobGlzdF9oZWFkICpjdF9saW1pdF9oYXNoX2J1Y2tldChcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9OTU3PXN0YXRpYyBpbnQgb3ZzX2N0X2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzMtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6OTc0OiNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzUtXHRpZiAoc3RhdGljX2JyYW5jaF91bmxpa2VseShcdTAwMjZvdnNfY3RfbGltaXRfZW5hYmxlZCkpIHtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MTU2OT1zdGF0aWMgdm9pZCBfX292c19jdF9mcmVlX2FjdGlvbihzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICpjdF9pbmZvKVxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0xNTg0LVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjE1ODU6I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODYtc3RhdGljIGludCBvdnNfY3RfbGltaXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0KVxuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0yMDAwPWludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMDMtXHRzdHJ1Y3Qgb3ZzX25ldCAqb3ZzX25ldCA9IG5ldF9nZW5lcmljKG5ldCwgb3ZzX25ldF9pZCk7XG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAwNDojaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAwNS1cdGludCBlcnI7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMTQtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAxNTojaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAxNi1cdGVyciA9IG92c19jdF9saW1pdF9pbml0KG5ldCwgb3ZzX25ldCk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTIwMjU9dm9pZCBvdnNfY3RfZXhpdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMjgtXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAyOTojaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAzMC1cdG92c19jdF9saW1pdF9leGl0KG5ldCwgb3ZzX25ldCk7XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oPTk4PXN0YXRpYyBpbmxpbmUgdm9pZCBvdnNfY3RfZnJlZV9hY3Rpb24oY29uc3Qgc3RydWN0IG5sYXR0ciAqYSkgeyB9XG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTEwMi1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaDoxMDM6I2lmIElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmgtMTA0LWV4dGVybiBzdHJ1Y3QgZ2VubF9mYW1pbHkgZHBfY3RfbGltaXRfZ2VubF9mYW1pbHk7XG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjY4MD1zdGF0aWMgc3RydWN0IGdlbmxfZmFtaWx5ICogY29uc3QgZHBfZ2VubF9mYW1pbGllc1tdID0ge1xuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI2ODUtXHRcdTAwMjZkcF9tZXRlcl9nZW5sX2ZhbWlseSxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI2ODY6I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjY4Ny1cdFx1MDAyNmRwX2N0X2xpbWl0X2dlbmxfZmFtaWx5LFxuLS1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTE3MD1zdHJ1Y3Qgb3ZzX25ldCB7XG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMTczLVx0c3RydWN0IGRlbGF5ZWRfd29yayBtYXNrc19yZWJhbGFuY2U7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaDoxNzQ6I2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMTc1LVx0c3RydWN0IG92c19jdF9saW1pdF9pbmZvICpjdF9saW1pdF9pbmZvO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MjcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgUmVhc29uaW5nKioKCk9rYXksIHNvIEkgbmVlZCBgTkVURklMVEVSX0NPTk5DT1VOVGAgZm9yIHRoaXMgc3BlY2lmaWMgY29kZSBwYXRoLiBSaWdodCwgbWFrZXMgc2Vuc2UuIExldCBtZSBhZGQgYE9QRU5WU1dJVENIYCwgYE5GX0NPTk5UUkFDS2AsIGFuZCBgTkVURklMVEVSX0NPTk5DT1VOVGAgdG8gbXkgY29uZmlndXJhdGlvbi4gSG9sZCBvbiwgd2hhdCYjMzk7cyB0aGlzPyBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXNuJiMzOTt0IGRpcmVjdGx5IHNlbGVjdGFibGUg4oCTIGl0JiMzOTtzIHRyaXN0YXRlIGFuZCBsYWNrcyBhIHByb21wdC4gT2theSwgc28gSSBuZWVkIHRvIGZpbmQgYSB3YXkgdG8gKmVuYWJsZSogaXQgaW5kaXJlY3RseS4gQWgsIHJpZ2h0ISBJIGNhbiBzZWxlY3QgZWl0aGVyIGBORlRfQ09OTkxJTUlUYCBvciBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAuIExldCYjMzk7cyBnbyB3aXRoIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgYWRkIHRoYXQgdG8gdGhlIEVuYWJsZUNvbmZpZ3MuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgbGV0JiMzOTtzIGRvdWJsZS1jaGVjayBhZ2FpbiB0aGF0IEkgY2FuJiMzOTt0IGVuYWJsZSBgTkVURklMVEVSX0NPTk5DT1VOVGAgZGlyZWN0bHkuIFllcCwgaXQgaGFzIG5vIHByb21wdC4gR29vZCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNob2ljZS4KCk5vdywgbGV0JiMzOTtzIHJlZm9jdXMuIE15IGtleSBzeW1ib2xzIGhlcmUgYXJlIGBvdnNfY3RfaW5pdGAgYW5kIGBvdnNfaW5pdF9uZXRgLiBIYW5nIG9uLCBgb3ZzX2luaXRfbmV0YCBpcyBhIG5ldG5zIGluaXQgY2FsbGJhY2s7IHRoYXQmIzM5O3MgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgaXMgY3JlYXRlZC4gVGhhdCYjMzk7cyBhIGdvb2QgcGxhY2UgdG8gc3RhcnQgZnV6emluZywgc3BlY2lmaWNhbGx5IGZvY3VzaW5nIG9uIGBvdnNfY3RfaW5pdGAuCgpMZXQmIzM5O3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYG92c19jdF9pbml0YCBpcyBzdGF0aWMuIE5vcGUsIGl0JiMzOTtzIGBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KWAuIE9rYXksIG5leHQgSSBzaG91bGQgY2hlY2sgYG92c19jdF9saW1pdF9pbml0YC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7b3ZzX2N0X2xpbWl0X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvb3BlbnZzd2l0Y2gvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0xNTY5PXN0YXRpYyB2b2lkIF9fb3ZzX2N0X2ZyZWVfYWN0aW9uKHN0cnVjdCBvdnNfY29ubnRyYWNrX2luZm8gKmN0X2luZm8pXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODUtI2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjE1ODY6c3RhdGljIGludCBvdnNfY3RfbGltaXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0KVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODcte1xuLS1cbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYz0yMDAwPWludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4tLVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMTUtI2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjIwMTY6XHRlcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMTctXHRpZiAoZXJyIFx1MDAyNlx1MDAyNiBvdnNfbmV0LVx1MDAzZXh0X2xhYmVsKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3MjIwCgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW5pdGlhbCBBc3Nlc3NtZW50IG9mIE9WUyBDb25uZWN0aW9uIFRyYWNraW5nIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgT3BlbiB2U3dpdGNoIGluaXRpYWxpemVzIGl0cyBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2N0X2xpbWl0X2luaXRgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgc28gdGhhdCYjMzk7cyBwcm9iYWJseSBub3Qgd2hlcmUgdGhlIGFjdGlvbiBpcy4gSW5zdGVhZCwgSSBuZWVkIHRvIHpvb20gaW4gb24gYG92c19jdF9pbml0YCBhbmQgYG92c19pbml0X25ldGAuIFRoZXNlIGFyZSB0aGUgZnVuY3Rpb25zIHRoYXQgbGlrZWx5IGhhbmRsZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbi4KCkxldCBtZSBxdWlja2x5IHZlcmlmeSBteSBoeXBvdGhlc2lzIGFib3V0IGBvdnNfaW5pdF9uZXRgLiBJcyB0aGF0IG9uZSBhbHNvIHN0YXRpYywgb3IgZG9lcyBpdCBvZmZlciBhIHBhdGggZm9yIGV4dGVybmFsIGNvbmZpZ3VyYXRpb24gb3IgZXh0ZW5zaW9uPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYmVmb3JlIEkgY2FuIGRldGVybWluZSB0aGUgcHJvcGVyIHBhdGguCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O292c19pbml0X25ldCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjY5OT1zdGF0aWMgaW50IF9faW5pdCBkcF9yZWdpc3Rlcl9nZW5sKHZvaWQpXG4tLVxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmMtMjcxNy1cbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI3MTg6c3RhdGljIGludCBfX25ldF9pbml0IG92c19pbml0X25ldChzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNzE5LXtcbi0tXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yNzkxPXN0YXRpYyBzdHJ1Y3QgcGVybmV0X29wZXJhdGlvbnMgb3ZzX25ldF9vcHMgPSB7XG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzoyNzkyOlx0LmluaXQgPSBvdnNfaW5pdF9uZXQsXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNzkzLVx0LmV4aXQgPSBvdnNfZXhpdF9uZXQsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc2NTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAyMDcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgT3BlbiB2U3dpdGNoIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2luaXRfbmV0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGxpbWl0cyBpdHMgc2NvcGUuIFdhaXQsIGhvbGQgb24uLi4gYG92c19jdF9pbml0YCBpcyAqbm90KiBzdGF0aWMsIHRoYXQmIzM5O3MgdGhlIGtleSBkaXN0aW5jdGlvbiBoZXJlLiBBcmUgdGhlcmUgYW55IG90aGVyIGZ1bmN0aW9ucyB0byB6ZXJvIGluIG9uPyBObywgdGhlIHBhdGNoIG9ubHkgdG91Y2hlcyBgb3ZzX2N0X2luaXRgLiBUaGlzIG1lYW5zIGBvdnNfY3RfaW5pdGAgaXMgdGhlIHNvbGUgbm9uLXN0YXRpYyBmdW5jdGlvbiBpbXBhY3RlZCBieSB0aGUgY2hhbmdlcy4gR29vZC4KCk5vdywgdGhlIGltcG9ydGFudCBxdWVzdGlvbjogaXMgYG92c19jdF9pbml0YCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2U/IFRoZSBhbnN3ZXIgaXMgeWVzLCBhYnNvbHV0ZWx5LiBJIGNhbiBzZWUgaG93IHlvdSBjb3VsZCB0cmlnZ2VyIGl0IGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLiBgdW5zaGFyZSAtbmAgb3IgZXZlbiBgY2xvbmUoQ0xPTkVfTkVXTkVUKWAgd2lsbCBmaXJlIG9mZiBgb3ZzX2luaXRfbmV0YCwgYW5kIHRoYXQsIGluIHR1cm4sIGNhbGxzIGBvdnNfY3RfaW5pdGAuIFRoYXQmIzM5O3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0ZXN0IHBhdGguIEkmIzM5O3ZlIGdvdCBhIGNsZWFyIHdheSB0byB2ZXJpZnkgdGhlIGNoYW5nZSBub3cuCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IHRoZSBjb25maWd1cmF0aW9ucyBzdHJhaWdodC4gV2UmIzM5O3JlIGxvb2tpbmcgYXQgbmVlZGluZyBgT1BFTlZTV0lUQ0hgLCBvZiBjb3Vyc2UsIHRoZW4gYE5GX0NPTk5UUkFDS2AgYW5kLCBpbXBvcnRhbnRseSwgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIHRvIGVuYWJsZSBgTkVURklMVEVSX0NPTk5DT1VOVGAuCgpGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWc9MTIxNT1jb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MQUJFTFxuLS1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI3LVxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMjg6Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI5LVx0dHJpc3RhdGUgJiMzOTtcJiMzNDtjb25ubGltaXRcJiMzNDsgbWF0Y2ggc3VwcG9ydCYjMzk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDgzMjEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRlcGVuZGVuY3kgRGVlcCBEaXZlOiBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUKioKCk9rYXksIHRpbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCYjMzk7cyBuZXRmaWx0ZXIgYXJjaGl0ZWN0dXJlLCBJIGtub3cgdGhpcyBtYXRjaCBpcyB1c2VkIGZvciBjb25uZWN0aW9uIHJhdGUgbGltaXRpbmcuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gcmV2aWV3IHRoZSBLY29uZmlnIGZpbGUgZm9yIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgc2VlIGl0cyBkaXJlY3QgZGVwZW5kZW5jaWVzLCBhbmQgYW55IGluZGlyZWN0IGRlcGVuZGVuY2llcyB0aHJvdWdoIG90aGVyIG1vZHVsZXMgb3IgZmVhdHVyZXMuIEkmIzM5O2xsIG5lZWQgdG8gdGhpbmsgYWJvdXQgaG93IHRoaXMgYWZmZWN0cyB0aGUgb3ZlcmFsbCBzeXN0ZW0uIEFyZSB0aGVyZSBhbnkgb3RoZXIgY29ubmVjdGlvbiB0cmFja2luZyBmZWF0dXJlcyBpdCBtaWdodCBjb25mbGljdCB3aXRoLCBvciByZWx5IHVwb24/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgZm9yIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUgc2l6ZSBhbmQgcGVyZm9ybWFuY2Ugd2l0aCB2YXJpb3VzIGNvbmZpZ3VyYXRpb25zPyBJIGFsc28gbmVlZCB0byBjb25zaWRlciBwb3NzaWJsZSBpbXBhY3RzIG9uIHRoZSB1c2Vyc3BhY2UgdG9vbHMgdGhhdCBtaWdodCBpbnRlcmFjdCB3aXRoIHRoaXMgbW9kdWxlLCBzdWNoIGFzIGBpcHRhYmxlc2Agb3IgYG5mdGFibGVzYCwgYW5kIHdoZXRoZXIgdGhlaXIgY29kZSBoYXMgc3BlY2lmaWMgcmVxdWlyZW1lbnRzIG9yIGFzc3VtcHRpb25zIHRpZWQgdG8gdGhpcyBtYXRjaC4gSXQmIzM5O3MgYWxzbyB3b3J0aCBhIHF1aWNrIHJldmlldyBvZiBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uIHRvIGNoZWNrIHRoZSBkZXRhaWxzIG9mIGltcGxlbWVudGF0aW9uLCBhbmQgd2hhdCBwb3RlbnRpYWwgYnVncyB3ZXJlIGZvdW5kIGluIHByZXZpb3VzIHZlcnNpb25zLiBGaW5hbGx5LCBJJiMzOTtsbCBuZWVkIHRvIHRyYWNlIHRoZSBjb2RlIHBhdGggZm9yIHRoaXMgYW5kIHJlbGF0ZWQgbW9kdWxlcyBqdXN0IHRvIG1ha2Ugc3VyZSBJJiMzOTttIG5vdCBtaXNzaW5nIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEyMjgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MTIyODpcdGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXG4xMjI5Olx0XHR0cmlzdGF0ZSAmIzM5O1wmIzM0O2Nvbm5saW1pdFwmIzM0OyBtYXRjaCBzdXBwb3J0JiMzOTtcbjEyMzA6XHRcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXG4xMjMxOlx0XHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxuMTIzMjpcdFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcbjEyMzM6XHRcdGhlbHBcbjEyMzQ6XHRcdCAgVGhpcyBtYXRjaCBhbGxvd3MgeW91IHRvIG1hdGNoIGFnYWluc3QgdGhlIG51bWJlciBvZiBwYXJhbGxlbFxuMTIzNTpcdFx0ICBjb25uZWN0aW9ucyB0byBhIHNlcnZlciBwZXIgY2xpZW50IElQIGFkZHJlc3MgKG9yIGFkZHJlc3MgYmxvY2spLlxuMTIzNjpcdFxuMTIzNzpcdGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUktcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODgxMgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29uZmlnIGNvbnNpZGVyYXRpb25zLCBkaXN0aWxsZWQgaW50byBteSBpbnRlcm5hbCB0aG91Z2h0IHByb2Nlc3M6CgoqKkNvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzOiBBIFF1aWNrIFJldmlldyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLCB0aGUgYmVoYXZpb3IgaGluZ2VzIG9uIHRoZSBwcmVzZW5jZSBvZiBgTkZfQ09OTlRSQUNLYCBhbmQgYE5FVEZJTFRFUl9BRFZBTkNFRGAuIENsZWFybHksIEkmIzM5O2xsIG5lZWQgdG8gbWFrZSBzdXJlIGBORVRGSUxURVJfQURWQU5DRURgIGlzIGVuYWJsZWQgaW4gbXkgY29uZmlncywgdGhhdCYjMzk7cyBhIGdpdmVuLgoKV2FpdCBhIHNlY29uZCwgdGhlcmUmIzM5O3MgYW5vdGhlciBkZXBlbmRlbmN5IEkgbmVlZCB0byBmYWN0b3IgaW4hIGBORlRfQ09OTkxJTUlUYCBzZWxlY3RzIGBORVRGSUxURVJfQ09OTkNPVU5UYC4gQmVzdCBkb3VibGUtY2hlY2sgdGhlIGBORlRfQ09OTkxJTUlUYCBjb25maWd1cmF0aW9uIGFsb25nc2lkZSB0aGUgb3RoZXJzIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJiMzOTtzIHByb3Blcmx5IGVuYWJsZWQgYW5kIGFsaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNTExLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1MTE6XHRjb25maWcgTkZUX0NPTk5MSU1JVFxuIDUxMjpcdFx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIG5mX3RhYmxlcyBjb25ubGltaXQgbW9kdWxlXCYjMzQ7XG4gNTEzOlx0XHRkZXBlbmRzIG9uIE5GX0NPTk5UUkFDS1xuIDUxNDpcdFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcbiA1MTU6XHRcdHNlbGVjdCBORVRGSUxURVJfQ09OTkNPVU5UXG4gNTE2Olx0XHRoZWxwXG4gNTE3Olx0XHQgIFRoaXMgb3B0aW9uIGFkZHMgdGhlIFwmIzM0O2Nvbm5saW1pdFwmIzM0OyBleHByZXNzaW9uIHRoYXQgeW91IGNhbiB1c2UgdG9cbiA1MTg6XHRcdCAgcmF0ZWxpbWl0IHJ1bGUgbWF0Y2hpbmdzIHBlciBjb25uZWN0aW9ucy5cbiA1MTk6XHRcbiA1MjA6XHRjb25maWcgTkZUX0xPR1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5MjEwCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKgoKT2theSwgc28gSSBzZWUgd2UmIzM5O3JlIGFscmVhZHkgc2VsZWN0aW5nIGBORVRGSUxURVJfQ09OTkNPVU5UYC4gR29vZCwgYSBzb2xpZCBmb3VuZGF0aW9uLiBHaXZlbiB0aGUgbmF0dXJlIG9mIHRoaXMgcGF0Y2gsIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBpbiBgb3ZzX2N0X2luaXRgIHdoZW4gYG92c19jdF9saW1pdF9pbml0YCBmYWlscywgSSYjMzk7bSBnb2luZyB0byBhZGQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX0FEVkFOQ0VEYCB0byB0aGUgbWl4LiBUaGVzZSBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbGltaXRpbmcgYXNwZWN0cywgYW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiB3aXRoaW4gT3BlbiB2U3dpdGNoLCB0aGV5JiMzOTtyZSBwcm9iYWJseSBjcml0aWNhbCB0byB0aGUgZnVsbCBmdW5jdGlvbmFsaXR5IGFuZCB0aHVzLCBmdXp6aW5nIGNhcGFiaWxpdHkuCgpUaGVyZWZvcmUsIG15IGZpbmFsIGNvbmZpZ3VyYXRpb24gY2hlY2tsaXN0IGxvb2tzIGxpa2UgdGhpczoKCiogICBgT1BFTlZTV0lUQ0hgCiogICBgTkZfQ09OTlRSQUNLYAoqICAgYE5FVEZJTFRFUl9BRFZBTkNFRGAKKiAgIGBORlRfQ09OTkxJTUlUYAoKTXkgcHJpbWFyeSBmb2N1cyBoZXJlIGlzIGdvaW5nIHRvIGJlIGBvdnNfY3RfaW5pdGAuIFRoZSBwYXRjaCBkaXJlY3RseSBhZGRyZXNzZXMgYSBmYWlsdXJlIHNjZW5hcmlvIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGVuY291bnRlcnMgYW4gaXNzdWUuIFRoaXMgY2xlYXJseSBwb2ludHMgdG8gYW4gZXJyb3IgcGF0aCB0aGF0IG5lZWRzIHRob3JvdWdoIGZ1enppbmcgYXR0ZW50aW9uLiBJdCYjMzk7cyB0cmlnZ2VyZWQgYnkgdGhlIGNyZWF0aW9uIG9mIG5ldyBuZXR3b3JrIG5hbWVzcGFjZXMsIHdoaWNoIG1lYW5zIHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIGFuZCB0aHVzLCBhIGdvb2QgY2FuZGlkYXRlIGZvciB0cmlnZ2VyaW5nIHRoZSBlcnJvci4KCkxldCYjMzk7cyBxdWlja2x5IHNjYW4gdGhlIE9wZW4gdlN3aXRjaCBjb25maWd1cmF0aW9uIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnl0aGluZyBvYnZpb3VzLiBJIHdhbnQgdG8gYmUgKmFic29sdXRlbHkqIHN1cmUgSSBoYXZlIGV2ZXJ5dGhpbmcgSSBuZWVkIHRvIGVmZmVjdGl2ZWx5IHRhcmdldCB0aGlzIG1lbW9yeSBsZWFrIGR1cmluZyBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9vcGVudnN3aXRjaC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxNQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICA2Olx0Y29uZmlnIE9QRU5WU1dJVENIXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtPcGVuIHZTd2l0Y2hcJiMzNDtcbiAgIDg6XHRcdGRlcGVuZHMgb24gSU5FVFxuICAgOTpcdFx0ZGVwZW5kcyBvbiAhTkZfQ09OTlRSQUNLIHx8IFxcXG4gIDEwOlx0XHRcdCAgIChORl9DT05OVFJBQ0sgXHUwMDI2XHUwMDI2ICgoIU5GX0RFRlJBR19JUFY2IHx8IE5GX0RFRlJBR19JUFY2KSBcdTAwMjZcdTAwMjYgXFxcbiAgMTE6XHRcdFx0XHRcdCAgICAgKCFORl9OQVQgfHwgTkZfTkFUKSBcdTAwMjZcdTAwMjYgXFxcbiAgMTI6XHRcdFx0XHRcdCAgICAgKCFORVRGSUxURVJfQ09OTkNPVU5UIHx8IE5FVEZJTFRFUl9DT05OQ09VTlQpKSlcbiAgMTM6XHRcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCAhUFNBTVBMRVxuICAxNDpcdFx0c2VsZWN0IE1QTFNcbiAgMTU6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gIDE2Olx0XHRzZWxlY3QgTkVUX01QTFNfR1NPXG4gIDE3Olx0XHRzZWxlY3QgRFNUX0NBQ0hFXG4gIDE4Olx0XHRzZWxlY3QgTkVUX05TSFxuICAxOTpcdFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlMgaWYgTkZfQ09OTlRSQUNLXG4gIDIwOlx0XHRzZWxlY3QgTkZfTkFUX09WUyBpZiBORl9OQVRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTk4MgoJCQkJCQkJb3V0cHV0OiAxNDYKCQkJCQkJCXRob3VnaHRzOiAxNDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQ29uZmlndXJhdGlvbiBTdHJhdGVneSoqCgpPa2F5LCB0aGlzIGhpbmdlcyBvbiBgSU5FVGAsIHNvIHRoYXQmIzM5O3MgdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gYWRkaW5nLiBDb25zaWRlcmluZyB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLCBJIHNlZSBhIG5lZWQgZm9yIGBPUEVOVlNXSVRDSGAsIGBJTkVUYCwgbmF0dXJhbGx5LCBhbG9uZyB3aXRoIGBORl9DT05OVFJBQ0tgLCBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYW5kIGBORlRfQ09OTkxJTUlUYC4gV2FpdCBhIHNlY29uZOKApiBpZGVhbGx5LCB3ZeKAmWQgZGlyZWN0bHkgdGFyZ2V0IGBORVRGSUxURVJfQ09OTkNPVU5UYCwgYnV0IHRoYXQgb25lIGlzbiYjMzk7dCBhIHByb21wdGFibGUgb3B0aW9uLiBObyBwcm9ibGVtLCBgTkZUX0NPTk5MSU1JVGAgZWZmZWN0aXZlbHkgZW5hYmxlcyBpdCwgc28gSSYjMzk7bGwganVzdCBsaXN0IHRoYXQgdG8ga2VlcCB0aGluZ3MgdGlkeS4KCkhtbSwgYW55dGhpbmcgZWxzZSBjcml0aWNhbD8gUmlnaHQsIHRoZSBwYXRjaCBtb2RpZmllcyBgb3ZzX2N0X2luaXRgLCBhbmQgdGhhdCBmdW5jdGlvbiBpcywgdGhhbmtmdWxseSwgbm9uLXN0YXRpYy4gR29vZCBuZXdzLiBUaGlzIGRlZmluaXRlbHkgcXVhbGlmaWVzIGFzIHNvbWV0aGluZyB0aGF0IHdhcnJhbnRzIGZ1enppbmcsIHNvIEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuCgpBbHJpZ2h0LCBJJiMzOTttIHJlYWR5LiBMZXQmIzM5O3MgZ2V0IHRoZXNlIHJlc3VsdHMgc2V0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1BFTlZTV0lUQ0gmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdnNfY3RfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBgb3ZzX2N0X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlIGZvciBPcGVuIHZTd2l0Y2guIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7T1BFTlZTV0lUQ0gmIzM0OywKICAgICYjMzQ7SU5FVCYjMzQ7LAogICAgJiMzNDtORl9DT05OVFJBQ0smIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDssCiAgICAmIzM0O05GVF9DT05OTElNSVQmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtvdnNfY3RfaW5pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBgb3ZzX2N0X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlIGZvciBPcGVuIHZTd2l0Y2guIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNy8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTQgMTQ6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPklmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGNlYmQyZTVkOGI0MTgzOTBmOTQ3M2Y4YTU2MDU2YThiMzI3M2FmMmYKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MDo1OCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYwppbmRleCA5NTY5N2Q0ZTE2ZTY0Li5mYmFhNjc3MTQ0MTQzIDEwMDY0NAotLS0gYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jCkBAIC0yMDAxLDYgJiM0MzsyMDAxLDkgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldCkKIHsKIAl1bnNpZ25lZCBpbnQgbl9iaXRzID0gc2l6ZW9mKHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscykgKiBCSVRTX1BFUl9CWVRFOwogCXN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTsKJiM0MzsjaWYJSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVCkKJiM0MzsJaW50IGVycjsKJiM0MzsjZW5kaWYKIAogCWlmIChuZl9jb25ubGFiZWxzX2dldChuZXQsIG5fYml0cyAtIDEpKSB7CiAJCW92c19uZXQtJmd0O3h0X2xhYmVsID0gZmFsc2U7CkBAIC0yMDEwLDcgJiM0MzsyMDEzLDEwIEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpCiAJfQogCiAjaWYJSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVCkKLQlyZXR1cm4gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTsKJiM0MzsJZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTsKJiM0MzsJaWYgKGVyciAmYW1wOyZhbXA7IG92c19uZXQtJmd0O3h0X2xhYmVsKQomIzQzOwkJbmZfY29ubmxhYmVsc19wdXQobmV0KTsKJiM0MzsJcmV0dXJuIGVycjsKICNlbHNlCiAJcmV0dXJuIDA7CiAjZW5kaWYKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE0IDE0OjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIxNjQKCQkJCQkJCW91dHB1dDogMTI3CgkJCQkJCQl0aG91Z2h0czogNDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBPcGVuIHZTd2l0Y2ggQ29ubnRyYWNrIFBhdGNoKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgb3ZzX2N0X2luaXRgIHdpdGhpbiBgbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jYC4gTXkgaW5pdGlhbCByZWFkIGluZGljYXRlcyBpdCYjMzk7cyBhZGRpbmcgc29tZSBtdWNoLW5lZWRlZCBlcnJvciBoYW5kbGluZyBhcm91bmQgYG92c19jdF9saW1pdF9pbml0YC4gVGhlIGxvZ2ljIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscyBhbmQgdGhpcyBgb3ZzX25ldC0mZ3Q7eHRfbGFiZWxgIGZsYWcgaXMgc2V0LCB0aGVuIHdlIGNhbGwgYG5mX2Nvbm5sYWJlbHNfcHV0KG5ldClgLgoKSW1tZWRpYXRlbHksIEkgc2VlIHRoaXMgYXMgYSByZXNvdXJjZSBsZWFrIHByZXZlbnRpb24gbWVhc3VyZS4gV2UgYXJlIGNsZWFuaW5nIHVwIHBvdGVudGlhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgb24gYW4gZXJyb3IgcGF0aC4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgZG9lcyBub3Qgc2VlbSB0byBwcmVzZW50IGEgcmlzayBvZiByZWFkaW5nIG9yIHdyaXRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0IGlzIHB1cmVseSBhbiBlcnJvciBwYXRoIGNsZWFudXAuIE5vIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLgoKR2l2ZW4gdGhpcyB1bmRlcnN0YW5kaW5nLCBJJiMzOTttIGNvbmZpZGVudCB0aGF0IHRoaXMgaXMgYSBzdHJhaWdodGZvcndhcmQgcmVzb3VyY2UgbGVhayBmaXguIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpbnRvIG1lbW9yeSBzYWZldHkgaXMgcmVxdWlyZWQuIEkmIzM5O2xsIGZsYWcgdGhpcyBhcyBzdWNoLiBUaGVyZWZvcmUgSSB3aWxsIHNldCBOZWVkc0tNU0FOPWZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xNCAxNDo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHJlc291cmNlIGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCBieSBjYWxsaW5nIGBuZl9jb25ubGFiZWxzX3B1dGAgaWYgYG92c19jdF9saW1pdF9pbml0YCBmYWlscy4gVGhpcyBpcyByZWxhdGVkIHRvIHJlc291cmNlIG1hbmFnZW1lbnQgYW5kIGRvZXMgbm90IGludHJvZHVjZSBhbnkgbmV3IGRhdGEgc3RydWN0dXJlcywgbWVtb3J5IGFsbG9jYXRpb25zLCBvciBsb2dpYyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeSB0byB1c2VyIHNwYWNlIG9yIHVzZSBpdCBpbiBjb250cm9sIGZsb3cuIFN0YW5kYXJkIEtBU0FOIGFuZCBtZW1vcnkgbGVhayBkZXRlY3RvcnMgKGttZW1sZWFrKSBhcmUgc3VmZmljaWVudCBmb3IgY2F0Y2hpbmcgaXNzdWVzIHJlbGF0ZWQgdG8gdGhpcyBjaGFuZ2UuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUxOjAwLjc5MDgyMDUyNVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQwOTU5MDAxODU4MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GVF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfY3RfaW5pdFwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgYnkgY2FsbGluZyBgbmZfY29ubmxhYmVsc19wdXRgIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIFRoaXMgaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0b3JzIChrbWVtbGVhaykgYXJlIHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MTowMC43OTA4NDQ4OTVaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MzkyNzMyNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBjZWJkMmU1ZDhiNDE4MzkwZjk0NzNmOGE1NjA1NmE4YjMyNzNhZjJmXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgQXVnIDE0IDE0OjUwOjU4IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xcbmluZGV4IDk1Njk3ZDRlMTZlNjQuLmZiYWE2NzcxNDQxNDMgMTAwNjQ0XFxuLS0tIGEvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXFxuKysrIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXFxuQEAgLTIwMDEsNiArMjAwMSw5IEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuIHtcXG4gXFx0dW5zaWduZWQgaW50IG5fYml0cyA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tleV9jdF9sYWJlbHMpICogQklUU19QRVJfQllURTtcXG4gXFx0c3RydWN0IG92c19uZXQgKm92c19uZXQgPSBuZXRfZ2VuZXJpYyhuZXQsIG92c19uZXRfaWQpO1xcbisjaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbitcXHRpbnQgZXJyO1xcbisjZW5kaWZcXG4gXFxuIFxcdGlmIChuZl9jb25ubGFiZWxzX2dldChuZXQsIG5fYml0cyAtIDEpKSB7XFxuIFxcdFxcdG92c19uZXQtXFx1MDAzZXh0X2xhYmVsID0gZmFsc2U7XFxuQEAgLTIwMTAsNyArMjAxMywxMCBAQCBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbiBcXHR9XFxuIFxcbiAjaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbi1cXHRyZXR1cm4gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcXG4rXFx0ZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcXG4rXFx0aWYgKGVyciBcXHUwMDI2XFx1MDAyNiBvdnNfbmV0LVxcdTAwM2V4dF9sYWJlbClcXG4rXFx0XFx0bmZfY29ubmxhYmVsc19wdXQobmV0KTtcXG4rXFx0cmV0dXJuIGVycjtcXG4gI2Vsc2VcXG4gXFx0cmV0dXJuIDA7XFxuICNlbmRpZlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MTowMi4yMzEwMTQ0NloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQwMTE2NDg2OTY2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GVF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfY3RfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBjZWJkMmU1ZDhiNDE4MzkwZjk0NzNmOGE1NjA1NmE4YjMyNzNhZjJmXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBBdWcgMTQgMTQ6NTA6NTggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMgYi9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmNcbmluZGV4IDk1Njk3ZDRlMTZlNjQuLmZiYWE2NzcxNDQxNDMgMTAwNjQ0XG4tLS0gYS9uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmNcbisrKyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuQEAgLTIwMDEsNiArMjAwMSw5IEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4ge1xuIFx0dW5zaWduZWQgaW50IG5fYml0cyA9IHNpemVvZihzdHJ1Y3Qgb3ZzX2tleV9jdF9sYWJlbHMpICogQklUU19QRVJfQllURTtcbiBcdHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTtcbisjaWZcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXG4rXHRpbnQgZXJyO1xuKyNlbmRpZlxuIFxuIFx0aWYgKG5mX2Nvbm5sYWJlbHNfZ2V0KG5ldCwgbl9iaXRzIC0gMSkpIHtcbiBcdFx0b3ZzX25ldC1cdTAwM2V4dF9sYWJlbCA9IGZhbHNlO1xuQEAgLTIwMTAsNyArMjAxMywxMCBAQCBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuIFx0fVxuIFxuICNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbi1cdHJldHVybiBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xuK1x0ZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcbitcdGlmIChlcnIgXHUwMDI2XHUwMDI2IG92c19uZXQtXHUwMDNleHRfbGFiZWwpXG4rXHRcdG5mX2Nvbm5sYWJlbHNfcHV0KG5ldCk7XG4rXHRyZXR1cm4gZXJyO1xuICNlbHNlXG4gXHRyZXR1cm4gMDtcbiAjZW5kaWZcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUxOjAyLjIzMTAxNTc3WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NTAyMDkyMzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBPcGVuIHZTd2l0Y2ggQ29ubnRyYWNrIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBnb3QgdGhpcyBwYXRjaCBoZXJlIHRoYXQncyB0b3VjaGluZyBgbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jYC4gU2VlbXMgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBmaXgsIGFkZHJlc3NpbmcgYSBtZW1vcnkgbGVhayBvZiBgbmZfY29ubmxhYmVsc2Agd2l0aGluIGBvdnNfY3RfaW5pdGAuIFRoaXMgaXMgYSBwcmV0dHkgY3JpdGljYWwgYXJlYSwgYXMgYG92c19jdF9pbml0YCBnZXRzIGNhbGxlZCBkdXJpbmcgdGhlIE9wZW4gdlN3aXRjaCBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZS4gQW55IGxlYWtzIHRoZXJlIGNvdWxkIGJlIHByb2JsZW1hdGljLCBlc3BlY2lhbGx5IGF0IHNjYWxlLlxuXG5NeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGl2ZSBzdHJhaWdodCBpbnRvIGBvdnNfY3RfaW5pdGAgYW5kIGBvdnNfY3RfbGltaXRfaW5pdGAg4oCTIHRob3NlIGFyZSB0aGUga2V5IGZ1bmN0aW9ucyB0byB1bmRlcnN0YW5kIHRoZSBidWcuIEZyb20gdGhlIGRlc2NyaXB0aW9uLCB0aGUgcGF0Y2ggYXBwZWFycyB0byBhZGQgYSBgbmZfY29ubmxhYmVsc19wdXQobmV0KWAgY2FsbCBpZiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzIGFuZCBhIGNvbmRpdGlvbiBpcyBtZXQg4oCTIHNwZWNpZmljYWxseSwgaWYgYG92c19uZXQtXHUwMDNleHRfbGFiZWxgIGlzIHRydWUuIFRoYXQgaW5kaWNhdGVzIGEgY29uZGl0aW9uYWwgY2xlYW51cCwgd2hpY2ggaXMgZ29vZC4gV2UgZGVmaW5pdGVseSB3YW50IHRvIGVuc3VyZSB0aGVzZSBsYWJlbHMgYXJlIHJlbGVhc2VkIGNvcnJlY3RseSBpbiBlcnJvciBwYXRocy5cblxuQmVmb3JlIEkgZ28gZnVydGhlciwgbGV0J3MganVzdCBkbyBhIHF1aWNrIGBncmVwYCBmb3IgYG92c19jdF9pbml0YCB3aXRoaW4gdGhlIHJlbGV2YW50IGNvZGViYXNlIHRvIGdldCB0aGUgYnJvYWRlciBjb250ZXh0LiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGFuZCBob3cgZnJlcXVlbnRseSB3aWxsIGhlbHAgbWUgYXNzZXNzIHRoZSBpbXBhY3QgYW5kIHBvdGVudGlhbCBzZXZlcml0eSBvZiB0aGUgb3JpZ2luYWwgbGVhay4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBhbmQgY29uZmlybSB0aGF0IHRoZSBmaXggcHJvcGVybHkgYWRkcmVzc2VzIGFsbCBwb3RlbnRpYWwgc2NlbmFyaW9zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY3LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTU5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTE6NDMuOTgxMjI4MDI5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ5MDE1ODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm92c19jdF9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTM2ND1zdGF0aWMgc3RydWN0IG5mX2Nvbm5fbGFiZWxzICpvdnNfY3RfZ2V0X2Nvbm5fbGFiZWxzKHN0cnVjdCBuZl9jb25uICpjdClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0zODAtICovXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjM4MTpzdGF0aWMgaW50IG92c19jdF9pbml0X2xhYmVscyhzdHJ1Y3QgbmZfY29ubiAqY3QsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0zODItXFx0XFx0XFx0ICAgICAgY29uc3Qgc3RydWN0IG92c19rZXlfY3RfbGFiZWxzICpsYWJlbHMsXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9OTU3PXN0YXRpYyBpbnQgb3ZzX2N0X2NvbW1pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzd19mbG93X2tleSAqa2V5LFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTEwMTItXFx0aWYgKCFuZl9jdF9pc19jb25maXJtZWQoY3QpKSB7XFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjEwMTM6XFx0XFx0ZXJyID0gb3ZzX2N0X2luaXRfbGFiZWxzKGN0LCBrZXksIFxcdTAwMjZpbmZvLVxcdTAwM2VsYWJlbHMudmFsdWUsXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTEwMTQtXFx0XFx0XFx0XFx0XFx0IFxcdTAwMjZpbmZvLVxcdTAwM2VsYWJlbHMubWFzayk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MTk4Mz1zdHJ1Y3QgZ2VubF9mYW1pbHkgZHBfY3RfbGltaXRfZ2VubF9mYW1pbHkgX19yb19hZnRlcl9pbml0ID0ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE5OTktXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjIwMDA6aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAwMS17XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg9MTM9ZW51bSBvdnNfa2V5X2F0dHI7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmgtMTUtI2lmIElTX0VOQUJMRUQoQ09ORklHX05GX0NPTk5UUkFDSylcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg6MTY6aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKik7XFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTE3LXZvaWQgb3ZzX2N0X2V4aXQoc3RydWN0IG5ldCAqKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaD0zMj12b2lkIG92c19jdF9mcmVlX2FjdGlvbihjb25zdCBzdHJ1Y3QgbmxhdHRyICphKTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaC00MC1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg6NDE6c3RhdGljIGlubGluZSBpbnQgb3ZzX2N0X2luaXQoc3RydWN0IG5ldCAqbmV0KSB7IHJldHVybiAwOyB9XFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTQyLVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM9MjcxOD1zdGF0aWMgaW50IF9fbmV0X2luaXQgb3ZzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3MjYtXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MjcyNzpcXHRlcnIgPSBvdnNfY3RfaW5pdChuZXQpO1xcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3MjgtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTE6NDQuMDMwMjQ4NDM4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjU2MzE2NzUzNTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBPcGVuIHZTd2l0Y2ggS2VybmVsIENoYW5nZSoqXG5cbk9rYXksIHNvIGBvdnNfY3RfaW5pdGAgaXMgYmVpbmcgY2FsbGVkIGZyb20gYG92c19pbml0X25ldGAsIHdoaWNoIG1ha2VzIHNlbnNlOyB0aGF0J3MgdGhlIE9wZW4gdlN3aXRjaCBuZXRucyBpbml0aWFsaXphdGlvbiBjYWxsYmFjay4gVGhpcyBzZWVtcyBsaWtlIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIHNwZWNpZmljYWxseSBpbiBob3cgT3BlbiB2U3dpdGNoIGhhbmRsZXMgZXJyb3JzIGR1cmluZyB0aGUgbmV0bnMgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy4gQ3J1Y2lhbGx5LCBpdCdzIGZpeGluZyBhIG1lbW9yeSBsZWFrLCB3aGljaCBpcyBhbHdheXMgd29ydGggYWRkcmVzc2luZy5cblxuR2l2ZW4gdGhhdCBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgKndpdGhpbiB0aGUga2VybmVsKiwgZnV6emluZyBpcyBhYnNvbHV0ZWx5IHdhcnJhbnRlZCBoZXJlLiBXZSBuZWVkIHRvIGJlIHRob3JvdWdoLiBUaGUga2V5IHN5bWJvbHMgdG8ga2VlcCBpbiBtaW5kIGZvciBvdXIgZnV6emluZyBzdHJhdGVneSBhcmUgYG92c19jdF9pbml0YCBhbmQgYG92c19pbml0X25ldGAuXG5cbkJlZm9yZSB3ZSBnbyB0b28gZGVlcCwgbGV0J3MgbWFrZSBzdXJlIHRoYXQgYE9QRU5WU1dJVENIYCBhbmQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGFyZSBlbmFibGVkIGluIHRoZSBrZXJuZWwgY29uZmlnLiBJJ2xsIGNoZWNrIEtjb25maWcgZm9yIHRob3NlIGZpcnN0LiBBbmQsIG9mIGNvdXJzZSwgdGhlIGdlbmVyYWwgY29ubmVjdGlvbiB0cmFja2luZyBjb25maWcsIGBORl9DT05OVFJBQ0tgIHNob3VsZCBiZSBlbmFibGVkLCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMzg4LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjUyOjA5LjY2MTkyNjY3WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDI5MDQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBPUEVOVlNXSVRDSFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvb3BlbnZzd2l0Y2gvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTUtXFxubmV0L29wZW52c3dpdGNoL0tjb25maWc6Njpjb25maWcgT1BFTlZTV0lUQ0hcXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2hcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy00My1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo0NDpjb25maWcgT1BFTlZTV0lUQ0hfR1JFXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNDUtXFx0dHJpc3RhdGUgXFxcIk9wZW4gdlN3aXRjaCBHUkUgdHVubmVsaW5nIHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy01Ni1cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZzo1Nzpjb25maWcgT1BFTlZTV0lUQ0hfVlhMQU5cXG5uZXQvb3BlbnZzd2l0Y2gvS2NvbmZpZy01OC1cXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoIFZYTEFOIHR1bm5lbGluZyBzdXBwb3J0XFxcIlxcbi0tXFxubmV0L29wZW52c3dpdGNoL0tjb25maWctNjgtXFxubmV0L29wZW52c3dpdGNoL0tjb25maWc6Njk6Y29uZmlnIE9QRU5WU1dJVENIX0dFTkVWRVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTcwLVxcdHRyaXN0YXRlIFxcXCJPcGVuIHZTd2l0Y2ggR2VuZXZlIHR1bm5lbGluZyBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjowOS43MDgzNjE0N1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MTA2MTIyNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkNoZWNraW5nIGBORVRGSUxURVJfQ09OTkNPVU5UYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgcmlnaHQgaW4uIFRoZSBmaXJzdCB0aGluZyB0aGF0IHBvcHMgaW50byBteSBoZWFkIGlzIHRvIGNoZWNrIHRoZSBzdGF0dXMgb2YgYE5FVEZJTFRFUl9DT05OQ09VTlRgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBjYXBhYmlsaXRpZXMgd2l0aGluIE5ldGZpbHRlci4gVGhpcyBpcyBjcnVjaWFsIGZvciBwZXJmb3JtYW5jZSBtb25pdG9yaW5nIGFuZCB0cm91Ymxlc2hvb3RpbmcgbmV0d29yayBib3R0bGVuZWNrcywgcGFydGljdWxhcmx5IGluIHNjZW5hcmlvcyB3aXRoIGhpZ2ggY29ubmVjdGlvbiByYXRlcyBvciBwb3RlbnRpYWwgRG9TIGF0dGFja3MuIEkgd2FudCB0byBzZWUgaG93IHRoaXMgbW9kdWxlIGlzIGJlaGF2aW5nLCB3aGV0aGVyIGl0J3MgZW5hYmxlZCwgYW5kIGlmIGFueSBjb25maWd1cmFibGUgcGFyYW1ldGVycyBhcmUgYmVpbmcgdXNlZC4gQXJlIGNvbm5lY3Rpb24gdHJhY2tpbmcgbGltaXRzIGNvbmZpZ3VyZWQ/IFdoYXQgYWJvdXQgdGhlIGNvbm50cmFjayBoYXNoIHNpemU/IFVuZGVyc3RhbmRpbmcgdGhpcyBiYXNlbGluZSBpcyBmdW5kYW1lbnRhbCBiZWZvcmUgSSBkaWcgYW55IGRlZXBlci4gVGhpcyB3aWxsIGdpdmUgbWUgYSBwb2ludCBvZiByZWZlcmVuY2UgaWYgSSBuZWVkIHRvIGRpYWdub3NlIGFuIGlzc3VlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MDIxLCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTI6MTIuNjE4OTc2MjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTAwMjc1NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5FVEZJTFRFUl9DT05OQ09VTlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTExMD1pZiBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTExOmNvbmZpZyBORVRGSUxURVJfQ09OTkNPVU5UXFxubmV0L25ldGZpbHRlci9LY29uZmlnLTExMi1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1MjoxMi42NjkwMDk4NjlaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxODUxMTYxMTUzNTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRXhhbWluaW5nIHRoZSBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGtlcm5lbCBjb25maWdzOiBgT1BFTlZTV0lUQ0hgLCBgTkVURklMVEVSX0NPTk5DT1VOVGAsIGFuZCBgTkZfQ09OTlRSQUNLYC4gSG1tLCBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXMgYSB0cmlzdGF0ZSBjb25maWcsIHdoaWNoIGlzIGludGVyZXN0aW5nLCBidXQgdGhlcmUncyBubyBkaXJlY3QgcHJvbXB0IGZvciBpdC4gVGhhdCBtZWFucyBpdCdzIGJlaW5nICpzZWxlY3RlZCogYnkgYW5vdGhlciBjb25maWcuIFJpZ2h0LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgcHVsbGluZyBpdCBpbi4gVGltZSB0byBkaWcgZGVlcGVyIGFuZCBzZWUgd2hhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZS4gTGV0J3Mgc2VlIHdoYXQncyBzZWxlY3RpbmcgaXQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDI5NCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjE3Ljc4NTEyODczMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjY1MjAwMzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWc9NTExPWNvbmZpZyBORlRfQ09OTkxJTUlUXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctNTE0LVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjUxNTpcXHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy01MTYtXFx0aGVscFxcbi0tXFxubmV0L25ldGZpbHRlci9LY29uZmlnPTEyMjg9Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcXG4tLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjMxLVxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjEyMzI6XFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIzMy1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjE3Ljg1MTY1NTQ5MloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5ODM4ODI1MjIyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd246XG5cbioqSW52ZXN0aWdhdGluZyBPcGVuIHZTd2l0Y2ggQ29ubmVjdGlvbiBUcmFja2luZyoqXG5cblJpZ2h0LCBzbyBJIHdhcyBpbml0aWFsbHkgdGhpbmtpbmcgYWJvdXQgY29ubmVjdGlvbiBmbHVzaGluZyBpbiBPcGVuIHZTd2l0Y2ggYW5kIGltbWVkaWF0ZWx5IGp1bXBlZCB0byBgT1BFTlZTV0lUQ0hfQ09OTkZMVVNIYC4gQnV0IHRoYXQgZG9lc24ndCBzb3VuZCBxdWl0ZSByaWdodC4uLiBpc24ndCB0aGF0IGhhbmRsZWQgYnkgYSBkaWZmZXJlbnQgbWVjaGFuaXNtPyBBaCwgeWVzLCBJIHNlZW0gdG8gcmVjYWxsIE9wZW4gdlN3aXRjaCBsZXZlcmFnaW5nIHRoZSBgSVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClgIHNldHRpbmcuIFRoYXQgcmluZ3MgYSBiZWxsLlxuXG5IbW0sIGJ1dCB0aGF0IGJyaW5ncyB1cCBhIHF1ZXN0aW9uLiBEb2VzIE9wZW4gdlN3aXRjaCBhY3R1YWxseSAqc2VsZWN0KiBgTkVURklMVEVSX0NPTk5DT1VOVGA/IEkgc2hvdWxkIHByb2JhYmx5IHZlcmlmeSB0aGF0IGFzc3VtcHRpb24uIEJlc3QgdG8gZ28gc3RyYWlnaHQgdG8gdGhlIHNvdXJjZS4gVGltZSB0byBkaWcgaW50byB0aGUgYG5ldC9vcGVudnN3aXRjaC9LY29uZmlnYCBmaWxlIGFuZCBjb25maXJtIGhvdyBPcGVuIHZTd2l0Y2ggaGFuZGxlcyB0aGlzIGRlcGVuZGVuY3kuIEdvdHRhIGJlIHByZWNpc2UgYWJvdXQgdGhlc2UgdGhpbmdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Njg0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTU6MjcuNjkwNDgzNDY0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTUwNDA1OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJORVRGSUxURVJfQ09OTkNPVU5UXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9vcGVudnN3aXRjaC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L29wZW52c3dpdGNoL0tjb25maWc9Nj1jb25maWcgT1BFTlZTV0lUQ0hcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTExLVxcdFxcdFxcdFxcdCAgICAgKCFORl9OQVQgfHwgTkZfTkFUKSBcXHUwMDI2XFx1MDAyNiBcXFxcXFxubmV0L29wZW52c3dpdGNoL0tjb25maWc6MTI6XFx0XFx0XFx0XFx0ICAgICAoIU5FVEZJTFRFUl9DT05OQ09VTlQgfHwgTkVURklMVEVSX0NPTk5DT1VOVCkpKVxcbm5ldC9vcGVudnN3aXRjaC9LY29uZmlnLTEzLVxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCAhUFNBTVBMRVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTYxPXN0cnVjdCBvdnNfY29ubnRyYWNrX2luZm8ge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTc5LVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzo4MDojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy04MS0jZGVmaW5lIE9WU19DVF9MSU1JVF9VTkxJTUlURURcXHQwXFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9ODYwPXN0YXRpYyBib29sIGxhYmVsc19ub256ZXJvKGNvbnN0IHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscyAqbGFiZWxzKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTg3MC1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6ODcxOiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTg3Mi1zdGF0aWMgc3RydWN0IGhsaXN0X2hlYWQgKmN0X2xpbWl0X2hhc2hfYnVja2V0KFxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTk1Nz1zdGF0aWMgaW50IG92c19jdF9jb21taXQoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc3dfZmxvd19rZXkgKmtleSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzMtXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjk3NDojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy05NzUtXFx0aWYgKHN0YXRpY19icmFuY2hfdW5saWtlbHkoXFx1MDAyNm92c19jdF9saW1pdF9lbmFibGVkKSkge1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTE1Njk9c3RhdGljIHZvaWQgX19vdnNfY3RfZnJlZV9hY3Rpb24oc3RydWN0IG92c19jb25udHJhY2tfaW5mbyAqY3RfaW5mbylcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0xNTg0LVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzoxNTg1OiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODYtc3RhdGljIGludCBvdnNfY3RfbGltaXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0KVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTIwMDA9aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDAzLVxcdHN0cnVjdCBvdnNfbmV0ICpvdnNfbmV0ID0gbmV0X2dlbmVyaWMobmV0LCBvdnNfbmV0X2lkKTtcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAwNDojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDA1LVxcdGludCBlcnI7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAxNC1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MjAxNTojaWZcXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDE2LVxcdGVyciA9IG92c19jdF9saW1pdF9pbml0KG5ldCwgb3ZzX25ldCk7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MjAyNT12b2lkIG92c19jdF9leGl0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDI4LVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYzoyMDI5OiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTIwMzAtXFx0b3ZzX2N0X2xpbWl0X2V4aXQobmV0LCBvdnNfbmV0KTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaD05OD1zdGF0aWMgaW5saW5lIHZvaWQgb3ZzX2N0X2ZyZWVfYWN0aW9uKGNvbnN0IHN0cnVjdCBubGF0dHIgKmEpIHsgfVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5oLTEwMi1cXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmg6MTAzOiNpZiBJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suaC0xMDQtZXh0ZXJuIHN0cnVjdCBnZW5sX2ZhbWlseSBkcF9jdF9saW1pdF9nZW5sX2ZhbWlseTtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI2ODA9c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSAqIGNvbnN0IGRwX2dlbmxfZmFtaWxpZXNbXSA9IHtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI2ODUtXFx0XFx1MDAyNmRwX21ldGVyX2dlbmxfZmFtaWx5LFxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jOjI2ODY6I2lmXFx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNjg3LVxcdFxcdTAwMjZkcF9jdF9saW1pdF9nZW5sX2ZhbWlseSxcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5oPTE3MD1zdHJ1Y3Qgb3ZzX25ldCB7XFxuLS1cXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguaC0xNzMtXFx0c3RydWN0IGRlbGF5ZWRfd29yayBtYXNrc19yZWJhbGFuY2U7XFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmg6MTc0OiNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmgtMTc1LVxcdHN0cnVjdCBvdnNfY3RfbGltaXRfaW5mbyAqY3RfbGltaXRfaW5mbztcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTU6MjcuNzM2MDA1MjAzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcxMTE3ODY3MjksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgTGluZSBvZiBSZWFzb25pbmcqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIGZvciB0aGlzIHNwZWNpZmljIGNvZGUgcGF0aC4gUmlnaHQsIG1ha2VzIHNlbnNlLiBMZXQgbWUgYWRkIGBPUEVOVlNXSVRDSGAsIGBORl9DT05OVFJBQ0tgLCBhbmQgYE5FVEZJTFRFUl9DT05OQ09VTlRgIHRvIG15IGNvbmZpZ3VyYXRpb24uIEhvbGQgb24sIHdoYXQncyB0aGlzPyBgTkVURklMVEVSX0NPTk5DT1VOVGAgaXNuJ3QgZGlyZWN0bHkgc2VsZWN0YWJsZSDigJMgaXQncyB0cmlzdGF0ZSBhbmQgbGFja3MgYSBwcm9tcHQuIE9rYXksIHNvIEkgbmVlZCB0byBmaW5kIGEgd2F5IHRvICplbmFibGUqIGl0IGluZGlyZWN0bHkuIEFoLCByaWdodCEgSSBjYW4gc2VsZWN0IGVpdGhlciBgTkZUX0NPTk5MSU1JVGAgb3IgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgLiBMZXQncyBnbyB3aXRoIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCBhbmQgYWRkIHRoYXQgdG8gdGhlIEVuYWJsZUNvbmZpZ3MuXG5cbkp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBsZXQncyBkb3VibGUtY2hlY2sgYWdhaW4gdGhhdCBJIGNhbid0IGVuYWJsZSBgTkVURklMVEVSX0NPTk5DT1VOVGAgZGlyZWN0bHkuIFllcCwgaXQgaGFzIG5vIHByb21wdC4gR29vZCwgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGlzIGRlZmluaXRlbHkgdGhlIHJpZ2h0IGNob2ljZS5cblxuTm93LCBsZXQncyByZWZvY3VzLiBNeSBrZXkgc3ltYm9scyBoZXJlIGFyZSBgb3ZzX2N0X2luaXRgIGFuZCBgb3ZzX2luaXRfbmV0YC4gSGFuZyBvbiwgYG92c19pbml0X25ldGAgaXMgYSBuZXRucyBpbml0IGNhbGxiYWNrOyB0aGF0J3MgY2FsbGVkIGV2ZXJ5IHRpbWUgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgaXMgY3JlYXRlZC4gVGhhdCdzIGEgZ29vZCBwbGFjZSB0byBzdGFydCBmdXp6aW5nLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gYG92c19jdF9pbml0YC5cblxuTGV0J3MgcXVpY2tseSBjb25maXJtIHdoZXRoZXIgYG92c19jdF9pbml0YCBpcyBzdGF0aWMuIE5vcGUsIGl0J3MgYGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpYC4gT2theSwgbmV4dCBJIHNob3VsZCBjaGVjayBgb3ZzX2N0X2xpbWl0X2luaXRgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MjcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6Mjc1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjM0Ljg0Nzc5NjY5MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDUxMDQ5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwib3ZzX2N0X2xpbWl0X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM9MTU2OT1zdGF0aWMgdm9pZCBfX292c19jdF9mcmVlX2FjdGlvbihzdHJ1Y3Qgb3ZzX2Nvbm50cmFja19pbmZvICpjdF9pbmZvKVxcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODUtI2lmXFx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmM6MTU4NjpzdGF0aWMgaW50IG92c19jdF9saW1pdF9pbml0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IG92c19uZXQgKm92c19uZXQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jLTE1ODcte1xcbi0tXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jPTIwMDA9aW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYy0yMDE1LSNpZlxcdElTX0VOQUJMRUQoQ09ORklHX05FVEZJTFRFUl9DT05OQ09VTlQpXFxubmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jOjIwMTY6XFx0ZXJyID0gb3ZzX2N0X2xpbWl0X2luaXQobmV0LCBvdnNfbmV0KTtcXG5uZXQvb3BlbnZzd2l0Y2gvY29ubnRyYWNrLmMtMjAxNy1cXHRpZiAoZXJyIFxcdTAwMjZcXHUwMDI2IG92c19uZXQtXFx1MDAzZXh0X2xhYmVsKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NTozNC44OTI5MDU5NDFaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg5MzQ3MTg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipJbml0aWFsIEFzc2Vzc21lbnQgb2YgT1ZTIENvbm5lY3Rpb24gVHJhY2tpbmcgSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBob3cgT3BlbiB2U3dpdGNoIGluaXRpYWxpemVzIGl0cyBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2N0X2xpbWl0X2luaXRgIGlzIGRlY2xhcmVkIGFzIHN0YXRpYywgc28gdGhhdCdzIHByb2JhYmx5IG5vdCB3aGVyZSB0aGUgYWN0aW9uIGlzLiBJbnN0ZWFkLCBJIG5lZWQgdG8gem9vbSBpbiBvbiBgb3ZzX2N0X2luaXRgIGFuZCBgb3ZzX2luaXRfbmV0YC4gVGhlc2UgYXJlIHRoZSBmdW5jdGlvbnMgdGhhdCBsaWtlbHkgaGFuZGxlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uLlxuXG5MZXQgbWUgcXVpY2tseSB2ZXJpZnkgbXkgaHlwb3RoZXNpcyBhYm91dCBgb3ZzX2luaXRfbmV0YC4gSXMgdGhhdCBvbmUgYWxzbyBzdGF0aWMsIG9yIGRvZXMgaXQgb2ZmZXIgYSBwYXRoIGZvciBleHRlcm5hbCBjb25maWd1cmF0aW9uIG9yIGV4dGVuc2lvbj8gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHNjb3BlIGJlZm9yZSBJIGNhbiBkZXRlcm1pbmUgdGhlIHByb3BlciBwYXRoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MjIwLCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTU6MzcuNzg2MzgxODgyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTI2MjY0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJvdnNfaW5pdF9uZXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L29wZW52c3dpdGNoL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYz0yNjk5PXN0YXRpYyBpbnQgX19pbml0IGRwX3JlZ2lzdGVyX2dlbmwodm9pZClcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3MTctXFxubmV0L29wZW52c3dpdGNoL2RhdGFwYXRoLmM6MjcxODpzdGF0aWMgaW50IF9fbmV0X2luaXQgb3ZzX2luaXRfbmV0KHN0cnVjdCBuZXQgKm5ldClcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYy0yNzE5LXtcXG4tLVxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jPTI3OTE9c3RhdGljIHN0cnVjdCBwZXJuZXRfb3BlcmF0aW9ucyBvdnNfbmV0X29wcyA9IHtcXG5uZXQvb3BlbnZzd2l0Y2gvZGF0YXBhdGguYzoyNzkyOlxcdC5pbml0ID0gb3ZzX2luaXRfbmV0LFxcbm5ldC9vcGVudnN3aXRjaC9kYXRhcGF0aC5jLTI3OTMtXFx0LmV4aXQgPSBvdnNfZXhpdF9uZXQsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU1OjM3LjgzMTY2MjE3MloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjQzOTA5ODg4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBPcGVuIHZTd2l0Y2ggSW5pdGlhbGl6YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBteSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgb3ZzX2luaXRfbmV0YCBpcyBkZWNsYXJlZCBhcyBzdGF0aWMsIHdoaWNoIGltbWVkaWF0ZWx5IGxpbWl0cyBpdHMgc2NvcGUuIFdhaXQsIGhvbGQgb24uLi4gYG92c19jdF9pbml0YCBpcyAqbm90KiBzdGF0aWMsIHRoYXQncyB0aGUga2V5IGRpc3RpbmN0aW9uIGhlcmUuIEFyZSB0aGVyZSBhbnkgb3RoZXIgZnVuY3Rpb25zIHRvIHplcm8gaW4gb24/IE5vLCB0aGUgcGF0Y2ggb25seSB0b3VjaGVzIGBvdnNfY3RfaW5pdGAuIFRoaXMgbWVhbnMgYG92c19jdF9pbml0YCBpcyB0aGUgc29sZSBub24tc3RhdGljIGZ1bmN0aW9uIGltcGFjdGVkIGJ5IHRoZSBjaGFuZ2VzLiBHb29kLlxuXG5Ob3csIHRoZSBpbXBvcnRhbnQgcXVlc3Rpb246IGlzIGBvdnNfY3RfaW5pdGAgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlPyBUaGUgYW5zd2VyIGlzIHllcywgYWJzb2x1dGVseS4gSSBjYW4gc2VlIGhvdyB5b3UgY291bGQgdHJpZ2dlciBpdCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS4gYHVuc2hhcmUgLW5gIG9yIGV2ZW4gYGNsb25lKENMT05FX05FV05FVClgIHdpbGwgZmlyZSBvZmYgYG92c19pbml0X25ldGAsIGFuZCB0aGF0LCBpbiB0dXJuLCBjYWxscyBgb3ZzX2N0X2luaXRgLiBUaGF0J3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0ZXN0IHBhdGguIEkndmUgZ290IGEgY2xlYXIgd2F5IHRvIHZlcmlmeSB0aGUgY2hhbmdlIG5vdy5cblxuQWxyaWdodCwgbGV0J3MgZ2V0IHRoZSBjb25maWd1cmF0aW9ucyBzdHJhaWdodC4gV2UncmUgbG9va2luZyBhdCBuZWVkaW5nIGBPUEVOVlNXSVRDSGAsIG9mIGNvdXJzZSwgdGhlbiBgTkZfQ09OTlRSQUNLYCBhbmQsIGltcG9ydGFudGx5LCBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAgdG8gZW5hYmxlIGBORVRGSUxURVJfQ09OTkNPVU5UYC5cblxuRmluYWxseSwgSSdsbCBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGUgZGVwZW5kZW5jaWVzIG9mIGBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUYCB0byBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIHN1cnByaXNlcyB0aGVyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NzY1NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjoxNC4yNzA3NjQ5ODVaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNTQwMTcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxJTUlUXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz0xMjE1PWNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTkxBQkVMXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMTIyNy1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6MTIyODpjb25maWcgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVFxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0xMjI5LVxcdHRyaXN0YXRlICdcXFwiY29ubmxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1NjoxNC4zMjIzMTI4NjRaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mzc5Mjc3OTU3MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipEZXBlbmRlbmN5IERlZXAgRGl2ZTogTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVCoqXG5cbk9rYXksIHRpbWUgdG8gY2hlY2sgdGhlIGRlcGVuZGVuY2llcyBvZiBgTkVURklMVEVSX1hUX01BVENIX0NPTk5MSU1JVGAuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMuIEdpdmVuIG15IGZhbWlsaWFyaXR5IHdpdGggdGhlIGtlcm5lbCdzIG5ldGZpbHRlciBhcmNoaXRlY3R1cmUsIEkga25vdyB0aGlzIG1hdGNoIGlzIHVzZWQgZm9yIGNvbm5lY3Rpb24gcmF0ZSBsaW1pdGluZy4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byByZXZpZXcgdGhlIEtjb25maWcgZmlsZSBmb3IgYE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRgIGFuZCBzZWUgaXRzIGRpcmVjdCBkZXBlbmRlbmNpZXMsIGFuZCBhbnkgaW5kaXJlY3QgZGVwZW5kZW5jaWVzIHRocm91Z2ggb3RoZXIgbW9kdWxlcyBvciBmZWF0dXJlcy4gSSdsbCBuZWVkIHRvIHRoaW5rIGFib3V0IGhvdyB0aGlzIGFmZmVjdHMgdGhlIG92ZXJhbGwgc3lzdGVtLiBBcmUgdGhlcmUgYW55IG90aGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgZmVhdHVyZXMgaXQgbWlnaHQgY29uZmxpY3Qgd2l0aCwgb3IgcmVseSB1cG9uPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIGZvciBjb25uZWN0aW9uIHRyYWNraW5nIHN0YXRlIHNpemUgYW5kIHBlcmZvcm1hbmNlIHdpdGggdmFyaW91cyBjb25maWd1cmF0aW9ucz8gSSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgcG9zc2libGUgaW1wYWN0cyBvbiB0aGUgdXNlcnNwYWNlIHRvb2xzIHRoYXQgbWlnaHQgaW50ZXJhY3Qgd2l0aCB0aGlzIG1vZHVsZSwgc3VjaCBhcyBgaXB0YWJsZXNgIG9yIGBuZnRhYmxlc2AsIGFuZCB3aGV0aGVyIHRoZWlyIGNvZGUgaGFzIHNwZWNpZmljIHJlcXVpcmVtZW50cyBvciBhc3N1bXB0aW9ucyB0aWVkIHRvIHRoaXMgbWF0Y2guIEl0J3MgYWxzbyB3b3J0aCBhIHF1aWNrIHJldmlldyBvZiBhbnkgcmVsYXRlZCBkb2N1bWVudGF0aW9uIHRvIGNoZWNrIHRoZSBkZXRhaWxzIG9mIGltcGxlbWVudGF0aW9uLCBhbmQgd2hhdCBwb3RlbnRpYWwgYnVncyB3ZXJlIGZvdW5kIGluIHByZXZpb3VzIHZlcnNpb25zLiBGaW5hbGx5LCBJJ2xsIG5lZWQgdG8gdHJhY2UgdGhlIGNvZGUgcGF0aCBmb3IgdGhpcyBhbmQgcmVsYXRlZCBtb2R1bGVzIGp1c3QgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6ODMyMSwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU2OjE4LjExNTA5NjEzNloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTM5MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEyMjgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjEyMjg6XFx0Y29uZmlnIE5FVEZJTFRFUl9YVF9NQVRDSF9DT05OTElNSVRcXG4xMjI5OlxcdFxcdHRyaXN0YXRlICdcXFwiY29ubmxpbWl0XFxcIiBtYXRjaCBzdXBwb3J0J1xcbjEyMzA6XFx0XFx0ZGVwZW5kcyBvbiBORl9DT05OVFJBQ0tcXG4xMjMxOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuMTIzMjpcXHRcXHRzZWxlY3QgTkVURklMVEVSX0NPTk5DT1VOVFxcbjEyMzM6XFx0XFx0aGVscFxcbjEyMzQ6XFx0XFx0ICBUaGlzIG1hdGNoIGFsbG93cyB5b3UgdG8gbWF0Y2ggYWdhaW5zdCB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsXFxuMTIzNTpcXHRcXHQgIGNvbm5lY3Rpb25zIHRvIGEgc2VydmVyIHBlciBjbGllbnQgSVAgYWRkcmVzcyAob3IgYWRkcmVzcyBibG9jaykuXFxuMTIzNjpcXHRcXG4xMjM3OlxcdGNvbmZpZyBORVRGSUxURVJfWFRfTUFUQ0hfQ09OTk1BUktcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTY6MTguMTE1MjUzMDE2WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwODQxNjcwOTA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBjb25maWcgY29uc2lkZXJhdGlvbnMsIGRpc3RpbGxlZCBpbnRvIG15IGludGVybmFsIHRob3VnaHQgcHJvY2VzczpcblxuKipDb25maWd1cmF0aW9uIERlcGVuZGVuY2llczogQSBRdWljayBSZXZpZXcqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUsIHRoZSBiZWhhdmlvciBoaW5nZXMgb24gdGhlIHByZXNlbmNlIG9mIGBORl9DT05OVFJBQ0tgIGFuZCBgTkVURklMVEVSX0FEVkFOQ0VEYC4gQ2xlYXJseSwgSSdsbCBuZWVkIHRvIG1ha2Ugc3VyZSBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBlbmFibGVkIGluIG15IGNvbmZpZ3MsIHRoYXQncyBhIGdpdmVuLlxuXG5XYWl0IGEgc2Vjb25kLCB0aGVyZSdzIGFub3RoZXIgZGVwZW5kZW5jeSBJIG5lZWQgdG8gZmFjdG9yIGluISBgTkZUX0NPTk5MSU1JVGAgc2VsZWN0cyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEJlc3QgZG91YmxlLWNoZWNrIHRoZSBgTkZUX0NPTk5MSU1JVGAgY29uZmlndXJhdGlvbiBhbG9uZ3NpZGUgdGhlIG90aGVycyB0byBtYWtlIHN1cmUgZXZlcnl0aGluZydzIHByb3Blcmx5IGVuYWJsZWQgYW5kIGFsaWduZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg4MTIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjI4Ljk1NjkyNzAzMVoiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTc4ODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUxMSxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDUxMTpcXHRjb25maWcgTkZUX0NPTk5MSU1JVFxcbiA1MTI6XFx0XFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBuZl90YWJsZXMgY29ubmxpbWl0IG1vZHVsZVxcXCJcXG4gNTEzOlxcdFxcdGRlcGVuZHMgb24gTkZfQ09OTlRSQUNLXFxuIDUxNDpcXHRcXHRkZXBlbmRzIG9uIE5FVEZJTFRFUl9BRFZBTkNFRFxcbiA1MTU6XFx0XFx0c2VsZWN0IE5FVEZJTFRFUl9DT05OQ09VTlRcXG4gNTE2OlxcdFxcdGhlbHBcXG4gNTE3OlxcdFxcdCAgVGhpcyBvcHRpb24gYWRkcyB0aGUgXFxcImNvbm5saW1pdFxcXCIgZXhwcmVzc2lvbiB0aGF0IHlvdSBjYW4gdXNlIHRvXFxuIDUxODpcXHRcXHQgIHJhdGVsaW1pdCBydWxlIG1hdGNoaW5ncyBwZXIgY29ubmVjdGlvbnMuXFxuIDUxOTpcXHRcXG4gNTIwOlxcdGNvbmZpZyBORlRfTE9HXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjI4Ljk1NzA0NjI4MVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo5MDY4NDc2NjA5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gQ2hlY2sqKlxuXG5Pa2F5LCBzbyBJIHNlZSB3ZSdyZSBhbHJlYWR5IHNlbGVjdGluZyBgTkVURklMVEVSX0NPTk5DT1VOVGAuIEdvb2QsIGEgc29saWQgZm91bmRhdGlvbi4gR2l2ZW4gdGhlIG5hdHVyZSBvZiB0aGlzIHBhdGNoLCBhZGRyZXNzaW5nIGEgbWVtb3J5IGxlYWsgaW4gYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMsIEknbSBnb2luZyB0byBhZGQgYE5GVF9DT05OTElNSVRgIGFuZCBgTkVURklMVEVSX0FEVkFOQ0VEYCB0byB0aGUgbWl4LiBUaGVzZSBvcHRpb25zIGFyZSByZWxldmFudCB0byB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBhbmQgbGltaXRpbmcgYXNwZWN0cywgYW5kIGdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGVycm9yIGNvbmRpdGlvbiB3aXRoaW4gT3BlbiB2U3dpdGNoLCB0aGV5J3JlIHByb2JhYmx5IGNyaXRpY2FsIHRvIHRoZSBmdWxsIGZ1bmN0aW9uYWxpdHkgYW5kIHRodXMsIGZ1enppbmcgY2FwYWJpbGl0eS5cblxuVGhlcmVmb3JlLCBteSBmaW5hbCBjb25maWd1cmF0aW9uIGNoZWNrbGlzdCBsb29rcyBsaWtlIHRoaXM6XG5cbiogICBgT1BFTlZTV0lUQ0hgXG4qICAgYE5GX0NPTk5UUkFDS2BcbiogICBgTkVURklMVEVSX0FEVkFOQ0VEYFxuKiAgIGBORlRfQ09OTkxJTUlUYFxuXG5NeSBwcmltYXJ5IGZvY3VzIGhlcmUgaXMgZ29pbmcgdG8gYmUgYG92c19jdF9pbml0YC4gVGhlIHBhdGNoIGRpcmVjdGx5IGFkZHJlc3NlcyBhIGZhaWx1cmUgc2NlbmFyaW8gd2l0aGluIHRoaXMgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZW5jb3VudGVycyBhbiBpc3N1ZS4gVGhpcyBjbGVhcmx5IHBvaW50cyB0byBhbiBlcnJvciBwYXRoIHRoYXQgbmVlZHMgdGhvcm91Z2ggZnV6emluZyBhdHRlbnRpb24uIEl0J3MgdHJpZ2dlcmVkIGJ5IHRoZSBjcmVhdGlvbiBvZiBuZXcgbmV0d29yayBuYW1lc3BhY2VzLCB3aGljaCBtZWFucyB0aGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGtlcm5lbCBhbmQgdGh1cywgYSBnb29kIGNhbmRpZGF0ZSBmb3IgdHJpZ2dlcmluZyB0aGUgZXJyb3IuXG5cbkxldCdzIHF1aWNrbHkgc2NhbiB0aGUgT3BlbiB2U3dpdGNoIGNvbmZpZ3VyYXRpb24gdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55dGhpbmcgb2J2aW91cy4gSSB3YW50IHRvIGJlICphYnNvbHV0ZWx5KiBzdXJlIEkgaGF2ZSBldmVyeXRoaW5nIEkgbmVlZCB0byBlZmZlY3RpdmVseSB0YXJnZXQgdGhpcyBtZW1vcnkgbGVhayBkdXJpbmcgZnV6emluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6OTIxMCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4NSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjM4LjAyNTUyNjk4WiIsIlNlcSI6MjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4NTYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcIm5ldC9vcGVudnN3aXRjaC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYsXG4gIFwiTGluZUNvdW50XCI6IDE1XG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDY6XFx0Y29uZmlnIE9QRU5WU1dJVENIXFxuICAgNzpcXHRcXHR0cmlzdGF0ZSBcXFwiT3BlbiB2U3dpdGNoXFxcIlxcbiAgIDg6XFx0XFx0ZGVwZW5kcyBvbiBJTkVUXFxuICAgOTpcXHRcXHRkZXBlbmRzIG9uICFORl9DT05OVFJBQ0sgfHwgXFxcXFxcbiAgMTA6XFx0XFx0XFx0ICAgKE5GX0NPTk5UUkFDSyBcXHUwMDI2XFx1MDAyNiAoKCFORl9ERUZSQUdfSVBWNiB8fCBORl9ERUZSQUdfSVBWNikgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbiAgMTE6XFx0XFx0XFx0XFx0XFx0ICAgICAoIU5GX05BVCB8fCBORl9OQVQpIFxcdTAwMjZcXHUwMDI2IFxcXFxcXG4gIDEyOlxcdFxcdFxcdFxcdFxcdCAgICAgKCFORVRGSUxURVJfQ09OTkNPVU5UIHx8IE5FVEZJTFRFUl9DT05OQ09VTlQpKSlcXG4gIDEzOlxcdFxcdGRlcGVuZHMgb24gUFNBTVBMRSB8fCAhUFNBTVBMRVxcbiAgMTQ6XFx0XFx0c2VsZWN0IE1QTFNcXG4gIDE1OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuICAxNjpcXHRcXHRzZWxlY3QgTkVUX01QTFNfR1NPXFxuICAxNzpcXHRcXHRzZWxlY3QgRFNUX0NBQ0hFXFxuICAxODpcXHRcXHRzZWxlY3QgTkVUX05TSFxcbiAgMTk6XFx0XFx0c2VsZWN0IE5GX0NPTk5UUkFDS19PVlMgaWYgTkZfQ09OTlRSQUNLXFxuICAyMDpcXHRcXHRzZWxlY3QgTkZfTkFUX09WUyBpZiBORl9OQVRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTc6MzguMDI1NTg2OTRaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTI4Njk4MjMwNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5KipcblxuT2theSwgdGhpcyBoaW5nZXMgb24gYElORVRgLCBzbyB0aGF0J3MgdGhlIGZpcnN0IHRoaW5nIEknbSBhZGRpbmcuIENvbnNpZGVyaW5nIHRoZSBuZWNlc3NhcnkgY29uZmlndXJhdGlvbnMsIEkgc2VlIGEgbmVlZCBmb3IgYE9QRU5WU1dJVENIYCwgYElORVRgLCBuYXR1cmFsbHksIGFsb25nIHdpdGggYE5GX0NPTk5UUkFDS2AsIGBORVRGSUxURVJfQURWQU5DRURgLCBhbmQgYE5GVF9DT05OTElNSVRgLiBXYWl0IGEgc2Vjb25k4oCmIGlkZWFsbHksIHdl4oCZZCBkaXJlY3RseSB0YXJnZXQgYE5FVEZJTFRFUl9DT05OQ09VTlRgLCBidXQgdGhhdCBvbmUgaXNuJ3QgYSBwcm9tcHRhYmxlIG9wdGlvbi4gTm8gcHJvYmxlbSwgYE5GVF9DT05OTElNSVRgIGVmZmVjdGl2ZWx5IGVuYWJsZXMgaXQsIHNvIEknbGwganVzdCBsaXN0IHRoYXQgdG8ga2VlcCB0aGluZ3MgdGlkeS5cblxuSG1tLCBhbnl0aGluZyBlbHNlIGNyaXRpY2FsPyBSaWdodCwgdGhlIHBhdGNoIG1vZGlmaWVzIGBvdnNfY3RfaW5pdGAsIGFuZCB0aGF0IGZ1bmN0aW9uIGlzLCB0aGFua2Z1bGx5LCBub24tc3RhdGljLiBHb29kIG5ld3MuIFRoaXMgZGVmaW5pdGVseSBxdWFsaWZpZXMgYXMgc29tZXRoaW5nIHRoYXQgd2FycmFudHMgZnV6emluZywgc28gSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLlxuXG5BbHJpZ2h0LCBJJ20gcmVhZHkuIExldCdzIGdldCB0aGVzZSByZXN1bHRzIHNldC5cblxuXG4iLCJJbnB1dFRva2VucyI6OTk4MiwiT3V0cHV0VG9rZW5zIjoxNDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0My4zMTI1NzIxNTZaIiwiU2VxIjoyNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MzMwODA5OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiT1BFTlZTV0lUQ0hcIixcbiAgICBcIklORVRcIixcbiAgICBcIk5GX0NPTk5UUkFDS1wiLFxuICAgIFwiTkVURklMVEVSX0FEVkFOQ0VEXCIsXG4gICAgXCJORlRfQ09OTkxJTUlUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwib3ZzX2N0X2luaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIG1lbW9yeSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgd2hlbiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBgb3ZzX2N0X2luaXRgIGlzIGNhbGxlZCBkdXJpbmcgdGhlIGluaXRpYWxpemF0aW9uIG9mIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlIGZvciBPcGVuIHZTd2l0Y2guIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUga2VybmVsIHRoYXQgY2FuIGJlIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhIG5ldyBuZXR3b3JrIG5hbWVzcGFjZS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJPUEVOVlNXSVRDSFwiLFxuICAgIFwiSU5FVFwiLFxuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIixcbiAgICBcIk5GVF9DT05OTElNSVRcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJvdnNfY3RfaW5pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgaW4gdGhlIGVycm9yIHBhdGggb2YgYG92c19jdF9pbml0YCB3aGVuIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIGBvdnNfY3RfaW5pdGAgaXMgY2FsbGVkIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgbmV0d29yayBuYW1lc3BhY2UgZm9yIE9wZW4gdlN3aXRjaC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBrZXJuZWwgdGhhdCBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGNyZWF0aW5nIGEgbmV3IG5ldHdvcmsgbmFtZXNwYWNlLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0My4zOTU4ODg1NDZaIiwiU2VxIjoyNywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODQ5MjYxNjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xNFQxNDo1Nzo0My4zOTY1MTQ2ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6ImFnZW50IiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Njk4NDI5NTgyOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgYnkgY2FsbGluZyBgbmZfY29ubmxhYmVsc19wdXRgIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIFRoaXMgaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0b3JzIChrbWVtbGVhaykgYXJlIHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGNlYmQyZTVkOGI0MTgzOTBmOTQ3M2Y4YTU2MDU2YThiMzI3M2FmMmZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEF1ZyAxNCAxNDo1MDo1OCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suYyBiL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuaW5kZXggOTU2OTdkNGUxNmU2NC4uZmJhYTY3NzE0NDE0MyAxMDA2NDRcbi0tLSBhL25ldC9vcGVudnN3aXRjaC9jb25udHJhY2suY1xuKysrIGIvbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jXG5AQCAtMjAwMSw2ICsyMDAxLDkgQEAgaW50IG92c19jdF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbiB7XG4gXHR1bnNpZ25lZCBpbnQgbl9iaXRzID0gc2l6ZW9mKHN0cnVjdCBvdnNfa2V5X2N0X2xhYmVscykgKiBCSVRTX1BFUl9CWVRFO1xuIFx0c3RydWN0IG92c19uZXQgKm92c19uZXQgPSBuZXRfZ2VuZXJpYyhuZXQsIG92c19uZXRfaWQpO1xuKyNpZlx0SVNfRU5BQkxFRChDT05GSUdfTkVURklMVEVSX0NPTk5DT1VOVClcbitcdGludCBlcnI7XG4rI2VuZGlmXG4gXG4gXHRpZiAobmZfY29ubmxhYmVsc19nZXQobmV0LCBuX2JpdHMgLSAxKSkge1xuIFx0XHRvdnNfbmV0LVx1MDAzZXh0X2xhYmVsID0gZmFsc2U7XG5AQCAtMjAxMCw3ICsyMDEzLDEwIEBAIGludCBvdnNfY3RfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXG4gXHR9XG4gXG4gI2lmXHRJU19FTkFCTEVEKENPTkZJR19ORVRGSUxURVJfQ09OTkNPVU5UKVxuLVx0cmV0dXJuIG92c19jdF9saW1pdF9pbml0KG5ldCwgb3ZzX25ldCk7XG4rXHRlcnIgPSBvdnNfY3RfbGltaXRfaW5pdChuZXQsIG92c19uZXQpO1xuK1x0aWYgKGVyciBcdTAwMjZcdTAwMjYgb3ZzX25ldC1cdTAwM2V4dF9sYWJlbClcbitcdFx0bmZfY29ubmxhYmVsc19wdXQobmV0KTtcbitcdHJldHVybiBlcnI7XG4gI2Vsc2VcbiBcdHJldHVybiAwO1xuICNlbmRpZlxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTRUMTQ6NTc6NDMuMzk2NTE3Mzk2WiIsIlNlcSI6MjksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5ODQyNjY5MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIE9wZW4gdlN3aXRjaCBDb25udHJhY2sgUGF0Y2gqKlxuXG5Pa2F5LCBsZXQncyBicmVhayB0aGlzIGRvd24uIFRoZSBwYXRjaCBpcyB0b3VjaGluZyBgb3ZzX2N0X2luaXRgIHdpdGhpbiBgbmV0L29wZW52c3dpdGNoL2Nvbm50cmFjay5jYC4gTXkgaW5pdGlhbCByZWFkIGluZGljYXRlcyBpdCdzIGFkZGluZyBzb21lIG11Y2gtbmVlZGVkIGVycm9yIGhhbmRsaW5nIGFyb3VuZCBgb3ZzX2N0X2xpbWl0X2luaXRgLiBUaGUgbG9naWMgc2VlbXMgc3RyYWlnaHRmb3J3YXJkOiBpZiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzIGFuZCB0aGlzIGBvdnNfbmV0LVx1MDAzZXh0X2xhYmVsYCBmbGFnIGlzIHNldCwgdGhlbiB3ZSBjYWxsIGBuZl9jb25ubGFiZWxzX3B1dChuZXQpYC5cblxuSW1tZWRpYXRlbHksIEkgc2VlIHRoaXMgYXMgYSByZXNvdXJjZSBsZWFrIHByZXZlbnRpb24gbWVhc3VyZS4gV2UgYXJlIGNsZWFuaW5nIHVwIHBvdGVudGlhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgb24gYW4gZXJyb3IgcGF0aC4gVGhlIGNvZGUgaXMgc3RydWN0dXJlZCBpbiBzdWNoIGEgd2F5IHRoYXQgaXQgZG9lcyBub3Qgc2VlbSB0byBwcmVzZW50IGEgcmlzayBvZiByZWFkaW5nIG9yIHdyaXRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIEl0IGlzIHB1cmVseSBhbiBlcnJvciBwYXRoIGNsZWFudXAuIE5vIGNvbmNlcm5zIHJlZ2FyZGluZyB1bmluaXRpYWxpemVkIG1lbW9yeSBoZXJlLlxuXG5HaXZlbiB0aGlzIHVuZGVyc3RhbmRpbmcsIEknbSBjb25maWRlbnQgdGhhdCB0aGlzIGlzIGEgc3RyYWlnaHRmb3J3YXJkIHJlc291cmNlIGxlYWsgZml4LiBObyBmdXJ0aGVyIGludmVzdGlnYXRpb24gaW50byBtZW1vcnkgc2FmZXR5IGlzIHJlcXVpcmVkLiBJJ2xsIGZsYWcgdGhpcyBhcyBzdWNoLiBUaGVyZWZvcmUgSSB3aWxsIHNldCBOZWVkc0tNU0FOPWZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTY0LCJPdXRwdXRUb2tlbnMiOjEyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ1MSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE0VDE0OjU3OjUwLjM4MDc4NjUxNVoiLCJTZXEiOjMwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMTMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSByZXNvdXJjZSBsZWFrIGluIHRoZSBlcnJvciBwYXRoIG9mIGBvdnNfY3RfaW5pdGAgYnkgY2FsbGluZyBgbmZfY29ubmxhYmVsc19wdXRgIGlmIGBvdnNfY3RfbGltaXRfaW5pdGAgZmFpbHMuIFRoaXMgaXMgcmVsYXRlZCB0byByZXNvdXJjZSBtYW5hZ2VtZW50IGFuZCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IG5ldyBkYXRhIHN0cnVjdHVyZXMsIG1lbW9yeSBhbGxvY2F0aW9ucywgb3IgbG9naWMgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkgdG8gdXNlciBzcGFjZSBvciB1c2UgaXQgaW4gY29udHJvbCBmbG93LiBTdGFuZGFyZCBLQVNBTiBhbmQgbWVtb3J5IGxlYWsgZGV0ZWN0b3JzIChrbWVtbGVhaykgYXJlIHN1ZmZpY2llbnQgZm9yIGNhdGNoaW5nIGlzc3VlcyByZWxhdGVkIHRvIHRoaXMgY2hhbmdlLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcmVzb3VyY2UgbGVhayBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgb3ZzX2N0X2luaXRgIGJ5IGNhbGxpbmcgYG5mX2Nvbm5sYWJlbHNfcHV0YCBpZiBgb3ZzX2N0X2xpbWl0X2luaXRgIGZhaWxzLiBUaGlzIGlzIHJlbGF0ZWQgdG8gcmVzb3VyY2UgbWFuYWdlbWVudCBhbmQgZG9lcyBub3QgaW50cm9kdWNlIGFueSBuZXcgZGF0YSBzdHJ1Y3R1cmVzLCBtZW1vcnkgYWxsb2NhdGlvbnMsIG9yIGxvZ2ljIHRoYXQgY291bGQgZXhwb3NlIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHRvIHVzZXIgc3BhY2Ugb3IgdXNlIGl0IGluIGNvbnRyb2wgZmxvdy4gU3RhbmRhcmQgS0FTQU4gYW5kIG1lbW9yeSBsZWFrIGRldGVjdG9ycyAoa21lbWxlYWspIGFyZSBzdWZmaWNpZW50IGZvciBjYXRjaGluZyBpc3N1ZXMgcmVsYXRlZCB0byB0aGlzIGNoYW5nZS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[1] Phase: Succeeded StartedAt: 2026-08-14 14:58:01 +0000 UTC FinishedAt: 2026-08-14 14:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-14 14:58:01 +0000 UTC FinishedAt: 2026-08-14 14:58:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2] Phase: Succeeded StartedAt: 2026-08-14 14:58:01 +0000 UTC FinishedAt: 2026-08-14 18:55:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-14 14:58:01 +0000 UTC FinishedAt: 2026-08-14 18:55:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-14 14:58:01 +0000 UTC FinishedAt: 2026-08-14 14:58:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-14 14:58:01 +0000 UTC FinishedAt: 2026-08-14 14:58:06 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgw7s5/series-workflowgw7s5-convert-artifact-1727956774/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-14 14:58:12 +0000 UTC FinishedAt: 2026-08-14 15:19:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-14 14:58:12 +0000 UTC FinishedAt: 2026-08-14 15:19:13 +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:*62561a25-12b4-4f87-879b-c8f9468b2d44,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-workflowgw7s5/series-workflowgw7s5-convert-artifact-1727956774/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": "ba718085-98e5-478e-91a8-3e2c2ea55fa3", "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-workflowgw7s5/series-workflowgw7s5-build-action-2563024828/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-14 14:58:12 +0000 UTC FinishedAt: 2026-08-14 15:18:47 +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:*62561a25-12b4-4f87-879b-c8f9468b2d44,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-workflowgw7s5/series-workflowgw7s5-convert-artifact-1727956774/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": "ba718085-98e5-478e-91a8-3e2c2ea55fa3", "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-workflowgw7s5/series-workflowgw7s5-build-action-2563024828/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-14 15:19:13 +0000 UTC FinishedAt: 2026-08-14 15:19:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-14 15:19:13 +0000 UTC FinishedAt: 2026-08-14 15:19:13 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-14 15:19:13 +0000 UTC FinishedAt: 2026-08-14 15:19:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-14 15:19:13 +0000 UTC FinishedAt: 2026-08-14 15:19:19 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgw7s5/series-workflowgw7s5-convert-artifact-2241645689/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-14 15:19:27 +0000 UTC FinishedAt: 2026-08-14 15:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-14 15:19:27 +0000 UTC FinishedAt: 2026-08-14 15:21:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba718085-98e5-478e-91a8-3e2c2ea55fa3,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-workflowgw7s5/series-workflowgw7s5-build-action-2563024828/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-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-14 15:21:25 +0000 UTC FinishedAt: 2026-08-14 15:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-14 15:21:25 +0000 UTC FinishedAt: 2026-08-14 15:21:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-14 15:21:25 +0000 UTC FinishedAt: 2026-08-14 15:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-14 15:21:25 +0000 UTC FinishedAt: 2026-08-14 15:49:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*62561a25-12b4-4f87-879b-c8f9468b2d44,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-workflowgw7s5/series-workflowgw7s5-convert-artifact-2241645689/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": "6e545424-3811-440e-b890-d676eb1fdeb1", "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-workflowgw7s5/series-workflowgw7s5-build-action-1224248917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-14 15:21:25 +0000 UTC FinishedAt: 2026-08-14 15:48:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*62561a25-12b4-4f87-879b-c8f9468b2d44,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-workflowgw7s5/series-workflowgw7s5-convert-artifact-2241645689/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": "6e545424-3811-440e-b890-d676eb1fdeb1", "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-workflowgw7s5/series-workflowgw7s5-build-action-1224248917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-14 15:49:02 +0000 UTC FinishedAt: 2026-08-14 15:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-14 15:49:02 +0000 UTC FinishedAt: 2026-08-14 15:49:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-14 15:49:02 +0000 UTC FinishedAt: 2026-08-14 15:51:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-14 15:49:02 +0000 UTC FinishedAt: 2026-08-14 15:50:39 +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:*6e545424-3811-440e-b890-d676eb1fdeb1,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-workflowgw7s5/series-workflowgw7s5-build-action-1224248917/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-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-14 15:51:11 +0000 UTC FinishedAt: 2026-08-14 18:55:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-14 15:51:11 +0000 UTC FinishedAt: 2026-08-14 15:51:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-14 15:51:11 +0000 UTC FinishedAt: 2026-08-14 15:51:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-14 15:51:12 +0000 UTC FinishedAt: 2026-08-14 18:55:03 +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":["ovs_ct_init"],"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:*ba718085-98e5-478e-91a8-3e2c2ea55fa3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e545424-3811-440e-b890-d676eb1fdeb1,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-workflowgw7s5/series-workflowgw7s5-build-action-2563024828/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-workflowgw7s5/series-workflowgw7s5-build-action-1224248917/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-14 15:51:12 +0000 UTC FinishedAt: 2026-08-14 15:51:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-14 15:51:12 +0000 UTC FinishedAt: 2026-08-14 15:51:24 +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":["ovs_ct_init"],"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-workflowgw7s5/series-workflowgw7s5-convert-artifact-2081946350/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-14 15:51:12 +0000 UTC FinishedAt: 2026-08-14 15:51:12 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-14 15:51:42 +0000 UTC FinishedAt: 2026-08-14 18:55:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgw7s5[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ovs_ct_init"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"24ef02f934eeb48830cff6b739abc3c62b1d107b","config_name":"upstream-apparmor-kasan.config","enable_configs":["OPENVSWITCH","INET","NF_CONNTRACK","NETFILTER_ADVANCED","NFT_CONNLIMIT"],"series_id":"d8c480e8-da2a-4843-b015-f40fe74ffd3c","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-14 15:51:42 +0000 UTC FinishedAt: 2026-08-14 18:54:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*ba718085-98e5-478e-91a8-3e2c2ea55fa3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*6e545424-3811-440e-b890-d676eb1fdeb1,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-workflowgw7s5/series-workflowgw7s5-build-action-2563024828/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-workflowgw7s5/series-workflowgw7s5-build-action-1224248917/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-workflowgw7s5/series-workflowgw7s5-convert-artifact-2081946350/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,}