Name: series-workflow7t6g9 Phase: Succeeded StartedAt: 2026-08-23 13:11:37 +0000 UTC FinishedAt: 2026-08-23 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[0] Phase: Succeeded StartedAt: 2026-08-23 13:11:37 +0000 UTC FinishedAt: 2026-08-23 13:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[0].run-triage Phase: Succeeded StartedAt: 2026-08-23 13:11:37 +0000 UTC FinishedAt: 2026-08-23 13:14:33 +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": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "e4bc8956-86f6-47ff-822f-a51365ac1c69" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_process_asconf_ack", "sctp_sf_do_asconf_ack" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMDkwMTU2YTJiZTVmZTI0ZjdlOGQ4OGYwNTBhM2ZmYmM5ZmI1NDA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMjMgMTM6MTM6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5pbmRleCAyMzZlMjVhYmM3YTQyLi42ZjU1MjU4Y2YyY2ZiIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbkBAIC0zNDYwLDggJiM0MzszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuIFx0XHR9XG4gXG4gXHRcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XG4tXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgbGVuZ3RoO1xuLVx0XHRhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7XG4mIzQzO1x0XHRpZiAobGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKVxuJiM0MztcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4mIzQzO1x0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICYjNDM7IFNDVFBfUEFENChsZW5ndGgpO1xuJiM0MztcdFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyX2NvZGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjA5MDE1NmEyYmU1ZmUyNGY3ZThkODhmMDUwYTNmZmJjOWZiNTQwOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIzIDEzOjEzOjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCmluZGV4IDIzNmUyNWFiYzdhNDIuLjZmNTUyNThjZjJjZmIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTM0NjAsOCAmIzQzOzM0NjAsMTAgQEAgc3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssCiAJCX0KIAogCQlsZW5ndGggPSBudG9ocyhhc2NvbmZfYWNrX3BhcmFtLSZndDtwYXJhbV9oZHIubGVuZ3RoKTsKLQkJYXNjb25mX2Fja19wYXJhbSA9ICh2b2lkICopYXNjb25mX2Fja19wYXJhbSAmIzQzOyBsZW5ndGg7Ci0JCWFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDsKJiM0MzsJCWlmIChsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKQomIzQzOwkJCXJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTsKJiM0MzsJCWFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgU0NUUF9QQUQ0KGxlbmd0aCk7CiYjNDM7CQlhc2NvbmZfYWNrX2xlbiAtPSBTQ1RQX1BBRDQobGVuZ3RoKTsKIAl9CiAKIAlyZXR1cm4gZXJyX2NvZGU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIG1vZGlmeWluZyBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYC4gTG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGZvciB0aGUgbGVuZ3RoIG9mIHNvbWV0aGluZywgc3BlY2lmaWNhbGx5IGBsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpYC4gVGhlIGNoYW5nZSBpcyB1c2luZyBgU0NUUF9QQUQ0KGxlbmd0aClgIGluc3RlYWQgb2YganVzdCBgbGVuZ3RoYCB3aGVuIHRoZXkmIzM5O3JlIHVwZGF0aW5nIHRoZSBgYXNjb25mX2Fja19wYXJhbWAgcG9pbnRlciBhbmQgZGVjcmVtZW50aW5nIGBhc2NvbmZfYWNrX2xlbmAuIEZyb20gYSBuZXR3b3JraW5nIHBlcnNwZWN0aXZlLCBhbmQgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIGhvdyB0aGUgU0NUUCBzdGFjayBpcyBoYW5kbGluZyBBU0NPTkYgQUNLIGNodW5rcy4gQ3JpdGljYWxseSwgaXQgbG9va3MgbGlrZSBhIHBvdGVudGlhbCBhcmVhIGZvciB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIHRocm93aW5nIHNvbWUgZnV6emluZyBhdC4gSSBjYW4gc2VlIGEgcG90ZW50aWFsIGZvciBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgYmVpbmcgdHJpZ2dlcmVkIGhlcmUuCgpOb3csIGxldCBtZSBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaG93IHRoZSBmdW5jdGlvbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBpcyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBJJiMzOTtsbCBkbyBhIGdyZXAgc2VhcmNoIGZvciBpdC4gQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgU0NUUCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBhbmQgaXRzIGJlaGF2aW9yLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmFiaWxpdHkgd2lsbCBiZSBrZXkgdG8gY3JlYXRpbmcgZWZmZWN0aXZlIGZ1enppbmcgaGFybmVzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfZ2V0X2FzY29uZl9yZXNwb25zZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzM1Nj1zdGF0aWMgdm9pZCBzY3RwX2FzY29uZl9wYXJhbV9zdWNjZXNzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNDE2LSAqL1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjM0MTc6c3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxOC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbSAqYXNjb25mX3BhcmFtLFxuLS1cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zNDczPWludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzUxMi1cdFx0ZWxzZSB7XG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzUxMzpcdFx0XHRlcnJfY29kZSA9IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShhc2NvbmZfYWNrLFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM1MTQtXHRcdFx0XHRcdFx0XHQgICAgYXNjb25mX3BhcmFtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBU0NPTkYgUmVzcG9uc2UgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgbWVhbnMgaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCBsaW1pdHMgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGV4dGVybmFsIG1vZGlmaWNhdGlvbiwgd2hpY2ggaXMgYSBrZXkgZGVzaWduIGNob2ljZS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNhbGxzIGl0LiBUaGUgdGV4dCBtZW50aW9ucyBpdCBpcyBjYWxsZWQgYnkgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3by4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0byB1bmRlcnN0YW5kIHdoZXRoZXIgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpcyB2aXNpYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBTQ1RQIHN0YWNrIG9yIGlmIGl0IGlzIGFsc28gc3RhdGljIG9yIG9ubHkgYWNjZXNzaWJsZSBpbiB0aGlzIG1vZHVsZS4gSWYgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpcyBhbHNvIHN0YXRpYywgdGhlbiB0aGF0IG5hcnJvd3MgZG93biB0aGUgY29udGV4dCBmdXJ0aGVyLCBpbXBseWluZyBhIHRpZ2h0bHkgY291cGxlZCBpbnRlcm5hbCBtZWNoYW5pc20uIElmIGBzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja2AgaXMgZXhwb3J0ZWQsIHRoYXQgc3VnZ2VzdHMgYSBicm9hZGVyIGludGVyYWN0aW9uIHBvaW50IHdpdGhpbiB0aGUgU0NUUCBwcm90b2NvbCBoYW5kbGluZywgb3IgcG9zc2libHkgZXZlbiB0aGUgdXNlciBzcGFjZS4gSSYjMzk7bGwgbmVlZCB0byBnbyBhbmQgZXhhbWluZSB0aGF0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG5vdyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfcHJvY2Vzc19hc2NvbmZfYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zNDE3PXN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuLS1cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNDcyLS8qIFByb2Nlc3MgYW4gaW5jb21pbmcgQVNDT05GX0FDSyBjaHVuayBhZ2FpbnN0IHRoZSBjYWNoZWQgbGFzdCBBU0NPTkYgY2h1bmsuICovXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzQ3MzppbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQ3NC1cdFx0XHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDA1NT1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19hc2NvbmZfYWNrKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MTM5LVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NDE0MDpcdFx0aWYgKCFzY3RwX3Byb2Nlc3NfYXNjb25mX2Fjaygoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jLFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDE0MS1cdFx0XHRcdFx0ICAgICBhc2NvbmZfYWNrKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqU0NUUCBBU0NPTkYgQUNLIFByb2Nlc3Npbmcg4oCTIEEgUXVpY2sgQ2hlY2sqKgoKT2theSwgc28gYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhcyBzb21ldGhpbmcgdG8gY29uc2lkZXIgd2hlbiByZXZpZXdpbmcgaXRzIHVzZSBhbmQgc2NvcGUuIE5vbi1zdGF0aWMgaW1wbGllcyBpdCYjMzk7cyBlaXRoZXIgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZSwgb3IgYXQgbGVhc3QgdmlzaWJsZSBiZXlvbmQgaXRzIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggcmFpc2VzIHRoZSB1c3VhbCBxdWVzdGlvbnMgYWJvdXQgcG90ZW50aWFsIHJlLWVudHJhbmN5IGlzc3VlcywgZ2xvYmFsIHN0YXRlLCBhbmQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBkaXZlIGludG8gYW55IHNwZWNpZmljIGNvZGUsIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGNvbmZpcm1pbmcgdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBwdWxsIHVwIHRoZSBLY29uZmlnIGZvciBTQ1RQIOKAkyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBhbmQgY29tcGlsYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcGF0aHMgaXQmIzM5O3MgaW52b2x2ZWQgaW4gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBiZWZvcmUgSSBzdGFydCB0cmFjaW5nIHRoZSBjb2RlIGl0c2VsZi4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoaXMgZnVuY3Rpb24mIzM5O3MgdHlwaWNhbCBkZXBsb3ltZW50IHNjZW5hcmlvcyBhbmQgaG93IGl0cyBhdmFpbGFiaWxpdHkgaXMgY29udHJvbGxlZC4gR290dGEgZXN0YWJsaXNoIHRoZSBiYXNlbGluZSBiZWZvcmUgZGlnZ2luZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZy01LVxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxubmV0L3NjdHAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7VGhlIFNDVFAgUHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrIGFuZCBEZXBlbmRlbmN5IFNjYW4qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIGBJUF9TQ1RQYC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBJIHNob3VsZCBwcm9iYWJseSBkbyBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgb3IgcmVsYXRlZCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgYElQX1NDVFBgIGJlaGF2ZXMuIEl0JiMzOTtzIHNlY29uZCBuYXR1cmUgZm9yIG1lIHRvIHRoaW5rIGhvbGlzdGljYWxseSwgc28gSSYjMzk7bGwgcXVpY2tseSBzY2FuIG15IG1lbnRhbCBkYXRhYmFzZSBmb3IgcmVsYXRlZCBjb21wb25lbnRzLCBwcm90b2NvbHMsIG9yIG1vZHVsZXMuIE1ha2luZyBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhlIGVudGlyZSBzeXN0ZW0gd2lsbCBwYXkgZGl2aWRlbmRzIGRvd24gdGhlIGxpbmUuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgbXkgY3VycmVudCB0YXNrIGFuZCBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgaXQgbWF5IGNhdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBTQ1RQIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBJUF9TQ1RQXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG4gIDEwOlx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEEyNTZcbiAgMTE6XHRcdHNlbGVjdCBDUllQVE9fTElCX1VUSUxTXG4gIDEyOlx0XHRzZWxlY3QgTkVUX0NSQzMyQ1xuICAxMzpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbFxuICAxNjpcdFxuICAxNzpcdFx0ICBGcm9tIFJGQyAyOTYwIFx1MDAzY2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI5NjAudHh0XHUwMDNlLlxuICAxODpcdFxuICAxOTpcdFx0ICBcJiMzNDtTQ1RQIGlzIGEgcmVsaWFibGUgdHJhbnNwb3J0IHByb3RvY29sIG9wZXJhdGluZyBvbiB0b3Agb2YgYVxuICAyMDpcdFx0ICBjb25uZWN0aW9ubGVzcyBwYWNrZXQgbmV0d29yayBzdWNoIGFzIElQLiAgSXQgb2ZmZXJzIHRoZSBmb2xsb3dpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nOgoKKipFeGFtaW5pbmcgdGhlIFNDVFAgQVNDT05GIEFDSyBQcm9jZXNzaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIFNDVFAgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYElQX1NDVFBgIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciB0aGF0LiBNeSBmb2N1cyBpcyBuYXJyb3dpbmcgaW4gb24gaG93IHRoZSBBU0NPTkYgQUNLIGlzIHByb2Nlc3NlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmdW5jdGlvbnMgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBhbmQgYHNjdHBfc2ZfZG9fYXNjb25mX2Fja2AuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCB0aGUgbmF0dXJlIG9mIGBzY3RwX3NmX2RvX2FzY29uZl9hY2tgLiBNeSBmaXJzdCBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/IFRoYXQga25vd2xlZGdlIHdpbGwgZ3JlYXRseSBpbmZvcm0gaG93IGl0JiMzOTtzIHVzZWQgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHZpc2liaWxpdHkgd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDAyNz1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2VuZF9uZXh0X2FzY29uZihcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MDU0LSAqL1xubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NDA1NTplbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19hc2NvbmZfYWNrKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQwNTYtXHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4tLVxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jPTM4Mz1jaHVua19ldmVudF90YWJsZVtTQ1RQX05VTV9CQVNFX0NIVU5LX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy00MjctXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NDI4Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9kb19hc2NvbmZfYWNrKSwgXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy00MjktXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcgKi8gXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo0MzA6XHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2RvX2FzY29uZl9hY2spLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQzMS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzMjpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fYXNjb25mX2FjayksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNDMzLVx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzNDpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fYXNjb25mX2FjayksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNDM1LVx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCAqLyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg5CgkJCQkJCQlvdXRwdXQ6IDEyMwoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIEFTQ09ORiBBQ0sgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBwYXRjaC4gRmlyc3QsIGl0JiMzOTtzIGRlZmluaXRlbHkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCBub3QgYSBzdGF0aWMgY29uZGl0aW9uLiBUaGUga2V5IGZ1bmN0aW9ucyB0YXJnZXRlZCBhcmUgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBhbmQgYHNjdHBfc2ZfZG9fYXNjb25mX2Fja2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmb2N1cyBwb2ludHMgZm9yIG15IGFuYWx5c2lzLgoKVGhlIG1haW4gZ2lzdCBzZWVtcyB0byBiZSBmaXhpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb3IgZXZlbiBhbiBpbmZpbml0ZSBsb29wIHdpdGhpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYC4gVGhpcyBpcyB0cmlnZ2VyZWQgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgdGhhdCBoYXMgcGFyYW1ldGVycyB3aXRoIGluY29ycmVjdCBsZW5ndGhzLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgaXRzZWxmLCBtYWtpbmcgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlJiMzOTt2ZSBnb3QgdG8gYnJlYWsgaXQsIGZpbmQgd2hlcmUgaXQgZmFpbHMhCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBidXQgYElQX1NDVFBgIGxvb2tzIGxpa2UgYSBrZXkgb25lIHRvIHdhdGNoLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrLCBidXQgYElORVRgIGlzIHVzdWFsbHkgYSBnaXZlbi4gTm93LCBpdCYjMzk7cyB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfcHJvY2Vzc19hc2NvbmZfYWNrJiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZG9fYXNjb25mX2FjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIHBhcnNpbmcgaW5jb21pbmcgU0NUUCBBU0NPTkZfQUNLIGNodW5rcyBmcm9tIHRoZSBuZXR3b3JrLiBUaGUgcHJldmlvdXMgY29kZSBsYWNrZWQgYSBtaW5pbXVtIGxlbmd0aCBjaGVjayBhbmQgZGlkIG5vdCBwcm9wZXJseSBwYWQgdGhlIGxlbmd0aCB3aGVuIGFkdmFuY2luZyB0aGUgcGFyYW1ldGVyIHBvaW50ZXIgKGBhc2NvbmZfYWNrX3BhcmFtYCkgYW5kIGRlY3JlbWVudGluZyB0aGUgcmVtYWluaW5nIGxlbmd0aCAoYGFzY29uZl9hY2tfbGVuYCkuIFRoaXMgY291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wIChpZiBsZW5ndGggaXMgMCkgb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9mIHRoZSBzb2NrZXQgYnVmZmVyIChza2IpIGRhdGEuIFNpbmNlIHRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldCwgdGhlcmUgaXMgbm8gcmlzayBvZiByZWFkaW5nIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSBvciBsZWFraW5nIGl0IHRvIHVzZXIgc3BhY2UuIE91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIGluZmluaXRlIGxvb3BzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGZ1enppbmcgdGltZW91dHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIwOTAxNTZhMmJlNWZlMjRmN2U4ZDg4ZjA1MGEzZmZiYzlmYjU0MDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCAyMzZlMjVhYmM3YTQyLi42ZjU1MjU4Y2YyY2ZiIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCkBAIC0zNDYwLDggJiM0MzszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLAogCQl9CiAKIAkJbGVuZ3RoID0gbnRvaHMoYXNjb25mX2Fja19wYXJhbS0mZ3Q7cGFyYW1faGRyLmxlbmd0aCk7Ci0JCWFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgbGVuZ3RoOwotCQlhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7CiYjNDM7CQlpZiAobGVuZ3RoICZsdDsgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkKJiM0MzsJCQlyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07CiYjNDM7CQlhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICYjNDM7IFNDVFBfUEFENChsZW5ndGgpOwomIzQzOwkJYXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7CiAJfQogCiAJcmV0dXJuIGVycl9jb2RlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTQ1RQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhZGRpdGlvbiBvZiBhIGxlbmd0aCBjaGVjazogYGlmIChsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKWAgYW5kIGEgcmV0dXJuIG9mIGBTQ1RQX0VSUk9SX0lOVl9QQVJBTWAgaWYgaXQmIzM5O3MgdHJ1ZS4gTWFrZXMgc2Vuc2U7IHlvdSBkb24mIzM5O3Qgd2FudCB0byBiZSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBhIGJ1ZmZlciwgYW5kIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aCBpcyBhIGdvb2QgcmVhc29uIHRvIHNpZ25hbCBhbiBlcnJvci4KClRoZSBzZWNvbmQgcGFydCBpcyBtb3JlIGludGVyZXN0aW5nLiBJdCYjMzk7cyBjaGFuZ2luZyBob3cgdGhlIGBhc2NvbmZfYWNrX3BhcmFtYCBhbmQgYGFzY29uZl9hY2tfbGVuYCBwb2ludGVycyBhcmUgYWR2YW5jZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBqdXN0IGFkZGluZyB0aGUgbGVuZ3RoLCBidXQgdGhlIHVwZGF0ZWQgdmVyc2lvbiBub3cgdXNlcyBgU0NUUF9QQUQ0KGxlbmd0aClgLiBDbGVhcmx5LCBpdCYjMzk7cyBhYm91dCBhbGlnbm1lbnQuIEFkZGluZyB0aGUgcGFkZGluZyBsaWtlbHkgZW5zdXJlcyB0aGF0IHRoZSBwYXJhbWV0ZXJzIGFyZSA0LWJ5dGUgYWxpZ25lZCwgd2hpY2ggaXMgY29tbW9uIGluIG5ldHdvcmsgcHJvdG9jb2xzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBvciBwb3NzaWJseSBldmVuIHJlcXVpcmVkIGJ5IHRoZSBoYXJkd2FyZS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgU0NUUF9QQUQ0YCB0byBiZSBzdXJlLgoKVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzLCBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0LiBMZXQmIzM5O3MgdXNlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBmaW5kIGFsbCB0aGUgaW5zdGFuY2VzIG9mIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBTZWVpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUgd2lsbCBkZWZpbml0ZWx5IGhlbHAgY2xhcmlmeSB3aHkgdGhlc2UgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIENvbnRleHQgaXMga2luZywgYXMgYWx3YXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTMzNTY9c3RhdGljIHZvaWQgc2N0cF9hc2NvbmZfcGFyYW1fc3VjY2VzcyhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxNi0gKi9cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYzozNDE3OnN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM0MTgtXHRcdFx0XHQgICAgICAgc3RydWN0IHNjdHBfYWRkaXBfcGFyYW0gKmFzY29uZl9wYXJhbSxcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzQ3Mz1pbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM1MTItXHRcdGVsc2Uge1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjM1MTM6XHRcdFx0ZXJyX2NvZGUgPSBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2UoYXNjb25mX2Fjayxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNTE0LVx0XHRcdFx0XHRcdFx0ICAgIGFzY29uZl9wYXJhbSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24sIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLCBsb2NhdGVkIGluIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgLiBJJiMzOTttIGN1cmlvdXMgdG8gc2VlIGhvdyB0aGUgU0NUUCBzdGFjayBoYW5kbGVzIHRoZSBnZW5lcmF0aW9uIG9mIGFuIEFTQ09ORiByZXNwb25zZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGNydWNpYWwgcGllY2UgaW4gdGhlIGFkYXB0YXRpb24gbGF5ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggYXNzb2NpYXRpb24gY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgc3RhdGUgbWFjaGluZSBsb2dpYyBpbnRlcmFjdHMgaGVyZS4gSSBhbnRpY2lwYXRlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgY3JhZnRpbmcgdGhlIGFwcHJvcHJpYXRlIGNodW5rLCBkZXRlcm1pbmluZyB3aGF0IGluZm9ybWF0aW9uIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGJhc2VkIG9uIHRoZSBjb250ZXh0IG9mIHRoZSByZXF1ZXN0ZWQgY2hhbmdlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBsb2dpYyB0aGF0IGRldGVybWluZXMgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBpdCByZXNwb25kcyB0byBkaWZmZXJlbnQgdHlwZXMgb2YgYXNzb2NpYXRpb24gY2hhbmdlIHJlcXVlc3RzOiBwZXJoYXBzIGFkZHJlc3MgYWRkaXRpb24gb3IgZGVsZXRpb24sIHBhcmFtZXRlciBuZWdvdGlhdGlvbiwgb3IgZXZlbiBhZGFwdGF0aW9uIGxheWVyIHBhcmFtZXRlcnMuIEkmIzM5O2xsIGJlIGZvY3VzZWQgb24gaG93IGl0IGNvbnN0cnVjdHMgdGhlIEFTQ09ORiBjaHVuaywgc2V0dGluZyB0aGUgZmxhZ3MgYW5kIHBhcmFtZXRlcnMgY29ycmVjdGx5LCBhbmQgd2hhdCBzb3J0IG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkLiBJJiMzOTttIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgaXQgbGV2ZXJhZ2VzIG90aGVyIGludGVybmFsIFNDVFAgZnVuY3Rpb25zIGZvciBidWlsZGluZyB0aGUgY2h1bmsgaXRzZWxmLCBsaWtlIHBheWxvYWQgZW5jb2RpbmcgYW5kIGxlbmd0aCBjYWxjdWxhdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbG9vayBmb3Igc3BlY2lmaWMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFRDQiBhbmQgd2hpY2ggZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGZvciB0aGUgYWN0dWFsIGNodW5rIGNvbnN0cnVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDE3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM0MTc6XHRzdGF0aWMgX19iZTE2IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mX2FjayxcbjM0MTg6XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbSAqYXNjb25mX3BhcmFtLFxuMzQxOTpcdFx0XHRcdFx0ICAgICAgIGludCBub19lcnIpXG4zNDIwOlx0e1xuMzQyMTpcdFx0c3RydWN0IHNjdHBfYWRkaXBfcGFyYW1cdCphc2NvbmZfYWNrX3BhcmFtO1xuMzQyMjpcdFx0c3RydWN0IHNjdHBfZXJyaGRyICplcnJfcGFyYW07XG4zNDIzOlx0XHRpbnQgYXNjb25mX2Fja19sZW47XG4zNDI0Olx0XHRfX2JlMTYgZXJyX2NvZGU7XG4zNDI1Olx0XHRpbnQgbGVuZ3RoO1xuMzQyNjpcdFxuMzQyNzpcdFx0aWYgKG5vX2VycilcbjM0Mjg6XHRcdFx0ZXJyX2NvZGUgPSBTQ1RQX0VSUk9SX05PX0VSUk9SO1xuMzQyOTpcdFx0ZWxzZVxuMzQzMDpcdFx0XHRlcnJfY29kZSA9IFNDVFBfRVJST1JfUkVRX1JFRlVTRUQ7XG4zNDMxOlx0XG4zNDMyOlx0XHRhc2NvbmZfYWNrX2xlbiA9IG50b2hzKGFzY29uZl9hY2stXHUwMDNlY2h1bmtfaGRyLVx1MDAzZWxlbmd0aCkgLVxuMzQzMzpcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpO1xuMzQzNDpcdFxuMzQzNTpcdFx0LyogU2tpcCB0aGUgYWRkaXBoZHIgZnJvbSB0aGUgYXNjb25mX2FjayBjaHVuayBhbmQgc3RvcmUgYSBwb2ludGVyIHRvXG4zNDM2Olx0XHQgKiB0aGUgZmlyc3QgYXNjb25mX2FjayBwYXJhbWV0ZXIuXG4zNDM3Olx0XHQgKi9cbjM0Mzg6XHRcdGxlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hZGRpcGhkcik7XG4zNDM5Olx0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHN0cnVjdCBzY3RwX2FkZGlwX3BhcmFtICopKGFzY29uZl9hY2stXHUwMDNlc2tiLVx1MDAzZWRhdGEgJiM0MztcbjM0NDA6XHRcdFx0XHRcdFx0XHQgICAgICAgbGVuZ3RoKTtcbjM0NDE6XHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbjM0NDI6XHRcbjM0NDM6XHRcdHdoaWxlIChhc2NvbmZfYWNrX2xlbiBcdTAwM2UgMCkge1xuMzQ0NDpcdFx0XHRpZiAoYXNjb25mX2Fja19wYXJhbS1cdTAwM2VjcnJfaWQgPT0gYXNjb25mX3BhcmFtLVx1MDAzZWNycl9pZCkge1xuMzQ0NTpcdFx0XHRcdHN3aXRjaCAoYXNjb25mX2Fja19wYXJhbS1cdTAwM2VwYXJhbV9oZHIudHlwZSkge1xuMzQ0NjpcdFx0XHRcdGNhc2UgU0NUUF9QQVJBTV9TVUNDRVNTX1JFUE9SVDpcbjM0NDc6XHRcdFx0XHRcdHJldHVybiBTQ1RQX0VSUk9SX05PX0VSUk9SO1xuMzQ0ODpcdFx0XHRcdGNhc2UgU0NUUF9QQVJBTV9FUlJfQ0FVU0U6XG4zNDQ5Olx0XHRcdFx0XHRsZW5ndGggPSBzaXplb2YoKmFzY29uZl9hY2tfcGFyYW0pO1xuMzQ1MDpcdFx0XHRcdFx0ZXJyX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICYjNDM7IGxlbmd0aDtcbjM0NTE6XHRcdFx0XHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbjM0NTI6XHRcdFx0XHRcdGlmIChhc2NvbmZfYWNrX2xlbiBcdTAwM2UgMClcbjM0NTM6XHRcdFx0XHRcdFx0cmV0dXJuIGVycl9wYXJhbS1cdTAwM2VjYXVzZTtcbjM0NTQ6XHRcdFx0XHRcdGVsc2VcbjM0NTU6XHRcdFx0XHRcdFx0cmV0dXJuIFNDVFBfRVJST1JfSU5WX1BBUkFNO1xuMzQ1NjpcdFx0XHRcdFx0YnJlYWs7XG4zNDU3Olx0XHRcdFx0ZGVmYXVsdDpcbjM0NTg6XHRcdFx0XHRcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcbjM0NTk6XHRcdFx0XHR9XG4zNDYwOlx0XHRcdH1cbjM0NjE6XHRcbjM0NjI6XHRcdFx0bGVuZ3RoID0gbnRvaHMoYXNjb25mX2Fja19wYXJhbS1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbjM0NjM6XHRcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcbjM0NjQ6XHRcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4zNDY1Olx0XHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgU0NUUF9QQUQ0KGxlbmd0aCk7XG4zNDY2Olx0XHRcdGFzY29uZl9hY2tfbGVuIC09IFNDVFBfUEFENChsZW5ndGgpO1xuMzQ2NzpcdFx0fVxuMzQ2ODpcdFxuMzQ2OTpcdFx0cmV0dXJuIGVycl9jb2RlO1xuMzQ3MDpcdH1cbjM0NzE6XHRcbjM0NzI6XHQvKiBQcm9jZXNzIGFuIGluY29taW5nIEFTQ09ORl9BQ0sgY2h1bmsgYWdhaW5zdCB0aGUgY2FjaGVkIGxhc3QgQVNDT05GIGNodW5rLiAqL1xuMzQ3MzpcdGludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbjM0NzQ6XHRcdFx0XHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXG4zNDc1Olx0e1xuMzQ3NjpcdFx0c3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZiA9IGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTkKCQkJCQkJCW91dHB1dDogMTgzCgkJCQkJCQl0aG91Z2h0czogNTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBQYWNrZXQgUGFyc2luZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtUaGlzIGZpeGVzIGFuIGluZmluaXRlIGxvb3Agb3IgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIHRoZSBTQ1RQIGNvZGUuJiMzNDsgVGhlIGNvcmUgaXNzdWUgaXMgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhlIGBsZW5ndGhgIGZpZWxkIGZyb20gYW4gQVNDT05GX0FDSyBwYXJhbWV0ZXIgd2l0aGluIGFuIGluY29taW5nIG5ldHdvcmsgcGFja2V0LgoKSWYgYGxlbmd0aGAgaXMgemVybywgdGhlIG9yaWdpbmFsIGNvZGUgZG9lc24mIzM5O3QgYWR2YW5jZSB0aGUgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSwgbGVhZGluZyB0byBhbiBpbmZpbml0ZSBsb29wLCBleGFjdGx5IGFzIEkgc3VzcGVjdGVkLiBUaGVuIEkgcmVhbGl6ZWQgdGhlcmUmIzM5O3MgbW9yZSB0byBpdC4gRXZlbiBpZiBgbGVuZ3RoYCBpc24mIzM5O3QgemVybywgaWYgaXQmIzM5O3MgKm5vdCogcHJvcGVybHkgcGFkZGVkLCBgYXNjb25mX2Fja19wYXJhbWAgY291bGQgYmVjb21lIG1pc2FsaWduZWQuIFRoaXMgd291bGQgY2F1c2UgaXNzdWVzIHdpdGggc3Vic2VxdWVudCByZWFkcyBhbmQgY2FsY3VsYXRpb25zLiBOb3csIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHBhcnNpbmcgbmV0d29yayBkYXRhIGluc2lkZSBgYXNjb25mX2Fjay0mZ3Q7c2tiLSZndDtkYXRhYCwgaXQmIzM5O3MgYWxsIGNvbWluZyBpbiBhcyBuZXR3b3JrIGlucHV0LgoKU3BlY2lmaWNhbGx5LCBhIGBsZW5ndGhgIG9mIHplcm8gbGVhZHMgdG8gYW4gaW5maW5pdGUgbG9vcCwgd2hpY2ggaXMgYmFkLCBidXQgb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBsZW5ndGggaXNuJiMzOTt0IHBhZGRlZCBpcyB3aGF0IGdldHMgbXkgYXR0ZW50aW9uLiBCdXQgdGhlIG91dC1vZi1ib3VuZHMgaXNzdWUgaXMgdGhlIGJpZ2dlciBjb25jZXJuLiBJIGJlbGlldmUgdGhlIHVucGFkZGVkIGRhdGEgc2l0dWF0aW9uIHdvdWxkIGNhdXNlIHJlYWRzIG91dHNpZGUgb2YgdGhlIGFsbG9jYXRlZCBidWZmZXIuIEkmIzM5O2QgZXhwZWN0IEtBU0FOIHRvIGNhdGNoIHRoZXNlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCgpOb3csIG15IG1pbmQgZ29lcyB0byB0aGUgcXVlc3Rpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXNuJiMzOTt0IHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXMgcmVhZGluZyAqaW5jb21pbmcgbmV0d29yayBkYXRhKi4gSSYjMzk7bSBwYXJzaW5nIGFuIGBza2JgLCBzbyB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldC4gS01TQU4gaXMgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyB0aGF0JiMzOTtzIG5vdCByZWxldmFudCBoZXJlLiBTbywgdGhlIGJ1ZyBpcyBhIHN0YW5kYXJkIG91dC1vZi1ib3VuZHMgb3IgaW5maW5pdGUgbG9vcCBidWcuCgpMZXQgbWUgdGFrZSBhbm90aGVyIHF1aWNrIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZiB0byBjb25maXJtLgoKYGBgYwogCQlsZW5ndGggPSBudG9ocyhhc2NvbmZfYWNrX3BhcmFtLSZndDtwYXJhbV9oZHIubGVuZ3RoKTsKLQkJYXNjb25mX2Fja19wYXJhbSA9ICh2b2lkICopYXNjb25mX2Fja19wYXJhbSAmIzQzOyBsZW5ndGg7Ci0JCWFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDsKJiM0MzsJCWlmIChsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKQomIzQzOwkJCXJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTsKJiM0MzsJCWFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgU0NUUF9QQUQ0KGxlbmd0aCk7CiYjNDM7CQlhc2NvbmZfYWNrX2xlbiAtPSBTQ1RQX1BBRDQobGVuZ3RoKTsKYGBgCgpZZXAsIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgdGhvdWdodC4gSXQmIzM5O3MgcHJvcGVybHkgY2hlY2tpbmcgdGhlIGBsZW5ndGhgIGZpZWxkIHRvIGVuc3VyZSBpdCBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgaGVhZGVyIHN0cnVjdHVyZSwgYW5kIGl0JiMzOTtzIGFwcGx5aW5nIHBhZGRpbmcgd2hlbiBjYWxjdWxhdGluZyB0aGUgbmV3IHBvaW50ZXIgcG9zaXRpb24gYW5kIHJlbWFpbmluZyBsZW5ndGguIFRoaXMgaGFuZGxlcyBib3RoIHRoZSB6ZXJvLWxlbmd0aCBpbmZpbml0ZSBsb29wIGFuZCB0aGUgdW5hbGlnbmVkIGFjY2VzcyBwcm9ibGVtcy4gVGhpcyBpcyBhbGwgbmV0d29yay1yZWNlaXZlZCBkYXRhLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnZvbHZlZC4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIHBhcnNpbmcgaW5jb21pbmcgU0NUUCBBU0NPTkZfQUNLIGNodW5rcyBmcm9tIHRoZSBuZXR3b3JrLiBUaGUgcHJldmlvdXMgY29kZSBsYWNrZWQgYSBtaW5pbXVtIGxlbmd0aCBjaGVjayBhbmQgZGlkIG5vdCBwcm9wZXJseSBwYWQgdGhlIGxlbmd0aCB3aGVuIGFkdmFuY2luZyB0aGUgcGFyYW1ldGVyIHBvaW50ZXIgKGBhc2NvbmZfYWNrX3BhcmFtYCkgYW5kIGRlY3JlbWVudGluZyB0aGUgcmVtYWluaW5nIGxlbmd0aCAoYGFzY29uZl9hY2tfbGVuYCkuIFRoaXMgY291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wIChpZiBsZW5ndGggaXMgMCkgb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9mIHRoZSBzb2NrZXQgYnVmZmVyIChza2IpIGRhdGEuIFNpbmNlIHRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldCwgdGhlcmUgaXMgbm8gcmlzayBvZiByZWFkaW5nIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSBvciBsZWFraW5nIGl0IHRvIHVzZXIgc3BhY2UuIE91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIGluZmluaXRlIGxvb3BzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGZ1enppbmcgdGltZW91dHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzozOC4wMjIyMTk1OTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYzNjcxNjQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9wcm9jZXNzX2FzY29uZl9hY2tcIixcbiAgICBcInNjdHBfc2ZfZG9fYXNjb25mX2Fja1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gcGFyc2luZyBpbmNvbWluZyBTQ1RQIEFTQ09ORl9BQ0sgY2h1bmtzIGZyb20gdGhlIG5ldHdvcmsuIFRoZSBwcmV2aW91cyBjb2RlIGxhY2tlZCBhIG1pbmltdW0gbGVuZ3RoIGNoZWNrIGFuZCBkaWQgbm90IHByb3Blcmx5IHBhZCB0aGUgbGVuZ3RoIHdoZW4gYWR2YW5jaW5nIHRoZSBwYXJhbWV0ZXIgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSBhbmQgZGVjcmVtZW50aW5nIHRoZSByZW1haW5pbmcgbGVuZ3RoIChgYXNjb25mX2Fja19sZW5gKS4gVGhpcyBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AgKGlmIGxlbmd0aCBpcyAwKSBvciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb2YgdGhlIHNvY2tldCBidWZmZXIgKHNrYikgZGF0YS4gU2luY2UgdGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGluaXRpYWxpemVkIGZyb20gdGhlIG5ldHdvcmsgcGFja2V0LCB0aGVyZSBpcyBubyByaXNrIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IG9yIGxlYWtpbmcgaXQgdG8gdXNlciBzcGFjZS4gT3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW5maW5pdGUgbG9vcHMgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgZnV6emluZyB0aW1lb3V0cy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjM4LjAyMjIyNDc5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2ODkxNjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjA5MDE1NmEyYmU1ZmUyNGY3ZThkODhmMDUwYTNmZmJjOWZiNTQwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcXG5pbmRleCAyMzZlMjVhYmM3YTQyLi42ZjU1MjU4Y2YyY2ZiIDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbisrKyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbkBAIC0zNDYwLDggKzM0NjAsMTAgQEAgc3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXFx1MDAzZXBhcmFtX2hkci5sZW5ndGgpO1xcbi1cXHRcXHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICsgbGVuZ3RoO1xcbi1cXHRcXHRhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7XFxuK1xcdFxcdGlmIChsZW5ndGggXFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKVxcbitcXHRcXHRcXHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XFxuK1xcdFxcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcXG4rXFx0XFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBlcnJfY29kZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTM6MzguNDY5OTcwNzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjMwMTk4NTg3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrXCIsXG4gICAgXCJzY3RwX3NmX2RvX2FzY29uZl9hY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIwOTAxNTZhMmJlNWZlMjRmN2U4ZDg4ZjA1MGEzZmZiYzlmYjU0MDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuaW5kZXggMjM2ZTI1YWJjN2E0Mi4uNmY1NTI1OGNmMmNmYiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMzQ2MCw4ICszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuIFx0XHR9XG4gXG4gXHRcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XG4tXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBsZW5ndGg7XG4tXHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbitcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcbitcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4rXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcbitcdFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyX2NvZGU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzozOC40Njk5NzMwMzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYyNDQwNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNDVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgbW9kaWZ5aW5nIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBMb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgdGhlIGxlbmd0aCBvZiBzb21ldGhpbmcsIHNwZWNpZmljYWxseSBgbGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpYC4gVGhlIGNoYW5nZSBpcyB1c2luZyBgU0NUUF9QQUQ0KGxlbmd0aClgIGluc3RlYWQgb2YganVzdCBgbGVuZ3RoYCB3aGVuIHRoZXkncmUgdXBkYXRpbmcgdGhlIGBhc2NvbmZfYWNrX3BhcmFtYCBwb2ludGVyIGFuZCBkZWNyZW1lbnRpbmcgYGFzY29uZl9hY2tfbGVuYC4gRnJvbSBhIG5ldHdvcmtpbmcgcGVyc3BlY3RpdmUsIGFuZCBnaXZlbiBteSBleHBlcmllbmNlLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBTQ1RQIHN0YWNrIGlzIGhhbmRsaW5nIEFTQ09ORiBBQ0sgY2h1bmtzLiBDcml0aWNhbGx5LCBpdCBsb29rcyBsaWtlIGEgcG90ZW50aWFsIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggdGhyb3dpbmcgc29tZSBmdXp6aW5nIGF0LiBJIGNhbiBzZWUgYSBwb3RlbnRpYWwgZm9yIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBiZWluZyB0cmlnZ2VyZWQgaGVyZS5cblxuTm93LCBsZXQgbWUgZGlnIGEgbGl0dGxlIGRlZXBlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaG93IHRoZSBmdW5jdGlvbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBpcyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBJJ2xsIGRvIGEgZ3JlcCBzZWFyY2ggZm9yIGl0LiBBbmQgb2YgY291cnNlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBTQ1RQIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGFuZCBpdHMgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYWJpbGl0eSB3aWxsIGJlIGtleSB0byBjcmVhdGluZyBlZmZlY3RpdmUgZnV6emluZyBoYXJuZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo0My4zMzI0MTYyNTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4NDI4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzM1Nj1zdGF0aWMgdm9pZCBzY3RwX2FzY29uZl9wYXJhbV9zdWNjZXNzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbi0tXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM0MTYtICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjM0MTc6c3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM0MTgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzY3RwX2FkZGlwX3BhcmFtICphc2NvbmZfcGFyYW0sXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzQ3Mz1pbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzUxMi1cXHRcXHRlbHNlIHtcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzUxMzpcXHRcXHRcXHRlcnJfY29kZSA9IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShhc2NvbmZfYWNrLFxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNTE0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBhc2NvbmZfcGFyYW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjQzLjM4MzI2NTk3MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzEyMjA3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEFTQ09ORiBSZXNwb25zZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgZnVuY3Rpb24sIGFuZCBpdCdzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBtZWFucyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggbGltaXRzIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGZvciBleHRlcm5hbCBtb2RpZmljYXRpb24sIHdoaWNoIGlzIGEga2V5IGRlc2lnbiBjaG9pY2UuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNhbGxzIGl0LiBUaGUgdGV4dCBtZW50aW9ucyBpdCBpcyBjYWxsZWQgYnkgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvLiBUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRvIHVuZGVyc3RhbmQgd2hldGhlciBgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2tgIGlzIHZpc2libGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIFNDVFAgc3RhY2sgb3IgaWYgaXQgaXMgYWxzbyBzdGF0aWMgb3Igb25seSBhY2Nlc3NpYmxlIGluIHRoaXMgbW9kdWxlLiBJZiBgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2tgIGlzIGFsc28gc3RhdGljLCB0aGVuIHRoYXQgbmFycm93cyBkb3duIHRoZSBjb250ZXh0IGZ1cnRoZXIsIGltcGx5aW5nIGEgdGlnaHRseSBjb3VwbGVkIGludGVybmFsIG1lY2hhbmlzbS4gSWYgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpcyBleHBvcnRlZCwgdGhhdCBzdWdnZXN0cyBhIGJyb2FkZXIgaW50ZXJhY3Rpb24gcG9pbnQgd2l0aGluIHRoZSBTQ1RQIHByb3RvY29sIGhhbmRsaW5nLCBvciBwb3NzaWJseSBldmVuIHRoZSB1c2VyIHNwYWNlLiBJJ2xsIG5lZWQgdG8gZ28gYW5kIGV4YW1pbmUgdGhhdCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBub3cgdG8gZmlndXJlIG91dCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjQ2LjkxNDQ4OTQxNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODczODM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTM0MTc9c3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQ3Mi0vKiBQcm9jZXNzIGFuIGluY29taW5nIEFTQ09ORl9BQ0sgY2h1bmsgYWdhaW5zdCB0aGUgY2FjaGVkIGxhc3QgQVNDT05GIGNodW5rLiAqL1xcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYzozNDczOmludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQ3NC1cXHRcXHRcXHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00MDU1PWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvX2FzY29uZl9hY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDEzOS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0MTQwOlxcdFxcdGlmICghc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICopYXNvYyxcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MTQxLVxcdFxcdFxcdFxcdFxcdCAgICAgYXNjb25mX2FjaykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjQ2Ljk2MzIzODkxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzcwNDU3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlNDVFAgQVNDT05GIEFDSyBQcm9jZXNzaW5nIOKAkyBBIFF1aWNrIENoZWNrKipcblxuT2theSwgc28gYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpc24ndCBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIHNvbWV0aGluZyB0byBjb25zaWRlciB3aGVuIHJldmlld2luZyBpdHMgdXNlIGFuZCBzY29wZS4gTm9uLXN0YXRpYyBpbXBsaWVzIGl0J3MgZWl0aGVyIGludGVuZGVkIGZvciBleHRlcm5hbCB1c2UsIG9yIGF0IGxlYXN0IHZpc2libGUgYmV5b25kIGl0cyBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIHJhaXNlcyB0aGUgdXN1YWwgcXVlc3Rpb25zIGFib3V0IHBvdGVudGlhbCByZS1lbnRyYW5jeSBpc3N1ZXMsIGdsb2JhbCBzdGF0ZSwgYW5kIGV4dGVybmFsIGRlcGVuZGVuY2llcy4gQmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBzcGVjaWZpYyBjb2RlLCB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGNvbmZpcm1pbmcgdGhlIGNvbmZpZ3VyYXRpb24uIExldCdzIHB1bGwgdXAgdGhlIEtjb25maWcgZm9yIFNDVFAg4oCTIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBhbnkgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBwYXRocyBpdCdzIGludm9sdmVkIGluIGlzIGFic29sdXRlbHkgY3JpdGljYWwgYmVmb3JlIEkgc3RhcnQgdHJhY2luZyB0aGUgY29kZSBpdHNlbGYuIFRoZSBLY29uZmlnIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGlzIGZ1bmN0aW9uJ3MgdHlwaWNhbCBkZXBsb3ltZW50IHNjZW5hcmlvcyBhbmQgaG93IGl0cyBhdmFpbGFiaWxpdHkgaXMgY29udHJvbGxlZC4gR290dGEgZXN0YWJsaXNoIHRoZSBiYXNlbGluZSBiZWZvcmUgZGlnZ2luZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo1MC40NDAyODcyMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODgxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NDVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTM6NTAuNDg2MzgwMDg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMzI0NDg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrIGFuZCBEZXBlbmRlbmN5IFNjYW4qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmcgaXMgYElQX1NDVFBgLiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMsIG9yIHJlbGF0ZWQgc2V0dGluZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IGBJUF9TQ1RQYCBiZWhhdmVzLiBJdCdzIHNlY29uZCBuYXR1cmUgZm9yIG1lIHRvIHRoaW5rIGhvbGlzdGljYWxseSwgc28gSSdsbCBxdWlja2x5IHNjYW4gbXkgbWVudGFsIGRhdGFiYXNlIGZvciByZWxhdGVkIGNvbXBvbmVudHMsIHByb3RvY29scywgb3IgbW9kdWxlcy4gTWFraW5nIHN1cmUgSSBoYXZlIGEgZ29vZCBncmFzcCBvbiB0aGUgZW50aXJlIHN5c3RlbSB3aWxsIHBheSBkaXZpZGVuZHMgZG93biB0aGUgbGluZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIG15IGN1cnJlbnQgdGFzayBhbmQgcG90ZW50aWFsIGlzc3VlcyB0aGF0IGl0IG1heSBjYXVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjUzLjMwOTY0MTE4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2N0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFNDVFAgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIElQX1NDVFBcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2XFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9VVElMU1xcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2xcXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBGcm9tIFJGQyAyOTYwIFxcdTAwM2NodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyOTYwLnR4dFxcdTAwM2UuXFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgXFxcIlNDVFAgaXMgYSByZWxpYWJsZSB0cmFuc3BvcnQgcHJvdG9jb2wgb3BlcmF0aW5nIG9uIHRvcCBvZiBhXFxuICAyMDpcXHRcXHQgIGNvbm5lY3Rpb25sZXNzIHBhY2tldCBuZXR3b3JrIHN1Y2ggYXMgSVAuICBJdCBvZmZlcnMgdGhlIGZvbGxvd2luZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo1My4zMDk3MDMzOThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyNDMzOTQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nOlxuXG4qKkV4YW1pbmluZyB0aGUgU0NUUCBBU0NPTkYgQUNLIFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIFNDVFAgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYElQX1NDVFBgIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciB0aGF0LiBNeSBmb2N1cyBpcyBuYXJyb3dpbmcgaW4gb24gaG93IHRoZSBBU0NPTkYgQUNLIGlzIHByb2Nlc3NlZC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9ucyBgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2tgIGFuZCBgc2N0cF9zZl9kb19hc2NvbmZfYWNrYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGltbWVkaWF0ZWx5IGN1cmlvdXMgYWJvdXQgdGhlIG5hdHVyZSBvZiBgc2N0cF9zZl9kb19hc2NvbmZfYWNrYC4gTXkgZmlyc3QgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZnVuY3Rpb24gc3RhdGljPyBUaGF0IGtub3dsZWRnZSB3aWxsIGdyZWF0bHkgaW5mb3JtIGhvdyBpdCdzIHVzZWQgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHZpc2liaWxpdHkgd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo1Ni43MzQwNDcxNjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTgzNjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3NmX2RvX2FzY29uZl9hY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTQwMjc9c3RhdGljIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NlbmRfbmV4dF9hc2NvbmYoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MDU0LSAqL1xcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjQwNTU6ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fYXNjb25mX2FjayhzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDA1Ni1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jPTM4Mz1jaHVua19ldmVudF90YWJsZVtTQ1RQX05VTV9CQVNFX0NIVU5LX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xcbi0tXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQyNy1cXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NDI4OlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fYXNjb25mX2FjayksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNDI5LVxcdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzMDpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2RvX2FzY29uZl9hY2spLCBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQzMS1cXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo0MzI6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9kb19hc2NvbmZfYWNrKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy00MzMtXFx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzNDpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2RvX2FzY29uZl9hY2spLCBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQzNS1cXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UICovIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTM6NTYuODQ1ODkwOTk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjUwMDk2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBBU0NPTkYgQUNLIFBhdGNoKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgcGF0Y2guIEZpcnN0LCBpdCdzIGRlZmluaXRlbHkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCBub3QgYSBzdGF0aWMgY29uZGl0aW9uLiBUaGUga2V5IGZ1bmN0aW9ucyB0YXJnZXRlZCBhcmUgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBhbmQgYHNjdHBfc2ZfZG9fYXNjb25mX2Fja2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmb2N1cyBwb2ludHMgZm9yIG15IGFuYWx5c2lzLlxuXG5UaGUgbWFpbiBnaXN0IHNlZW1zIHRvIGJlIGZpeGluZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBTcGVjaWZpY2FsbHksIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvciBldmVuIGFuIGluZmluaXRlIGxvb3Agd2l0aGluIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB0aGF0IGhhcyBwYXJhbWV0ZXJzIHdpdGggaW5jb3JyZWN0IGxlbmd0aHMuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIFNDVFAgbmV0d29ya2luZyBzdGFjayBpdHNlbGYsIG1ha2luZyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UndmUgZ290IHRvIGJyZWFrIGl0LCBmaW5kIHdoZXJlIGl0IGZhaWxzIVxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBidXQgYElQX1NDVFBgIGxvb2tzIGxpa2UgYSBrZXkgb25lIHRvIHdhdGNoLiBJJ2xsIG1ha2Ugc3VyZSB0byBkb3VibGUtY2hlY2ssIGJ1dCBgSU5FVGAgaXMgdXN1YWxseSBhIGdpdmVuLiBOb3csIGl0J3MgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4OSwiT3V0cHV0VG9rZW5zIjoxMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDEuNDEwOTA0NDkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg5MjIzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja1wiLFxuICAgIFwic2N0cF9zZl9kb19hc2NvbmZfYWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja1wiLFxuICAgIFwic2N0cF9zZl9kb19hc2NvbmZfYWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxNDowMS40ODk4MzMwMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTY5MDkyMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDEuNDkwMzQ3MTEyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwMTY4NTczNDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIwOTAxNTZhMmJlNWZlMjRmN2U4ZDg4ZjA1MGEzZmZiYzlmYjU0MDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuaW5kZXggMjM2ZTI1YWJjN2E0Mi4uNmY1NTI1OGNmMmNmYiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMzQ2MCw4ICszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuIFx0XHR9XG4gXG4gXHRcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XG4tXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBsZW5ndGg7XG4tXHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbitcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcbitcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4rXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcbitcdFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyX2NvZGU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxNDowMS40OTAzNDgwMTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyMTM0NjQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTQ1RQIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhZGRpdGlvbiBvZiBhIGxlbmd0aCBjaGVjazogYGlmIChsZW5ndGggXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpYCBhbmQgYSByZXR1cm4gb2YgYFNDVFBfRVJST1JfSU5WX1BBUkFNYCBpZiBpdCdzIHRydWUuIE1ha2VzIHNlbnNlOyB5b3UgZG9uJ3Qgd2FudCB0byBiZSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBhIGJ1ZmZlciwgYW5kIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aCBpcyBhIGdvb2QgcmVhc29uIHRvIHNpZ25hbCBhbiBlcnJvci5cblxuVGhlIHNlY29uZCBwYXJ0IGlzIG1vcmUgaW50ZXJlc3RpbmcuIEl0J3MgY2hhbmdpbmcgaG93IHRoZSBgYXNjb25mX2Fja19wYXJhbWAgYW5kIGBhc2NvbmZfYWNrX2xlbmAgcG9pbnRlcnMgYXJlIGFkdmFuY2VkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMganVzdCBhZGRpbmcgdGhlIGxlbmd0aCwgYnV0IHRoZSB1cGRhdGVkIHZlcnNpb24gbm93IHVzZXMgYFNDVFBfUEFENChsZW5ndGgpYC4gQ2xlYXJseSwgaXQncyBhYm91dCBhbGlnbm1lbnQuIEFkZGluZyB0aGUgcGFkZGluZyBsaWtlbHkgZW5zdXJlcyB0aGF0IHRoZSBwYXJhbWV0ZXJzIGFyZSA0LWJ5dGUgYWxpZ25lZCwgd2hpY2ggaXMgY29tbW9uIGluIG5ldHdvcmsgcHJvdG9jb2xzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBvciBwb3NzaWJseSBldmVuIHJlcXVpcmVkIGJ5IHRoZSBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBTQ1RQX1BBRDRgIHRvIGJlIHN1cmUuXG5cblRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dC4gTGV0J3MgdXNlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBmaW5kIGFsbCB0aGUgaW5zdGFuY2VzIG9mIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBTZWVpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUgd2lsbCBkZWZpbml0ZWx5IGhlbHAgY2xhcmlmeSB3aHkgdGhlc2UgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIENvbnRleHQgaXMga2luZywgYXMgYWx3YXlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDYuMzExNzA4MTIzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUzMTg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zMzU2PXN0YXRpYyB2b2lkIHNjdHBfYXNjb25mX3BhcmFtX3N1Y2Nlc3Moc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxNi0gKi9cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzQxNzpzdGF0aWMgX19iZTE2IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mX2FjayxcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxOC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNjdHBfYWRkaXBfcGFyYW0gKmFzY29uZl9wYXJhbSxcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zNDczPWludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNTEyLVxcdFxcdGVsc2Uge1xcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYzozNTEzOlxcdFxcdFxcdGVycl9jb2RlID0gc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKGFzY29uZl9hY2ssXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM1MTQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGFzY29uZl9wYXJhbSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDYuMzU4MjQ2MDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzMyNzcwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBmdW5jdGlvbiwgYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAsIGxvY2F0ZWQgaW4gYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuIEknbSBjdXJpb3VzIHRvIHNlZSBob3cgdGhlIFNDVFAgc3RhY2sgaGFuZGxlcyB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBBU0NPTkYgcmVzcG9uc2UuIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGNydWNpYWwgcGllY2UgaW4gdGhlIGFkYXB0YXRpb24gbGF5ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggYXNzb2NpYXRpb24gY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBMZXQncyBzZWUgaG93IHRoZSBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGludGVyYWN0cyBoZXJlLiBJIGFudGljaXBhdGUgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBjcmFmdGluZyB0aGUgYXBwcm9wcmlhdGUgY2h1bmssIGRldGVybWluaW5nIHdoYXQgaW5mb3JtYXRpb24gbmVlZHMgdG8gYmUgaW5jbHVkZWQgYmFzZWQgb24gdGhlIGNvbnRleHQgb2YgdGhlIHJlcXVlc3RlZCBjaGFuZ2UuIEknbSBsb29raW5nIGZvciB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIHJlcXVlc3QuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBpdCByZXNwb25kcyB0byBkaWZmZXJlbnQgdHlwZXMgb2YgYXNzb2NpYXRpb24gY2hhbmdlIHJlcXVlc3RzOiBwZXJoYXBzIGFkZHJlc3MgYWRkaXRpb24gb3IgZGVsZXRpb24sIHBhcmFtZXRlciBuZWdvdGlhdGlvbiwgb3IgZXZlbiBhZGFwdGF0aW9uIGxheWVyIHBhcmFtZXRlcnMuIEknbGwgYmUgZm9jdXNlZCBvbiBob3cgaXQgY29uc3RydWN0cyB0aGUgQVNDT05GIGNodW5rLCBzZXR0aW5nIHRoZSBmbGFncyBhbmQgcGFyYW1ldGVycyBjb3JyZWN0bHksIGFuZCB3aGF0IHNvcnQgb2YgZXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQuIEknbSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGl0IGxldmVyYWdlcyBvdGhlciBpbnRlcm5hbCBTQ1RQIGZ1bmN0aW9ucyBmb3IgYnVpbGRpbmcgdGhlIGNodW5rIGl0c2VsZiwgbGlrZSBwYXlsb2FkIGVuY29kaW5nIGFuZCBsZW5ndGggY2FsY3VsYXRpb25zLiBJJ20gdGhpbmtpbmcgSSdsbCBsb29rIGZvciBzcGVjaWZpYyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgVENCIGFuZCB3aGljaCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgZm9yIHRoZSBhY3R1YWwgY2h1bmsgY29uc3RydWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTI2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDkuODkxNTI3MDg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzQxNyxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzQxNzpcXHRzdGF0aWMgX19iZTE2IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mX2FjayxcXG4zNDE4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbSAqYXNjb25mX3BhcmFtLFxcbjM0MTk6XFx0XFx0XFx0XFx0XFx0ICAgICAgIGludCBub19lcnIpXFxuMzQyMDpcXHR7XFxuMzQyMTpcXHRcXHRzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbVxcdCphc2NvbmZfYWNrX3BhcmFtO1xcbjM0MjI6XFx0XFx0c3RydWN0IHNjdHBfZXJyaGRyICplcnJfcGFyYW07XFxuMzQyMzpcXHRcXHRpbnQgYXNjb25mX2Fja19sZW47XFxuMzQyNDpcXHRcXHRfX2JlMTYgZXJyX2NvZGU7XFxuMzQyNTpcXHRcXHRpbnQgbGVuZ3RoO1xcbjM0MjY6XFx0XFxuMzQyNzpcXHRcXHRpZiAobm9fZXJyKVxcbjM0Mjg6XFx0XFx0XFx0ZXJyX2NvZGUgPSBTQ1RQX0VSUk9SX05PX0VSUk9SO1xcbjM0Mjk6XFx0XFx0ZWxzZVxcbjM0MzA6XFx0XFx0XFx0ZXJyX2NvZGUgPSBTQ1RQX0VSUk9SX1JFUV9SRUZVU0VEO1xcbjM0MzE6XFx0XFxuMzQzMjpcXHRcXHRhc2NvbmZfYWNrX2xlbiA9IG50b2hzKGFzY29uZl9hY2stXFx1MDAzZWNodW5rX2hkci1cXHUwMDNlbGVuZ3RoKSAtXFxuMzQzMzpcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTtcXG4zNDM0OlxcdFxcbjM0MzU6XFx0XFx0LyogU2tpcCB0aGUgYWRkaXBoZHIgZnJvbSB0aGUgYXNjb25mX2FjayBjaHVuayBhbmQgc3RvcmUgYSBwb2ludGVyIHRvXFxuMzQzNjpcXHRcXHQgKiB0aGUgZmlyc3QgYXNjb25mX2FjayBwYXJhbWV0ZXIuXFxuMzQzNzpcXHRcXHQgKi9cXG4zNDM4OlxcdFxcdGxlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hZGRpcGhkcik7XFxuMzQzOTpcXHRcXHRhc2NvbmZfYWNrX3BhcmFtID0gKHN0cnVjdCBzY3RwX2FkZGlwX3BhcmFtICopKGFzY29uZl9hY2stXFx1MDAzZXNrYi1cXHUwMDNlZGF0YSArXFxuMzQ0MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbGVuZ3RoKTtcXG4zNDQxOlxcdFxcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcXG4zNDQyOlxcdFxcbjM0NDM6XFx0XFx0d2hpbGUgKGFzY29uZl9hY2tfbGVuIFxcdTAwM2UgMCkge1xcbjM0NDQ6XFx0XFx0XFx0aWYgKGFzY29uZl9hY2tfcGFyYW0tXFx1MDAzZWNycl9pZCA9PSBhc2NvbmZfcGFyYW0tXFx1MDAzZWNycl9pZCkge1xcbjM0NDU6XFx0XFx0XFx0XFx0c3dpdGNoIChhc2NvbmZfYWNrX3BhcmFtLVxcdTAwM2VwYXJhbV9oZHIudHlwZSkge1xcbjM0NDY6XFx0XFx0XFx0XFx0Y2FzZSBTQ1RQX1BBUkFNX1NVQ0NFU1NfUkVQT1JUOlxcbjM0NDc6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFNDVFBfRVJST1JfTk9fRVJST1I7XFxuMzQ0ODpcXHRcXHRcXHRcXHRjYXNlIFNDVFBfUEFSQU1fRVJSX0NBVVNFOlxcbjM0NDk6XFx0XFx0XFx0XFx0XFx0bGVuZ3RoID0gc2l6ZW9mKCphc2NvbmZfYWNrX3BhcmFtKTtcXG4zNDUwOlxcdFxcdFxcdFxcdFxcdGVycl9wYXJhbSA9ICh2b2lkICopYXNjb25mX2Fja19wYXJhbSArIGxlbmd0aDtcXG4zNDUxOlxcdFxcdFxcdFxcdFxcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcXG4zNDUyOlxcdFxcdFxcdFxcdFxcdGlmIChhc2NvbmZfYWNrX2xlbiBcXHUwMDNlIDApXFxuMzQ1MzpcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXJyX3BhcmFtLVxcdTAwM2VjYXVzZTtcXG4zNDU0OlxcdFxcdFxcdFxcdFxcdGVsc2VcXG4zNDU1OlxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcXG4zNDU2OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjM0NTc6XFx0XFx0XFx0XFx0ZGVmYXVsdDpcXG4zNDU4OlxcdFxcdFxcdFxcdFxcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcXG4zNDU5OlxcdFxcdFxcdFxcdH1cXG4zNDYwOlxcdFxcdFxcdH1cXG4zNDYxOlxcdFxcbjM0NjI6XFx0XFx0XFx0bGVuZ3RoID0gbnRvaHMoYXNjb25mX2Fja19wYXJhbS1cXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XFxuMzQ2MzpcXHRcXHRcXHRpZiAobGVuZ3RoIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcXG4zNDY0OlxcdFxcdFxcdFxcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcXG4zNDY1OlxcdFxcdFxcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcXG4zNDY2OlxcdFxcdFxcdGFzY29uZl9hY2tfbGVuIC09IFNDVFBfUEFENChsZW5ndGgpO1xcbjM0Njc6XFx0XFx0fVxcbjM0Njg6XFx0XFxuMzQ2OTpcXHRcXHRyZXR1cm4gZXJyX2NvZGU7XFxuMzQ3MDpcXHR9XFxuMzQ3MTpcXHRcXG4zNDcyOlxcdC8qIFByb2Nlc3MgYW4gaW5jb21pbmcgQVNDT05GX0FDSyBjaHVuayBhZ2FpbnN0IHRoZSBjYWNoZWQgbGFzdCBBU0NPTkYgY2h1bmsuICovXFxuMzQ3MzpcXHRpbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuMzQ3NDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXFxuMzQ3NTpcXHR7XFxuMzQ3NjpcXHRcXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mID0gYXNvYy1cXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjE0OjA5Ljg5MTk0ODU2NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTc2Njk0NTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgUGFja2V0IFBhcnNpbmcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlRoaXMgZml4ZXMgYW4gaW5maW5pdGUgbG9vcCBvciBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gdGhlIFNDVFAgY29kZS5cIiBUaGUgY29yZSBpc3N1ZSBpcyBob3cgdGhlIGNvZGUgaGFuZGxlcyB0aGUgYGxlbmd0aGAgZmllbGQgZnJvbSBhbiBBU0NPTkZfQUNLIHBhcmFtZXRlciB3aXRoaW4gYW4gaW5jb21pbmcgbmV0d29yayBwYWNrZXQuXG5cbklmIGBsZW5ndGhgIGlzIHplcm8sIHRoZSBvcmlnaW5hbCBjb2RlIGRvZXNuJ3QgYWR2YW5jZSB0aGUgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSwgbGVhZGluZyB0byBhbiBpbmZpbml0ZSBsb29wLCBleGFjdGx5IGFzIEkgc3VzcGVjdGVkLiBUaGVuIEkgcmVhbGl6ZWQgdGhlcmUncyBtb3JlIHRvIGl0LiBFdmVuIGlmIGBsZW5ndGhgIGlzbid0IHplcm8sIGlmIGl0J3MgKm5vdCogcHJvcGVybHkgcGFkZGVkLCBgYXNjb25mX2Fja19wYXJhbWAgY291bGQgYmVjb21lIG1pc2FsaWduZWQuIFRoaXMgd291bGQgY2F1c2UgaXNzdWVzIHdpdGggc3Vic2VxdWVudCByZWFkcyBhbmQgY2FsY3VsYXRpb25zLiBOb3csIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHBhcnNpbmcgbmV0d29yayBkYXRhIGluc2lkZSBgYXNjb25mX2Fjay1cdTAwM2Vza2ItXHUwMDNlZGF0YWAsIGl0J3MgYWxsIGNvbWluZyBpbiBhcyBuZXR3b3JrIGlucHV0LlxuXG5TcGVjaWZpY2FsbHksIGEgYGxlbmd0aGAgb2YgemVybyBsZWFkcyB0byBhbiBpbmZpbml0ZSBsb29wLCB3aGljaCBpcyBiYWQsIGJ1dCBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIGxlbmd0aCBpc24ndCBwYWRkZWQgaXMgd2hhdCBnZXRzIG15IGF0dGVudGlvbi4gQnV0IHRoZSBvdXQtb2YtYm91bmRzIGlzc3VlIGlzIHRoZSBiaWdnZXIgY29uY2Vybi4gSSBiZWxpZXZlIHRoZSB1bnBhZGRlZCBkYXRhIHNpdHVhdGlvbiB3b3VsZCBjYXVzZSByZWFkcyBvdXRzaWRlIG9mIHRoZSBhbGxvY2F0ZWQgYnVmZmVyLiBJJ2QgZXhwZWN0IEtBU0FOIHRvIGNhdGNoIHRoZXNlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXG5cbk5vdywgbXkgbWluZCBnb2VzIHRvIHRoZSBxdWVzdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpc24ndCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzIHJlYWRpbmcgKmluY29taW5nIG5ldHdvcmsgZGF0YSouIEknbSBwYXJzaW5nIGFuIGBza2JgLCBzbyB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldC4gS01TQU4gaXMgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyB0aGF0J3Mgbm90IHJlbGV2YW50IGhlcmUuIFNvLCB0aGUgYnVnIGlzIGEgc3RhbmRhcmQgb3V0LW9mLWJvdW5kcyBvciBpbmZpbml0ZSBsb29wIGJ1Zy5cblxuTGV0IG1lIHRha2UgYW5vdGhlciBxdWljayBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgdG8gY29uZmlybS5cblxuYGBgY1xuIFx0XHRsZW5ndGggPSBudG9ocyhhc2NvbmZfYWNrX3BhcmFtLVx1MDAzZXBhcmFtX2hkci5sZW5ndGgpO1xuLVx0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICsgbGVuZ3RoO1xuLVx0XHRhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7XG4rXHRcdGlmIChsZW5ndGggXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpXG4rXHRcdFx0cmV0dXJuIFNDVFBfRVJST1JfSU5WX1BBUkFNO1xuK1x0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICsgU0NUUF9QQUQ0KGxlbmd0aCk7XG4rXHRcdGFzY29uZl9hY2tfbGVuIC09IFNDVFBfUEFENChsZW5ndGgpO1xuYGBgXG5cblllcCwgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIHRob3VnaHQuIEl0J3MgcHJvcGVybHkgY2hlY2tpbmcgdGhlIGBsZW5ndGhgIGZpZWxkIHRvIGVuc3VyZSBpdCBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgaGVhZGVyIHN0cnVjdHVyZSwgYW5kIGl0J3MgYXBwbHlpbmcgcGFkZGluZyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBuZXcgcG9pbnRlciBwb3NpdGlvbiBhbmQgcmVtYWluaW5nIGxlbmd0aC4gVGhpcyBoYW5kbGVzIGJvdGggdGhlIHplcm8tbGVuZ3RoIGluZmluaXRlIGxvb3AgYW5kIHRoZSB1bmFsaWduZWQgYWNjZXNzIHByb2JsZW1zLiBUaGlzIGlzIGFsbCBuZXR3b3JrLXJlY2VpdmVkIGRhdGEuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludm9sdmVkLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOID0gZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjk5LCJPdXRwdXRUb2tlbnMiOjE4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjE0OjIxLjY1ODg5ODgzNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gcGFyc2luZyBpbmNvbWluZyBTQ1RQIEFTQ09ORl9BQ0sgY2h1bmtzIGZyb20gdGhlIG5ldHdvcmsuIFRoZSBwcmV2aW91cyBjb2RlIGxhY2tlZCBhIG1pbmltdW0gbGVuZ3RoIGNoZWNrIGFuZCBkaWQgbm90IHByb3Blcmx5IHBhZCB0aGUgbGVuZ3RoIHdoZW4gYWR2YW5jaW5nIHRoZSBwYXJhbWV0ZXIgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSBhbmQgZGVjcmVtZW50aW5nIHRoZSByZW1haW5pbmcgbGVuZ3RoIChgYXNjb25mX2Fja19sZW5gKS4gVGhpcyBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AgKGlmIGxlbmd0aCBpcyAwKSBvciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb2YgdGhlIHNvY2tldCBidWZmZXIgKHNrYikgZGF0YS4gU2luY2UgdGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGluaXRpYWxpemVkIGZyb20gdGhlIG5ldHdvcmsgcGFja2V0LCB0aGVyZSBpcyBubyByaXNrIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IG9yIGxlYWtpbmcgaXQgdG8gdXNlciBzcGFjZS4gT3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW5maW5pdGUgbG9vcHMgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgZnV6emluZyB0aW1lb3V0cy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-23 13:11:37 +0000 UTC FinishedAt: 2026-08-23 13:14:23 +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": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "7cbfb180945ce529608e4d4e24a6d483699fab1e", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "IP_SCTP" ], "series_id": "e4bc8956-86f6-47ff-822f-a51365ac1c69" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "sctp_process_asconf_ack", "sctp_sf_do_asconf_ack" ], "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+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OwogIF0sCiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAyMDkwMTU2YTJiZTVmZTI0ZjdlOGQ4OGYwNTBhM2ZmYmM5ZmI1NDA5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMjMgMTM6MTM6MzcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5pbmRleCAyMzZlMjVhYmM3YTQyLi42ZjU1MjU4Y2YyY2ZiIDEwMDY0NFxuLS0tIGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcbkBAIC0zNDYwLDggJiM0MzszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuIFx0XHR9XG4gXG4gXHRcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XG4tXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgbGVuZ3RoO1xuLVx0XHRhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7XG4mIzQzO1x0XHRpZiAobGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKVxuJiM0MztcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4mIzQzO1x0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICYjNDM7IFNDVFBfUEFENChsZW5ndGgpO1xuJiM0MztcdFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyX2NvZGU7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgMjA5MDE1NmEyYmU1ZmUyNGY3ZThkODhmMDUwYTNmZmJjOWZiNTQwOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIzIDEzOjEzOjM3IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCmluZGV4IDIzNmUyNWFiYzdhNDIuLjZmNTUyNThjZjJjZmIgMTAwNjQ0Ci0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwomIzQzOyYjNDM7JiM0MzsgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKQEAgLTM0NjAsOCAmIzQzOzM0NjAsMTAgQEAgc3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssCiAJCX0KIAogCQlsZW5ndGggPSBudG9ocyhhc2NvbmZfYWNrX3BhcmFtLSZndDtwYXJhbV9oZHIubGVuZ3RoKTsKLQkJYXNjb25mX2Fja19wYXJhbSA9ICh2b2lkICopYXNjb25mX2Fja19wYXJhbSAmIzQzOyBsZW5ndGg7Ci0JCWFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDsKJiM0MzsJCWlmIChsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKQomIzQzOwkJCXJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTsKJiM0MzsJCWFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgU0NUUF9QQUQ0KGxlbmd0aCk7CiYjNDM7CQlhc2NvbmZfYWNrX2xlbiAtPSBTQ1RQX1BBRDQobGVuZ3RoKTsKIAl9CiAKIAlyZXR1cm4gZXJyX2NvZGU7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNzcKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTt2ZSBnb3QgYSBwYXRjaCBoZXJlIG1vZGlmeWluZyBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYC4gTG9va3MgbGlrZSB0aGV5JiMzOTt2ZSBhZGRlZCBhIGNoZWNrIGZvciB0aGUgbGVuZ3RoIG9mIHNvbWV0aGluZywgc3BlY2lmaWNhbGx5IGBsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpYC4gVGhlIGNoYW5nZSBpcyB1c2luZyBgU0NUUF9QQUQ0KGxlbmd0aClgIGluc3RlYWQgb2YganVzdCBgbGVuZ3RoYCB3aGVuIHRoZXkmIzM5O3JlIHVwZGF0aW5nIHRoZSBgYXNjb25mX2Fja19wYXJhbWAgcG9pbnRlciBhbmQgZGVjcmVtZW50aW5nIGBhc2NvbmZfYWNrX2xlbmAuIEZyb20gYSBuZXR3b3JraW5nIHBlcnNwZWN0aXZlLCBhbmQgZ2l2ZW4gbXkgZXhwZXJpZW5jZSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIGhvdyB0aGUgU0NUUCBzdGFjayBpcyBoYW5kbGluZyBBU0NPTkYgQUNLIGNodW5rcy4gQ3JpdGljYWxseSwgaXQgbG9va3MgbGlrZSBhIHBvdGVudGlhbCBhcmVhIGZvciB2dWxuZXJhYmlsaXRpZXMuIFRoaXMgaXMgKmRlZmluaXRlbHkqIHdvcnRoIHRocm93aW5nIHNvbWUgZnV6emluZyBhdC4gSSBjYW4gc2VlIGEgcG90ZW50aWFsIGZvciBzb21lIGludGVyZXN0aW5nIGVkZ2UgY2FzZXMgYmVpbmcgdHJpZ2dlcmVkIGhlcmUuCgpOb3csIGxldCBtZSBkaWcgYSBsaXR0bGUgZGVlcGVyLiBJJiMzOTttIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaG93IHRoZSBmdW5jdGlvbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBpcyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBJJiMzOTtsbCBkbyBhIGdyZXAgc2VhcmNoIGZvciBpdC4gQW5kIG9mIGNvdXJzZSwgSSBzaG91bGQgdGFrZSBhIGxvb2sgYXQgdGhlIEtjb25maWcgZmlsZSBmb3IgU0NUUCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHZhcmlvdXMgY29uZmlndXJhdGlvbiBvcHRpb25zIHRoYXQgbWlnaHQgaW1wYWN0IHRoaXMgcGFydGljdWxhciBmdW5jdGlvbiBhbmQgaXRzIGJlaGF2aW9yLiBVbmRlcnN0YW5kaW5nIHRoZSBjb25maWd1cmFiaWxpdHkgd2lsbCBiZSBrZXkgdG8gY3JlYXRpbmcgZWZmZWN0aXZlIGZ1enppbmcgaGFybmVzc2VzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfZ2V0X2FzY29uZl9yZXNwb25zZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9zY3RwLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzM1Nj1zdGF0aWMgdm9pZCBzY3RwX2FzY29uZl9wYXJhbV9zdWNjZXNzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxuLS1cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNDE2LSAqL1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjM0MTc6c3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxOC1cdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbSAqYXNjb25mX3BhcmFtLFxuLS1cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zNDczPWludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzUxMi1cdFx0ZWxzZSB7XG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzUxMzpcdFx0XHRlcnJfY29kZSA9IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShhc2NvbmZfYWNrLFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM1MTQtXHRcdFx0XHRcdFx0XHQgICAgYXNjb25mX3BhcmFtLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4ODAKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBBU0NPTkYgUmVzcG9uc2UgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgZnVuY3Rpb24sIGFuZCBpdCYjMzk7cyBmbGFnZ2VkIGFzIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSXQgbWVhbnMgaXQmIzM5O3Mgb25seSB2aXNpYmxlIHdpdGhpbiB0aGUgY3VycmVudCBjb21waWxhdGlvbiB1bml0LCB3aGljaCBsaW1pdHMgaXRzIHNjb3BlIGFuZCBwb3RlbnRpYWwgZm9yIGV4dGVybmFsIG1vZGlmaWNhdGlvbiwgd2hpY2ggaXMgYSBrZXkgZGVzaWduIGNob2ljZS4gVGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNhbGxzIGl0LiBUaGUgdGV4dCBtZW50aW9ucyBpdCBpcyBjYWxsZWQgYnkgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYC4KCk5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIHR3by4gVGhlIGltcG9ydGFudCB0aGluZyBpcyB0byB1bmRlcnN0YW5kIHdoZXRoZXIgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpcyB2aXNpYmxlIHRvIG90aGVyIHBhcnRzIG9mIHRoZSBTQ1RQIHN0YWNrIG9yIGlmIGl0IGlzIGFsc28gc3RhdGljIG9yIG9ubHkgYWNjZXNzaWJsZSBpbiB0aGlzIG1vZHVsZS4gSWYgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpcyBhbHNvIHN0YXRpYywgdGhlbiB0aGF0IG5hcnJvd3MgZG93biB0aGUgY29udGV4dCBmdXJ0aGVyLCBpbXBseWluZyBhIHRpZ2h0bHkgY291cGxlZCBpbnRlcm5hbCBtZWNoYW5pc20uIElmIGBzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja2AgaXMgZXhwb3J0ZWQsIHRoYXQgc3VnZ2VzdHMgYSBicm9hZGVyIGludGVyYWN0aW9uIHBvaW50IHdpdGhpbiB0aGUgU0NUUCBwcm90b2NvbCBoYW5kbGluZywgb3IgcG9zc2libHkgZXZlbiB0aGUgdXNlciBzcGFjZS4gSSYjMzk7bGwgbmVlZCB0byBnbyBhbmQgZXhhbWluZSB0aGF0IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIG5vdyB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIGFsbCBmaXRzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjEzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3NjdHBfcHJvY2Vzc19hc2NvbmZfYWNrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3NjdHAvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zNDE3PXN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuLS1cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNDcyLS8qIFByb2Nlc3MgYW4gaW5jb21pbmcgQVNDT05GX0FDSyBjaHVuayBhZ2FpbnN0IHRoZSBjYWNoZWQgbGFzdCBBU0NPTkYgY2h1bmsuICovXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzQ3MzppbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQ3NC1cdFx0XHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXG4tLVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDA1NT1lbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19hc2NvbmZfYWNrKHN0cnVjdCBuZXQgKm5ldCxcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MTM5LVxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NDE0MDpcdFx0aWYgKCFzY3RwX3Byb2Nlc3NfYXNjb25mX2Fjaygoc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKilhc29jLFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDE0MS1cdFx0XHRcdFx0ICAgICBhc2NvbmZfYWNrKSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNTY3CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqU0NUUCBBU0NPTkYgQUNLIFByb2Nlc3Npbmcg4oCTIEEgUXVpY2sgQ2hlY2sqKgoKT2theSwgc28gYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpc24mIzM5O3Qgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhcyBzb21ldGhpbmcgdG8gY29uc2lkZXIgd2hlbiByZXZpZXdpbmcgaXRzIHVzZSBhbmQgc2NvcGUuIE5vbi1zdGF0aWMgaW1wbGllcyBpdCYjMzk7cyBlaXRoZXIgaW50ZW5kZWQgZm9yIGV4dGVybmFsIHVzZSwgb3IgYXQgbGVhc3QgdmlzaWJsZSBiZXlvbmQgaXRzIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggcmFpc2VzIHRoZSB1c3VhbCBxdWVzdGlvbnMgYWJvdXQgcG90ZW50aWFsIHJlLWVudHJhbmN5IGlzc3VlcywgZ2xvYmFsIHN0YXRlLCBhbmQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzLiBCZWZvcmUgSSBkaXZlIGludG8gYW55IHNwZWNpZmljIGNvZGUsIHRoZSBmaXJzdCB0aGluZyBJJiMzOTttIGRvaW5nIGlzIGNvbmZpcm1pbmcgdGhlIGNvbmZpZ3VyYXRpb24uIExldCYjMzk7cyBwdWxsIHVwIHRoZSBLY29uZmlnIGZvciBTQ1RQIOKAkyBJIG5lZWQgdG8gcXVpY2tseSB2ZXJpZnkgYW55IGRlcGVuZGVuY2llcyBhbmQgY29tcGlsYXRpb24gb3B0aW9ucyByZWxhdGVkIHRvIHRoaXMgZnVuY3Rpb24uIFVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIGVudmlyb25tZW50IGFuZCBhbnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gcGF0aHMgaXQmIzM5O3MgaW52b2x2ZWQgaW4gaXMgYWJzb2x1dGVseSBjcml0aWNhbCBiZWZvcmUgSSBzdGFydCB0cmFjaW5nIHRoZSBjb2RlIGl0c2VsZi4gVGhlIEtjb25maWcgd2lsbCB0ZWxsIG1lIGEgbG90IGFib3V0IHRoaXMgZnVuY3Rpb24mIzM5O3MgdHlwaWNhbCBkZXBsb3ltZW50IHNjZW5hcmlvcyBhbmQgaG93IGl0cyBhdmFpbGFiaWxpdHkgaXMgY29udHJvbGxlZC4gR290dGEgZXN0YWJsaXNoIHRoZSBiYXNlbGluZSBiZWZvcmUgZGlnZ2luZyBkZWVwZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvS2NvbmZpZy01LVxubmV0L3NjdHAvS2NvbmZpZzo2Om1lbnVjb25maWcgSVBfU0NUUFxubmV0L3NjdHAvS2NvbmZpZy03LVx0dHJpc3RhdGUgXCYjMzQ7VGhlIFNDVFAgUHJvdG9jb2xcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzOTA1CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrIGFuZCBEZXBlbmRlbmN5IFNjYW4qKgoKT2theSwgc28gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5nIGlzIGBJUF9TQ1RQYC4gTm93LCBiZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhpcyBzcGVjaWZpYyBjb25maWd1cmF0aW9uLCBJIHNob3VsZCBwcm9iYWJseSBkbyBhIHF1aWNrIHNhbml0eSBjaGVjay4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmVuJiMzOTt0IG1pc3NlZCBhbnkgcG90ZW50aWFsIGRlcGVuZGVuY2llcywgb3IgcmVsYXRlZCBzZXR0aW5ncyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBob3cgYElQX1NDVFBgIGJlaGF2ZXMuIEl0JiMzOTtzIHNlY29uZCBuYXR1cmUgZm9yIG1lIHRvIHRoaW5rIGhvbGlzdGljYWxseSwgc28gSSYjMzk7bGwgcXVpY2tseSBzY2FuIG15IG1lbnRhbCBkYXRhYmFzZSBmb3IgcmVsYXRlZCBjb21wb25lbnRzLCBwcm90b2NvbHMsIG9yIG1vZHVsZXMuIE1ha2luZyBzdXJlIEkgaGF2ZSBhIGdvb2QgZ3Jhc3Agb24gdGhlIGVudGlyZSBzeXN0ZW0gd2lsbCBwYXkgZGl2aWRlbmRzIGRvd24gdGhlIGxpbmUuIEkmIzM5O2xsIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgc2NvcGUgb2YgbXkgY3VycmVudCB0YXNrIGFuZCBwb3RlbnRpYWwgaXNzdWVzIHRoYXQgaXQgbWF5IGNhdXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHQjXG4gICAzOlx0IyBTQ1RQIGNvbmZpZ3VyYXRpb25cbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0bWVudWNvbmZpZyBJUF9TQ1RQXG4gICA3Olx0XHR0cmlzdGF0ZSBcJiMzNDtUaGUgU0NUUCBQcm90b2NvbFwmIzM0O1xuICAgODpcdFx0ZGVwZW5kcyBvbiBJTkVUXG4gICA5Olx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEExXG4gIDEwOlx0XHRzZWxlY3QgQ1JZUFRPX0xJQl9TSEEyNTZcbiAgMTE6XHRcdHNlbGVjdCBDUllQVE9fTElCX1VUSUxTXG4gIDEyOlx0XHRzZWxlY3QgTkVUX0NSQzMyQ1xuICAxMzpcdFx0c2VsZWN0IE5FVF9VRFBfVFVOTkVMXG4gIDE0Olx0XHRoZWxwXG4gIDE1Olx0XHQgIFN0cmVhbSBDb250cm9sIFRyYW5zbWlzc2lvbiBQcm90b2NvbFxuICAxNjpcdFxuICAxNzpcdFx0ICBGcm9tIFJGQyAyOTYwIFx1MDAzY2h0dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI5NjAudHh0XHUwMDNlLlxuICAxODpcdFxuICAxOTpcdFx0ICBcJiMzNDtTQ1RQIGlzIGEgcmVsaWFibGUgdHJhbnNwb3J0IHByb3RvY29sIG9wZXJhdGluZyBvbiB0b3Agb2YgYVxuICAyMDpcdFx0ICBjb25uZWN0aW9ubGVzcyBwYWNrZXQgbmV0d29yayBzdWNoIGFzIElQLiAgSXQgb2ZmZXJzIHRoZSBmb2xsb3dpbmdcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDM5MAoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDY2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRoaW5raW5nOgoKKipFeGFtaW5pbmcgdGhlIFNDVFAgQVNDT05GIEFDSyBQcm9jZXNzaW5nKioKCk9rYXksIHNvIEkmIzM5O20gZGl2aW5nIGludG8gdGhlIFNDVFAgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYElQX1NDVFBgIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciB0aGF0LiBNeSBmb2N1cyBpcyBuYXJyb3dpbmcgaW4gb24gaG93IHRoZSBBU0NPTkYgQUNLIGlzIHByb2Nlc3NlZC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IHRoZSBmdW5jdGlvbnMgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBhbmQgYHNjdHBfc2ZfZG9fYXNjb25mX2Fja2AuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gaW1tZWRpYXRlbHkgY3VyaW91cyBhYm91dCB0aGUgbmF0dXJlIG9mIGBzY3RwX3NmX2RvX2FzY29uZl9hY2tgLiBNeSBmaXJzdCBxdWVzdGlvbiBpcywgaXMgdGhpcyBmdW5jdGlvbiBzdGF0aWM/IFRoYXQga25vd2xlZGdlIHdpbGwgZ3JlYXRseSBpbmZvcm0gaG93IGl0JiMzOTtzIHVzZWQgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHZpc2liaWxpdHkgd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fc3RhdGVmdW5zLmM9NDAyNz1zdGF0aWMgZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2VuZF9uZXh0X2FzY29uZihcbi0tXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MDU0LSAqL1xubmV0L3NjdHAvc21fc3RhdGVmdW5zLmM6NDA1NTplbnVtIHNjdHBfZGlzcG9zaXRpb24gc2N0cF9zZl9kb19hc2NvbmZfYWNrKHN0cnVjdCBuZXQgKm5ldCxcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jLTQwNTYtXHRcdFx0XHRcdCAgICBjb25zdCBzdHJ1Y3Qgc2N0cF9lbmRwb2ludCAqZXAsXG4tLVxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jPTM4Mz1jaHVua19ldmVudF90YWJsZVtTQ1RQX05VTV9CQVNFX0NIVU5LX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xuLS1cbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy00MjctXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NDI4Olx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9kb19hc2NvbmZfYWNrKSwgXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy00MjktXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX1BFTkRJTkcgKi8gXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo0MzA6XHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2RvX2FzY29uZl9hY2spLCBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQzMS1cdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzMjpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fYXNjb25mX2FjayksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNDMzLVx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCAqLyBcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzNDpcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fYXNjb25mX2FjayksIFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNDM1LVx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9BQ0tfU0VOVCAqLyBcXFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTg5CgkJCQkJCQlvdXRwdXQ6IDEyMwoJCQkJCQkJdGhvdWdodHM6IDE0MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBTQ1RQIEFTQ09ORiBBQ0sgUGF0Y2gqKgoKT2theSwgaGVyZSYjMzk7cyB3aGF0IEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhpcyBwYXRjaC4gRmlyc3QsIGl0JiMzOTtzIGRlZmluaXRlbHkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCBub3QgYSBzdGF0aWMgY29uZGl0aW9uLiBUaGUga2V5IGZ1bmN0aW9ucyB0YXJnZXRlZCBhcmUgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBhbmQgYHNjdHBfc2ZfZG9fYXNjb25mX2Fja2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmb2N1cyBwb2ludHMgZm9yIG15IGFuYWx5c2lzLgoKVGhlIG1haW4gZ2lzdCBzZWVtcyB0byBiZSBmaXhpbmcgYSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0eS4gU3BlY2lmaWNhbGx5LCBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb3IgZXZlbiBhbiBpbmZpbml0ZSBsb29wIHdpdGhpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYC4gVGhpcyBpcyB0cmlnZ2VyZWQgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgdGhhdCBoYXMgcGFyYW1ldGVycyB3aXRoIGluY29ycmVjdCBsZW5ndGhzLiBUaGlzIGlzIGEgY2xlYXIgZnVuY3Rpb25hbCBjaGFuZ2Ugd2l0aGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgaXRzZWxmLCBtYWtpbmcgaXQgYSBwcmltZSBjYW5kaWRhdGUgZm9yIGZ1enppbmcuIFdlJiMzOTt2ZSBnb3QgdG8gYnJlYWsgaXQsIGZpbmQgd2hlcmUgaXQgZmFpbHMhCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBidXQgYElQX1NDVFBgIGxvb2tzIGxpa2UgYSBrZXkgb25lIHRvIHdhdGNoLiBJJiMzOTtsbCBtYWtlIHN1cmUgdG8gZG91YmxlLWNoZWNrLCBidXQgYElORVRgIGlzIHVzdWFsbHkgYSBnaXZlbi4gTm93LCBpdCYjMzk7cyB0aW1lIHRvIHNldCB0aGUgcmVzdWx0cyBhbmQgbW92ZSBmb3J3YXJkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SVBfU0NUUCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3NjdHBfcHJvY2Vzc19hc2NvbmZfYWNrJiMzNDssCiAgICAmIzM0O3NjdHBfc2ZfZG9fYXNjb25mX2FjayYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lQX1NDVFAmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayYjMzQ7LAogICAgJiMzNDtzY3RwX3NmX2RvX2FzY29uZl9hY2smIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxNDwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjE0PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIHBhcnNpbmcgaW5jb21pbmcgU0NUUCBBU0NPTkZfQUNLIGNodW5rcyBmcm9tIHRoZSBuZXR3b3JrLiBUaGUgcHJldmlvdXMgY29kZSBsYWNrZWQgYSBtaW5pbXVtIGxlbmd0aCBjaGVjayBhbmQgZGlkIG5vdCBwcm9wZXJseSBwYWQgdGhlIGxlbmd0aCB3aGVuIGFkdmFuY2luZyB0aGUgcGFyYW1ldGVyIHBvaW50ZXIgKGBhc2NvbmZfYWNrX3BhcmFtYCkgYW5kIGRlY3JlbWVudGluZyB0aGUgcmVtYWluaW5nIGxlbmd0aCAoYGFzY29uZl9hY2tfbGVuYCkuIFRoaXMgY291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wIChpZiBsZW5ndGggaXMgMCkgb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9mIHRoZSBzb2NrZXQgYnVmZmVyIChza2IpIGRhdGEuIFNpbmNlIHRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldCwgdGhlcmUgaXMgbm8gcmlzayBvZiByZWFkaW5nIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSBvciBsZWFraW5nIGl0IHRvIHVzZXIgc3BhY2UuIE91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIGluZmluaXRlIGxvb3BzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGZ1enppbmcgdGltZW91dHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDIwOTAxNTZhMmJlNWZlMjRmN2U4ZDg4ZjA1MGEzZmZiYzlmYjU0MDkKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYwppbmRleCAyMzZlMjVhYmM3YTQyLi42ZjU1MjU4Y2YyY2ZiIDEwMDY0NAotLS0gYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jCkBAIC0zNDYwLDggJiM0MzszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLAogCQl9CiAKIAkJbGVuZ3RoID0gbnRvaHMoYXNjb25mX2Fja19wYXJhbS0mZ3Q7cGFyYW1faGRyLmxlbmd0aCk7Ci0JCWFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgbGVuZ3RoOwotCQlhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7CiYjNDM7CQlpZiAobGVuZ3RoICZsdDsgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSkKJiM0MzsJCQlyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07CiYjNDM7CQlhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICYjNDM7IFNDVFBfUEFENChsZW5ndGgpOwomIzQzOwkJYXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7CiAJfQogCiAJcmV0dXJuIGVycl9jb2RlOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA3NAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTQ1RQIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jYC4gSXQgbG9va3MgbGlrZSBpdCYjMzk7cyBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhZGRpdGlvbiBvZiBhIGxlbmd0aCBjaGVjazogYGlmIChsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKWAgYW5kIGEgcmV0dXJuIG9mIGBTQ1RQX0VSUk9SX0lOVl9QQVJBTWAgaWYgaXQmIzM5O3MgdHJ1ZS4gTWFrZXMgc2Vuc2U7IHlvdSBkb24mIzM5O3Qgd2FudCB0byBiZSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBhIGJ1ZmZlciwgYW5kIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aCBpcyBhIGdvb2QgcmVhc29uIHRvIHNpZ25hbCBhbiBlcnJvci4KClRoZSBzZWNvbmQgcGFydCBpcyBtb3JlIGludGVyZXN0aW5nLiBJdCYjMzk7cyBjaGFuZ2luZyBob3cgdGhlIGBhc2NvbmZfYWNrX3BhcmFtYCBhbmQgYGFzY29uZl9hY2tfbGVuYCBwb2ludGVycyBhcmUgYWR2YW5jZWQuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBqdXN0IGFkZGluZyB0aGUgbGVuZ3RoLCBidXQgdGhlIHVwZGF0ZWQgdmVyc2lvbiBub3cgdXNlcyBgU0NUUF9QQUQ0KGxlbmd0aClgLiBDbGVhcmx5LCBpdCYjMzk7cyBhYm91dCBhbGlnbm1lbnQuIEFkZGluZyB0aGUgcGFkZGluZyBsaWtlbHkgZW5zdXJlcyB0aGF0IHRoZSBwYXJhbWV0ZXJzIGFyZSA0LWJ5dGUgYWxpZ25lZCwgd2hpY2ggaXMgY29tbW9uIGluIG5ldHdvcmsgcHJvdG9jb2xzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBvciBwb3NzaWJseSBldmVuIHJlcXVpcmVkIGJ5IHRoZSBoYXJkd2FyZS4gSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgZGVmaW5pdGlvbiBvZiBgU0NUUF9QQUQ0YCB0byBiZSBzdXJlLgoKVG8gZ2V0IGEgYmV0dGVyIGhhbmRsZSBvbiB0aGlzLCBJIG5lZWQgdG8gc2VlIHRoZSBjb250ZXh0LiBMZXQmIzM5O3MgdXNlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBmaW5kIGFsbCB0aGUgaW5zdGFuY2VzIG9mIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBTZWVpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUgd2lsbCBkZWZpbml0ZWx5IGhlbHAgY2xhcmlmeSB3aHkgdGhlc2UgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIENvbnRleHQgaXMga2luZywgYXMgYWx3YXlzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yMyAxMzoxNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTMzNTY9c3RhdGljIHZvaWQgc2N0cF9hc2NvbmZfcGFyYW1fc3VjY2VzcyhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxNi0gKi9cbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYzozNDE3OnN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM0MTgtXHRcdFx0XHQgICAgICAgc3RydWN0IHNjdHBfYWRkaXBfcGFyYW0gKmFzY29uZl9wYXJhbSxcbi0tXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzQ3Mz1pbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXG4tLVxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM1MTItXHRcdGVsc2Uge1xubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjM1MTM6XHRcdFx0ZXJyX2NvZGUgPSBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2UoYXNjb25mX2Fjayxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNTE0LVx0XHRcdFx0XHRcdFx0ICAgIGFzY29uZl9wYXJhbSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkyNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaXZpbmcgaW50byBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCoqCgpPa2F5LCB0aW1lIHRvIGRpZyBpbnRvIHRoaXMgZnVuY3Rpb24sIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLCBsb2NhdGVkIGluIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgLiBJJiMzOTttIGN1cmlvdXMgdG8gc2VlIGhvdyB0aGUgU0NUUCBzdGFjayBoYW5kbGVzIHRoZSBnZW5lcmF0aW9uIG9mIGFuIEFTQ09ORiByZXNwb25zZS4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGNydWNpYWwgcGllY2UgaW4gdGhlIGFkYXB0YXRpb24gbGF5ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggYXNzb2NpYXRpb24gY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBMZXQmIzM5O3Mgc2VlIGhvdyB0aGUgc3RhdGUgbWFjaGluZSBsb2dpYyBpbnRlcmFjdHMgaGVyZS4gSSBhbnRpY2lwYXRlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZSByZXNwb25zaWJsZSBmb3IgY3JhZnRpbmcgdGhlIGFwcHJvcHJpYXRlIGNodW5rLCBkZXRlcm1pbmluZyB3aGF0IGluZm9ybWF0aW9uIG5lZWRzIHRvIGJlIGluY2x1ZGVkIGJhc2VkIG9uIHRoZSBjb250ZXh0IG9mIHRoZSByZXF1ZXN0ZWQgY2hhbmdlLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBsb2dpYyB0aGF0IGRldGVybWluZXMgdGhlIHN1Y2Nlc3Mgb3IgZmFpbHVyZSBvZiB0aGUgcmVxdWVzdC4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBpdCByZXNwb25kcyB0byBkaWZmZXJlbnQgdHlwZXMgb2YgYXNzb2NpYXRpb24gY2hhbmdlIHJlcXVlc3RzOiBwZXJoYXBzIGFkZHJlc3MgYWRkaXRpb24gb3IgZGVsZXRpb24sIHBhcmFtZXRlciBuZWdvdGlhdGlvbiwgb3IgZXZlbiBhZGFwdGF0aW9uIGxheWVyIHBhcmFtZXRlcnMuIEkmIzM5O2xsIGJlIGZvY3VzZWQgb24gaG93IGl0IGNvbnN0cnVjdHMgdGhlIEFTQ09ORiBjaHVuaywgc2V0dGluZyB0aGUgZmxhZ3MgYW5kIHBhcmFtZXRlcnMgY29ycmVjdGx5LCBhbmQgd2hhdCBzb3J0IG9mIGVycm9yIGhhbmRsaW5nIGlzIGltcGxlbWVudGVkLiBJJiMzOTttIGFsc28gYW50aWNpcGF0aW5nIHRoYXQgaXQgbGV2ZXJhZ2VzIG90aGVyIGludGVybmFsIFNDVFAgZnVuY3Rpb25zIGZvciBidWlsZGluZyB0aGUgY2h1bmsgaXRzZWxmLCBsaWtlIHBheWxvYWQgZW5jb2RpbmcgYW5kIGxlbmd0aCBjYWxjdWxhdGlvbnMuIEkmIzM5O20gdGhpbmtpbmcgSSYjMzk7bGwgbG9vayBmb3Igc3BlY2lmaWMgaW50ZXJhY3Rpb25zIHdpdGggdGhlIFRDQiBhbmQgd2hpY2ggZGF0YSBzdHJ1Y3R1cmVzIGFyZSB1c2VkIGZvciB0aGUgYWN0dWFsIGNodW5rIGNvbnN0cnVjdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjMgMTM6MTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAzNDE3LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDYwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzM0MTc6XHRzdGF0aWMgX19iZTE2IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mX2FjayxcbjM0MTg6XHRcdFx0XHRcdCAgICAgICBzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbSAqYXNjb25mX3BhcmFtLFxuMzQxOTpcdFx0XHRcdFx0ICAgICAgIGludCBub19lcnIpXG4zNDIwOlx0e1xuMzQyMTpcdFx0c3RydWN0IHNjdHBfYWRkaXBfcGFyYW1cdCphc2NvbmZfYWNrX3BhcmFtO1xuMzQyMjpcdFx0c3RydWN0IHNjdHBfZXJyaGRyICplcnJfcGFyYW07XG4zNDIzOlx0XHRpbnQgYXNjb25mX2Fja19sZW47XG4zNDI0Olx0XHRfX2JlMTYgZXJyX2NvZGU7XG4zNDI1Olx0XHRpbnQgbGVuZ3RoO1xuMzQyNjpcdFxuMzQyNzpcdFx0aWYgKG5vX2VycilcbjM0Mjg6XHRcdFx0ZXJyX2NvZGUgPSBTQ1RQX0VSUk9SX05PX0VSUk9SO1xuMzQyOTpcdFx0ZWxzZVxuMzQzMDpcdFx0XHRlcnJfY29kZSA9IFNDVFBfRVJST1JfUkVRX1JFRlVTRUQ7XG4zNDMxOlx0XG4zNDMyOlx0XHRhc2NvbmZfYWNrX2xlbiA9IG50b2hzKGFzY29uZl9hY2stXHUwMDNlY2h1bmtfaGRyLVx1MDAzZWxlbmd0aCkgLVxuMzQzMzpcdFx0XHRcdCBzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpO1xuMzQzNDpcdFxuMzQzNTpcdFx0LyogU2tpcCB0aGUgYWRkaXBoZHIgZnJvbSB0aGUgYXNjb25mX2FjayBjaHVuayBhbmQgc3RvcmUgYSBwb2ludGVyIHRvXG4zNDM2Olx0XHQgKiB0aGUgZmlyc3QgYXNjb25mX2FjayBwYXJhbWV0ZXIuXG4zNDM3Olx0XHQgKi9cbjM0Mzg6XHRcdGxlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hZGRpcGhkcik7XG4zNDM5Olx0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHN0cnVjdCBzY3RwX2FkZGlwX3BhcmFtICopKGFzY29uZl9hY2stXHUwMDNlc2tiLVx1MDAzZWRhdGEgJiM0MztcbjM0NDA6XHRcdFx0XHRcdFx0XHQgICAgICAgbGVuZ3RoKTtcbjM0NDE6XHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbjM0NDI6XHRcbjM0NDM6XHRcdHdoaWxlIChhc2NvbmZfYWNrX2xlbiBcdTAwM2UgMCkge1xuMzQ0NDpcdFx0XHRpZiAoYXNjb25mX2Fja19wYXJhbS1cdTAwM2VjcnJfaWQgPT0gYXNjb25mX3BhcmFtLVx1MDAzZWNycl9pZCkge1xuMzQ0NTpcdFx0XHRcdHN3aXRjaCAoYXNjb25mX2Fja19wYXJhbS1cdTAwM2VwYXJhbV9oZHIudHlwZSkge1xuMzQ0NjpcdFx0XHRcdGNhc2UgU0NUUF9QQVJBTV9TVUNDRVNTX1JFUE9SVDpcbjM0NDc6XHRcdFx0XHRcdHJldHVybiBTQ1RQX0VSUk9SX05PX0VSUk9SO1xuMzQ0ODpcdFx0XHRcdGNhc2UgU0NUUF9QQVJBTV9FUlJfQ0FVU0U6XG4zNDQ5Olx0XHRcdFx0XHRsZW5ndGggPSBzaXplb2YoKmFzY29uZl9hY2tfcGFyYW0pO1xuMzQ1MDpcdFx0XHRcdFx0ZXJyX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICYjNDM7IGxlbmd0aDtcbjM0NTE6XHRcdFx0XHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbjM0NTI6XHRcdFx0XHRcdGlmIChhc2NvbmZfYWNrX2xlbiBcdTAwM2UgMClcbjM0NTM6XHRcdFx0XHRcdFx0cmV0dXJuIGVycl9wYXJhbS1cdTAwM2VjYXVzZTtcbjM0NTQ6XHRcdFx0XHRcdGVsc2VcbjM0NTU6XHRcdFx0XHRcdFx0cmV0dXJuIFNDVFBfRVJST1JfSU5WX1BBUkFNO1xuMzQ1NjpcdFx0XHRcdFx0YnJlYWs7XG4zNDU3Olx0XHRcdFx0ZGVmYXVsdDpcbjM0NTg6XHRcdFx0XHRcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcbjM0NTk6XHRcdFx0XHR9XG4zNDYwOlx0XHRcdH1cbjM0NjE6XHRcbjM0NjI6XHRcdFx0bGVuZ3RoID0gbnRvaHMoYXNjb25mX2Fja19wYXJhbS1cdTAwM2VwYXJhbV9oZHIubGVuZ3RoKTtcbjM0NjM6XHRcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcbjM0NjQ6XHRcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4zNDY1Olx0XHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgU0NUUF9QQUQ0KGxlbmd0aCk7XG4zNDY2Olx0XHRcdGFzY29uZl9hY2tfbGVuIC09IFNDVFBfUEFENChsZW5ndGgpO1xuMzQ2NzpcdFx0fVxuMzQ2ODpcdFxuMzQ2OTpcdFx0cmV0dXJuIGVycl9jb2RlO1xuMzQ3MDpcdH1cbjM0NzE6XHRcbjM0NzI6XHQvKiBQcm9jZXNzIGFuIGluY29taW5nIEFTQ09ORl9BQ0sgY2h1bmsgYWdhaW5zdCB0aGUgY2FjaGVkIGxhc3QgQVNDT05GIGNodW5rLiAqL1xuMzQ3MzpcdGludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcbjM0NzQ6XHRcdFx0XHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXG4zNDc1Olx0e1xuMzQ3NjpcdFx0c3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZiA9IGFzb2MtXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmY7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjE0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQyOTkKCQkJCQkJCW91dHB1dDogMTgzCgkJCQkJCQl0aG91Z2h0czogNTY3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTmV0d29yayBQYWNrZXQgUGFyc2luZyBGaXgqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIG15IGluaXRpYWwgdGhvdWdodCBpcywgJiMzNDtUaGlzIGZpeGVzIGFuIGluZmluaXRlIGxvb3Agb3IgcG90ZW50aWFsIG91dC1vZi1ib3VuZHMgYWNjZXNzIGluIHRoZSBTQ1RQIGNvZGUuJiMzNDsgVGhlIGNvcmUgaXNzdWUgaXMgaG93IHRoZSBjb2RlIGhhbmRsZXMgdGhlIGBsZW5ndGhgIGZpZWxkIGZyb20gYW4gQVNDT05GX0FDSyBwYXJhbWV0ZXIgd2l0aGluIGFuIGluY29taW5nIG5ldHdvcmsgcGFja2V0LgoKSWYgYGxlbmd0aGAgaXMgemVybywgdGhlIG9yaWdpbmFsIGNvZGUgZG9lc24mIzM5O3QgYWR2YW5jZSB0aGUgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSwgbGVhZGluZyB0byBhbiBpbmZpbml0ZSBsb29wLCBleGFjdGx5IGFzIEkgc3VzcGVjdGVkLiBUaGVuIEkgcmVhbGl6ZWQgdGhlcmUmIzM5O3MgbW9yZSB0byBpdC4gRXZlbiBpZiBgbGVuZ3RoYCBpc24mIzM5O3QgemVybywgaWYgaXQmIzM5O3MgKm5vdCogcHJvcGVybHkgcGFkZGVkLCBgYXNjb25mX2Fja19wYXJhbWAgY291bGQgYmVjb21lIG1pc2FsaWduZWQuIFRoaXMgd291bGQgY2F1c2UgaXNzdWVzIHdpdGggc3Vic2VxdWVudCByZWFkcyBhbmQgY2FsY3VsYXRpb25zLiBOb3csIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHBhcnNpbmcgbmV0d29yayBkYXRhIGluc2lkZSBgYXNjb25mX2Fjay0mZ3Q7c2tiLSZndDtkYXRhYCwgaXQmIzM5O3MgYWxsIGNvbWluZyBpbiBhcyBuZXR3b3JrIGlucHV0LgoKU3BlY2lmaWNhbGx5LCBhIGBsZW5ndGhgIG9mIHplcm8gbGVhZHMgdG8gYW4gaW5maW5pdGUgbG9vcCwgd2hpY2ggaXMgYmFkLCBidXQgb3V0LW9mLWJvdW5kcyByZWFkcyBpZiBsZW5ndGggaXNuJiMzOTt0IHBhZGRlZCBpcyB3aGF0IGdldHMgbXkgYXR0ZW50aW9uLiBCdXQgdGhlIG91dC1vZi1ib3VuZHMgaXNzdWUgaXMgdGhlIGJpZ2dlciBjb25jZXJuLiBJIGJlbGlldmUgdGhlIHVucGFkZGVkIGRhdGEgc2l0dWF0aW9uIHdvdWxkIGNhdXNlIHJlYWRzIG91dHNpZGUgb2YgdGhlIGFsbG9jYXRlZCBidWZmZXIuIEkmIzM5O2QgZXhwZWN0IEtBU0FOIHRvIGNhdGNoIHRoZXNlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuCgpOb3csIG15IG1pbmQgZ29lcyB0byB0aGUgcXVlc3Rpb24gb2YgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXNuJiMzOTt0IHJlYWRpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkuIFRoaXMgaXMgcmVhZGluZyAqaW5jb21pbmcgbmV0d29yayBkYXRhKi4gSSYjMzk7bSBwYXJzaW5nIGFuIGBza2JgLCBzbyB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldC4gS01TQU4gaXMgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyB0aGF0JiMzOTtzIG5vdCByZWxldmFudCBoZXJlLiBTbywgdGhlIGJ1ZyBpcyBhIHN0YW5kYXJkIG91dC1vZi1ib3VuZHMgb3IgaW5maW5pdGUgbG9vcCBidWcuCgpMZXQgbWUgdGFrZSBhbm90aGVyIHF1aWNrIGxvb2sgYXQgdGhlIHBhdGNoIGl0c2VsZiB0byBjb25maXJtLgoKYGBgYwogCQlsZW5ndGggPSBudG9ocyhhc2NvbmZfYWNrX3BhcmFtLSZndDtwYXJhbV9oZHIubGVuZ3RoKTsKLQkJYXNjb25mX2Fja19wYXJhbSA9ICh2b2lkICopYXNjb25mX2Fja19wYXJhbSAmIzQzOyBsZW5ndGg7Ci0JCWFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDsKJiM0MzsJCWlmIChsZW5ndGggJmx0OyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKQomIzQzOwkJCXJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTsKJiM0MzsJCWFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gJiM0MzsgU0NUUF9QQUQ0KGxlbmd0aCk7CiYjNDM7CQlhc2NvbmZfYWNrX2xlbiAtPSBTQ1RQX1BBRDQobGVuZ3RoKTsKYGBgCgpZZXAsIHRoYXQmIzM5O3MgZXhhY3RseSB3aGF0IEkgdGhvdWdodC4gSXQmIzM5O3MgcHJvcGVybHkgY2hlY2tpbmcgdGhlIGBsZW5ndGhgIGZpZWxkIHRvIGVuc3VyZSBpdCBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgaGVhZGVyIHN0cnVjdHVyZSwgYW5kIGl0JiMzOTtzIGFwcGx5aW5nIHBhZGRpbmcgd2hlbiBjYWxjdWxhdGluZyB0aGUgbmV3IHBvaW50ZXIgcG9zaXRpb24gYW5kIHJlbWFpbmluZyBsZW5ndGguIFRoaXMgaGFuZGxlcyBib3RoIHRoZSB6ZXJvLWxlbmd0aCBpbmZpbml0ZSBsb29wIGFuZCB0aGUgdW5hbGlnbmVkIGFjY2VzcyBwcm9ibGVtcy4gVGhpcyBpcyBhbGwgbmV0d29yay1yZWNlaXZlZCBkYXRhLiBObyB1bmluaXRpYWxpemVkIG1lbW9yeSBpcyBpbnZvbHZlZC4KClRoZXJlZm9yZSwgYE5lZWRzS01TQU4gPSBmYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzIzIDEzOjE0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIGlzc3VlIGluIHBhcnNpbmcgaW5jb21pbmcgU0NUUCBBU0NPTkZfQUNLIGNodW5rcyBmcm9tIHRoZSBuZXR3b3JrLiBUaGUgcHJldmlvdXMgY29kZSBsYWNrZWQgYSBtaW5pbXVtIGxlbmd0aCBjaGVjayBhbmQgZGlkIG5vdCBwcm9wZXJseSBwYWQgdGhlIGxlbmd0aCB3aGVuIGFkdmFuY2luZyB0aGUgcGFyYW1ldGVyIHBvaW50ZXIgKGBhc2NvbmZfYWNrX3BhcmFtYCkgYW5kIGRlY3JlbWVudGluZyB0aGUgcmVtYWluaW5nIGxlbmd0aCAoYGFzY29uZl9hY2tfbGVuYCkuIFRoaXMgY291bGQgbGVhZCB0byBhbiBpbmZpbml0ZSBsb29wIChpZiBsZW5ndGggaXMgMCkgb3IgYW4gb3V0LW9mLWJvdW5kcyByZWFkIG9mIHRoZSBzb2NrZXQgYnVmZmVyIChza2IpIGRhdGEuIFNpbmNlIHRoZSBkYXRhIGJlaW5nIHBhcnNlZCBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldCwgdGhlcmUgaXMgbm8gcmlzayBvZiByZWFkaW5nIHVuaW5pdGlhbGl6ZWQga2VybmVsIG1lbW9yeSBvciBsZWFraW5nIGl0IHRvIHVzZXIgc3BhY2UuIE91dC1vZi1ib3VuZHMgcmVhZHMgYW5kIGluZmluaXRlIGxvb3BzIGFyZSBlZmZlY3RpdmVseSBjYXVnaHQgYnkgS0FTQU4gYW5kIHN0YW5kYXJkIGZ1enppbmcgdGltZW91dHMuIFRoZXJlZm9yZSwgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBuZWNlc3NhcnkuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzozOC4wMjIyMTk1OTNaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MzYzNjcxNjQwMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJUF9TQ1RQXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic2N0cF9wcm9jZXNzX2FzY29uZl9hY2tcIixcbiAgICBcInNjdHBfc2ZfZG9fYXNjb25mX2Fja1wiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gcGFyc2luZyBpbmNvbWluZyBTQ1RQIEFTQ09ORl9BQ0sgY2h1bmtzIGZyb20gdGhlIG5ldHdvcmsuIFRoZSBwcmV2aW91cyBjb2RlIGxhY2tlZCBhIG1pbmltdW0gbGVuZ3RoIGNoZWNrIGFuZCBkaWQgbm90IHByb3Blcmx5IHBhZCB0aGUgbGVuZ3RoIHdoZW4gYWR2YW5jaW5nIHRoZSBwYXJhbWV0ZXIgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSBhbmQgZGVjcmVtZW50aW5nIHRoZSByZW1haW5pbmcgbGVuZ3RoIChgYXNjb25mX2Fja19sZW5gKS4gVGhpcyBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AgKGlmIGxlbmd0aCBpcyAwKSBvciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb2YgdGhlIHNvY2tldCBidWZmZXIgKHNrYikgZGF0YS4gU2luY2UgdGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGluaXRpYWxpemVkIGZyb20gdGhlIG5ldHdvcmsgcGFja2V0LCB0aGVyZSBpcyBubyByaXNrIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IG9yIGxlYWtpbmcgaXQgdG8gdXNlciBzcGFjZS4gT3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW5maW5pdGUgbG9vcHMgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgZnV6emluZyB0aW1lb3V0cy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjM4LjAyMjIyNDc5M1oiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ2ODkxNjU0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgMjA5MDE1NmEyYmU1ZmUyNGY3ZThkODhmMDUwYTNmZmJjOWZiNTQwOVxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMgYi9uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcXG5pbmRleCAyMzZlMjVhYmM3YTQyLi42ZjU1MjU4Y2YyY2ZiIDEwMDY0NFxcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbisrKyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xcbkBAIC0zNDYwLDggKzM0NjAsMTAgQEAgc3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXFxuIFxcdFxcdH1cXG4gXFxuIFxcdFxcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXFx1MDAzZXBhcmFtX2hkci5sZW5ndGgpO1xcbi1cXHRcXHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICsgbGVuZ3RoO1xcbi1cXHRcXHRhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7XFxuK1xcdFxcdGlmIChsZW5ndGggXFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpKVxcbitcXHRcXHRcXHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XFxuK1xcdFxcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcXG4rXFx0XFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XFxuIFxcdH1cXG4gXFxuIFxcdHJldHVybiBlcnJfY29kZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTM6MzguNDY5OTcwNzk4WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6MjMwMTk4NTg3MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSVBfU0NUUFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrXCIsXG4gICAgXCJzY3RwX3NmX2RvX2FzY29uZl9hY2tcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIHJlYWQgb3IgaW5maW5pdGUgbG9vcCBpbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB3aXRoIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBTQ1RQIG5ldHdvcmtpbmcgc3RhY2sgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIwOTAxNTZhMmJlNWZlMjRmN2U4ZDg4ZjA1MGEzZmZiYzlmYjU0MDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuaW5kZXggMjM2ZTI1YWJjN2E0Mi4uNmY1NTI1OGNmMmNmYiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMzQ2MCw4ICszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuIFx0XHR9XG4gXG4gXHRcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XG4tXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBsZW5ndGg7XG4tXHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbitcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcbitcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4rXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcbitcdFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyX2NvZGU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzozOC40Njk5NzMwMzhaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODYyNDQwNDc1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQgb2YgdGhlIFNDVFAgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCBhIHBhdGNoIGhlcmUgbW9kaWZ5aW5nIGBuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIGluIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBMb29rcyBsaWtlIHRoZXkndmUgYWRkZWQgYSBjaGVjayBmb3IgdGhlIGxlbmd0aCBvZiBzb21ldGhpbmcsIHNwZWNpZmljYWxseSBgbGVuZ3RoIFx1MDAzYyBzaXplb2Yoc3RydWN0IHNjdHBfcGFyYW1oZHIpYC4gVGhlIGNoYW5nZSBpcyB1c2luZyBgU0NUUF9QQUQ0KGxlbmd0aClgIGluc3RlYWQgb2YganVzdCBgbGVuZ3RoYCB3aGVuIHRoZXkncmUgdXBkYXRpbmcgdGhlIGBhc2NvbmZfYWNrX3BhcmFtYCBwb2ludGVyIGFuZCBkZWNyZW1lbnRpbmcgYGFzY29uZl9hY2tfbGVuYC4gRnJvbSBhIG5ldHdvcmtpbmcgcGVyc3BlY3RpdmUsIGFuZCBnaXZlbiBteSBleHBlcmllbmNlLCB0aGlzIGlzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gaG93IHRoZSBTQ1RQIHN0YWNrIGlzIGhhbmRsaW5nIEFTQ09ORiBBQ0sgY2h1bmtzLiBDcml0aWNhbGx5LCBpdCBsb29rcyBsaWtlIGEgcG90ZW50aWFsIGFyZWEgZm9yIHZ1bG5lcmFiaWxpdGllcy4gVGhpcyBpcyAqZGVmaW5pdGVseSogd29ydGggdGhyb3dpbmcgc29tZSBmdXp6aW5nIGF0LiBJIGNhbiBzZWUgYSBwb3RlbnRpYWwgZm9yIHNvbWUgaW50ZXJlc3RpbmcgZWRnZSBjYXNlcyBiZWluZyB0cmlnZ2VyZWQgaGVyZS5cblxuTm93LCBsZXQgbWUgZGlnIGEgbGl0dGxlIGRlZXBlci4gSSdtIGdvaW5nIHRvIHF1aWNrbHkgY2hlY2sgaG93IHRoZSBmdW5jdGlvbiBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBpcyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUga2VybmVsLiBJJ2xsIGRvIGEgZ3JlcCBzZWFyY2ggZm9yIGl0LiBBbmQgb2YgY291cnNlLCBJIHNob3VsZCB0YWtlIGEgbG9vayBhdCB0aGUgS2NvbmZpZyBmaWxlIGZvciBTQ1RQIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBwYXJ0aWN1bGFyIGZ1bmN0aW9uIGFuZCBpdHMgYmVoYXZpb3IuIFVuZGVyc3RhbmRpbmcgdGhlIGNvbmZpZ3VyYWJpbGl0eSB3aWxsIGJlIGtleSB0byBjcmVhdGluZyBlZmZlY3RpdmUgZnV6emluZyBoYXJuZXNzZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNzcsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNzAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo0My4zMzI0MTYyNTJaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA4NDI4OTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzM1Nj1zdGF0aWMgdm9pZCBzY3RwX2FzY29uZl9wYXJhbV9zdWNjZXNzKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLFxcbi0tXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM0MTYtICovXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jOjM0MTc6c3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM0MTgtXFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCBzY3RwX2FkZGlwX3BhcmFtICphc2NvbmZfcGFyYW0sXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM9MzQ3Mz1pbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzUxMi1cXHRcXHRlbHNlIHtcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzUxMzpcXHRcXHRcXHRlcnJfY29kZSA9IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShhc2NvbmZfYWNrLFxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNTE0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICBhc2NvbmZfcGFyYW0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjQzLjM4MzI2NTk3MVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzEyMjA3NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEFTQ09ORiBSZXNwb25zZSBIYW5kbGluZyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgZnVuY3Rpb24sIGFuZCBpdCdzIGZsYWdnZWQgYXMgYHN0YXRpY2AuIFRoYXQgaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBJdCBtZWFucyBpdCdzIG9ubHkgdmlzaWJsZSB3aXRoaW4gdGhlIGN1cnJlbnQgY29tcGlsYXRpb24gdW5pdCwgd2hpY2ggbGltaXRzIGl0cyBzY29wZSBhbmQgcG90ZW50aWFsIGZvciBleHRlcm5hbCBtb2RpZmljYXRpb24sIHdoaWNoIGlzIGEga2V5IGRlc2lnbiBjaG9pY2UuIFRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIHJvbGUsIGJ1dCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGNhbGxzIGl0LiBUaGUgdGV4dCBtZW50aW9ucyBpdCBpcyBjYWxsZWQgYnkgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYC5cblxuTm93LCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlc2UgdHdvLiBUaGUgaW1wb3J0YW50IHRoaW5nIGlzIHRvIHVuZGVyc3RhbmQgd2hldGhlciBgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2tgIGlzIHZpc2libGUgdG8gb3RoZXIgcGFydHMgb2YgdGhlIFNDVFAgc3RhY2sgb3IgaWYgaXQgaXMgYWxzbyBzdGF0aWMgb3Igb25seSBhY2Nlc3NpYmxlIGluIHRoaXMgbW9kdWxlLiBJZiBgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2tgIGlzIGFsc28gc3RhdGljLCB0aGVuIHRoYXQgbmFycm93cyBkb3duIHRoZSBjb250ZXh0IGZ1cnRoZXIsIGltcGx5aW5nIGEgdGlnaHRseSBjb3VwbGVkIGludGVybmFsIG1lY2hhbmlzbS4gSWYgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpcyBleHBvcnRlZCwgdGhhdCBzdWdnZXN0cyBhIGJyb2FkZXIgaW50ZXJhY3Rpb24gcG9pbnQgd2l0aGluIHRoZSBTQ1RQIHByb3RvY29sIGhhbmRsaW5nLCBvciBwb3NzaWJseSBldmVuIHRoZSB1c2VyIHNwYWNlLiBJJ2xsIG5lZWQgdG8gZ28gYW5kIGV4YW1pbmUgdGhhdCBmdW5jdGlvbiBkZWNsYXJhdGlvbiBub3cgdG8gZmlndXJlIG91dCBob3cgdGhpcyBhbGwgZml0cyB0b2dldGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg4MCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjQ2LjkxNDQ4OTQxNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODczODM2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvc2N0cC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvc21fbWFrZV9jaHVuay5jPTM0MTc9c3RhdGljIF9fYmUxNiBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2Uoc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2ssXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQ3Mi0vKiBQcm9jZXNzIGFuIGluY29taW5nIEFTQ09ORl9BQ0sgY2h1bmsgYWdhaW5zdCB0aGUgY2FjaGVkIGxhc3QgQVNDT05GIGNodW5rLiAqL1xcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYzozNDczOmludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQ3NC1cXHRcXHRcXHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYz00MDU1PWVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NmX2RvX2FzY29uZl9hY2soc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDEzOS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYzo0MTQwOlxcdFxcdGlmICghc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soKHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICopYXNvYyxcXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MTQxLVxcdFxcdFxcdFxcdFxcdCAgICAgYXNjb25mX2FjaykpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjQ2Ljk2MzIzODkxM1oiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0NzcwNDU3MjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKlNDVFAgQVNDT05GIEFDSyBQcm9jZXNzaW5nIOKAkyBBIFF1aWNrIENoZWNrKipcblxuT2theSwgc28gYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBpc24ndCBzdGF0aWMuIFRoYXQgaW1tZWRpYXRlbHkganVtcHMgb3V0IGFzIHNvbWV0aGluZyB0byBjb25zaWRlciB3aGVuIHJldmlld2luZyBpdHMgdXNlIGFuZCBzY29wZS4gTm9uLXN0YXRpYyBpbXBsaWVzIGl0J3MgZWl0aGVyIGludGVuZGVkIGZvciBleHRlcm5hbCB1c2UsIG9yIGF0IGxlYXN0IHZpc2libGUgYmV5b25kIGl0cyBjdXJyZW50IGNvbXBpbGF0aW9uIHVuaXQsIHdoaWNoIHJhaXNlcyB0aGUgdXN1YWwgcXVlc3Rpb25zIGFib3V0IHBvdGVudGlhbCByZS1lbnRyYW5jeSBpc3N1ZXMsIGdsb2JhbCBzdGF0ZSwgYW5kIGV4dGVybmFsIGRlcGVuZGVuY2llcy4gQmVmb3JlIEkgZGl2ZSBpbnRvIGFueSBzcGVjaWZpYyBjb2RlLCB0aGUgZmlyc3QgdGhpbmcgSSdtIGRvaW5nIGlzIGNvbmZpcm1pbmcgdGhlIGNvbmZpZ3VyYXRpb24uIExldCdzIHB1bGwgdXAgdGhlIEtjb25maWcgZm9yIFNDVFAg4oCTIEkgbmVlZCB0byBxdWlja2x5IHZlcmlmeSBhbnkgZGVwZW5kZW5jaWVzIGFuZCBjb21waWxhdGlvbiBvcHRpb25zIHJlbGF0ZWQgdG8gdGhpcyBmdW5jdGlvbi4gVW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgZW52aXJvbm1lbnQgYW5kIGFueSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBwYXRocyBpdCdzIGludm9sdmVkIGluIGlzIGFic29sdXRlbHkgY3JpdGljYWwgYmVmb3JlIEkgc3RhcnQgdHJhY2luZyB0aGUgY29kZSBpdHNlbGYuIFRoZSBLY29uZmlnIHdpbGwgdGVsbCBtZSBhIGxvdCBhYm91dCB0aGlzIGZ1bmN0aW9uJ3MgdHlwaWNhbCBkZXBsb3ltZW50IHNjZW5hcmlvcyBhbmQgaG93IGl0cyBhdmFpbGFiaWxpdHkgaXMgY29udHJvbGxlZC4gR290dGEgZXN0YWJsaXNoIHRoZSBiYXNlbGluZSBiZWZvcmUgZGlnZ2luZyBkZWVwZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM1NjcsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo1MC40NDAyODcyMDZaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDYwODgxNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIElQX1NDVFBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL0tjb25maWctNS1cXG5uZXQvc2N0cC9LY29uZmlnOjY6bWVudWNvbmZpZyBJUF9TQ1RQXFxubmV0L3NjdHAvS2NvbmZpZy03LVxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTM6NTAuNDg2MzgwMDg1WiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjgyMzI0NDg3MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBDb25maWd1cmF0aW9uIENoZWNrIGFuZCBEZXBlbmRlbmN5IFNjYW4qKlxuXG5Pa2F5LCBzbyB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uIHNldHRpbmcgaXMgYElQX1NDVFBgLiBOb3csIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAgaW50byB0aGlzIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24sIEkgc2hvdWxkIHByb2JhYmx5IGRvIGEgcXVpY2sgc2FuaXR5IGNoZWNrLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4ndCBtaXNzZWQgYW55IHBvdGVudGlhbCBkZXBlbmRlbmNpZXMsIG9yIHJlbGF0ZWQgc2V0dGluZ3MgdGhhdCBtaWdodCBpbmZsdWVuY2UgaG93IGBJUF9TQ1RQYCBiZWhhdmVzLiBJdCdzIHNlY29uZCBuYXR1cmUgZm9yIG1lIHRvIHRoaW5rIGhvbGlzdGljYWxseSwgc28gSSdsbCBxdWlja2x5IHNjYW4gbXkgbWVudGFsIGRhdGFiYXNlIGZvciByZWxhdGVkIGNvbXBvbmVudHMsIHByb3RvY29scywgb3IgbW9kdWxlcy4gTWFraW5nIHN1cmUgSSBoYXZlIGEgZ29vZCBncmFzcCBvbiB0aGUgZW50aXJlIHN5c3RlbSB3aWxsIHBheSBkaXZpZGVuZHMgZG93biB0aGUgbGluZS4gSSdsbCBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHNjb3BlIG9mIG15IGN1cnJlbnQgdGFzayBhbmQgcG90ZW50aWFsIGlzc3VlcyB0aGF0IGl0IG1heSBjYXVzZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MzkwNSwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjEzOjUzLjMwOTY0MTE4N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2MDMxMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2N0cC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIFNDVFAgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRtZW51Y29uZmlnIElQX1NDVFBcXG4gICA3OlxcdFxcdHRyaXN0YXRlIFxcXCJUaGUgU0NUUCBQcm90b2NvbFxcXCJcXG4gICA4OlxcdFxcdGRlcGVuZHMgb24gSU5FVFxcbiAgIDk6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMVxcbiAgMTA6XFx0XFx0c2VsZWN0IENSWVBUT19MSUJfU0hBMjU2XFxuICAxMTpcXHRcXHRzZWxlY3QgQ1JZUFRPX0xJQl9VVElMU1xcbiAgMTI6XFx0XFx0c2VsZWN0IE5FVF9DUkMzMkNcXG4gIDEzOlxcdFxcdHNlbGVjdCBORVRfVURQX1RVTk5FTFxcbiAgMTQ6XFx0XFx0aGVscFxcbiAgMTU6XFx0XFx0ICBTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2xcXG4gIDE2OlxcdFxcbiAgMTc6XFx0XFx0ICBGcm9tIFJGQyAyOTYwIFxcdTAwM2NodHRwOi8vd3d3LmlldGYub3JnL3JmYy9yZmMyOTYwLnR4dFxcdTAwM2UuXFxuICAxODpcXHRcXG4gIDE5OlxcdFxcdCAgXFxcIlNDVFAgaXMgYSByZWxpYWJsZSB0cmFuc3BvcnQgcHJvdG9jb2wgb3BlcmF0aW5nIG9uIHRvcCBvZiBhXFxuICAyMDpcXHRcXHQgIGNvbm5lY3Rpb25sZXNzIHBhY2tldCBuZXR3b3JrIHN1Y2ggYXMgSVAuICBJdCBvZmZlcnMgdGhlIGZvbGxvd2luZ1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo1My4zMDk3MDMzOThaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzQyNDMzOTQ4MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRoaW5raW5nOlxuXG4qKkV4YW1pbmluZyB0aGUgU0NUUCBBU0NPTkYgQUNLIFByb2Nlc3NpbmcqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhlIFNDVFAgY29uZmlndXJhdGlvbiwgYW5kIGl0IGxvb2tzIGxpa2UgYElQX1NDVFBgIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciB0aGF0LiBNeSBmb2N1cyBpcyBuYXJyb3dpbmcgaW4gb24gaG93IHRoZSBBU0NPTkYgQUNLIGlzIHByb2Nlc3NlZC4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIGZ1bmN0aW9ucyBgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2tgIGFuZCBgc2N0cF9zZl9kb19hc2NvbmZfYWNrYC4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgSSdtIGltbWVkaWF0ZWx5IGN1cmlvdXMgYWJvdXQgdGhlIG5hdHVyZSBvZiBgc2N0cF9zZl9kb19hc2NvbmZfYWNrYC4gTXkgZmlyc3QgcXVlc3Rpb24gaXMsIGlzIHRoaXMgZnVuY3Rpb24gc3RhdGljPyBUaGF0IGtub3dsZWRnZSB3aWxsIGdyZWF0bHkgaW5mb3JtIGhvdyBpdCdzIHVzZWQgYW5kIGFueSBwb3RlbnRpYWwgc2lkZSBlZmZlY3RzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUgYW5kIHZpc2liaWxpdHkgd2l0aGluIHRoZSBTQ1RQIGNvZGViYXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MzkwLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxMzo1Ni43MzQwNDcxNjlaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMTgzNjAxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX3NmX2RvX2FzY29uZl9hY2tcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jPTQwMjc9c3RhdGljIGVudW0gc2N0cF9kaXNwb3NpdGlvbiBzY3RwX3NlbmRfbmV4dF9hc2NvbmYoXFxuLS1cXG5uZXQvc2N0cC9zbV9zdGF0ZWZ1bnMuYy00MDU0LSAqL1xcbm5ldC9zY3RwL3NtX3N0YXRlZnVucy5jOjQwNTU6ZW51bSBzY3RwX2Rpc3Bvc2l0aW9uIHNjdHBfc2ZfZG9fYXNjb25mX2FjayhzdHJ1Y3QgbmV0ICpuZXQsXFxubmV0L3NjdHAvc21fc3RhdGVmdW5zLmMtNDA1Ni1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3Qgc3RydWN0IHNjdHBfZW5kcG9pbnQgKmVwLFxcbi0tXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jPTM4Mz1jaHVua19ldmVudF90YWJsZVtTQ1RQX05VTV9CQVNFX0NIVU5LX1RZUEVTXVtTQ1RQX1NUQVRFX05VTV9TVEFURVNdID0ge1xcbi0tXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQyNy1cXHQvKiBTQ1RQX1NUQVRFX0VTVEFCTElTSEVEICovIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmM6NDI4OlxcdFRZUEVfU0NUUF9GVU5DKHNjdHBfc2ZfZG9fYXNjb25mX2FjayksIFxcXFxcXG5uZXQvc2N0cC9zbV9zdGF0ZXRhYmxlLmMtNDI5LVxcdC8qIFNDVFBfU1RBVEVfU0hVVERPV05fUEVORElORyAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzMDpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2RvX2FzY29uZl9hY2spLCBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQzMS1cXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX1NFTlQgKi8gXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYzo0MzI6XFx0VFlQRV9TQ1RQX0ZVTkMoc2N0cF9zZl9kb19hc2NvbmZfYWNrKSwgXFxcXFxcbm5ldC9zY3RwL3NtX3N0YXRldGFibGUuYy00MzMtXFx0LyogU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRCAqLyBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jOjQzNDpcXHRUWVBFX1NDVFBfRlVOQyhzY3RwX3NmX2RvX2FzY29uZl9hY2spLCBcXFxcXFxubmV0L3NjdHAvc21fc3RhdGV0YWJsZS5jLTQzNS1cXHQvKiBTQ1RQX1NUQVRFX1NIVVRET1dOX0FDS19TRU5UICovIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTM6NTYuODQ1ODkwOTk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1NjUwMDk2MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgU0NUUCBBU0NPTkYgQUNLIFBhdGNoKipcblxuT2theSwgaGVyZSdzIHdoYXQgSSdtIHRoaW5raW5nIGFib3V0IHRoaXMgcGF0Y2guIEZpcnN0LCBpdCdzIGRlZmluaXRlbHkgZGVhbGluZyB3aXRoIHNvbWV0aGluZyBkeW5hbWljLCBub3QgYSBzdGF0aWMgY29uZGl0aW9uLiBUaGUga2V5IGZ1bmN0aW9ucyB0YXJnZXRlZCBhcmUgYHNjdHBfcHJvY2Vzc19hc2NvbmZfYWNrYCBhbmQgYHNjdHBfc2ZfZG9fYXNjb25mX2Fja2AuIFRoZXNlIGFyZSB0aGUgY29yZSBmb2N1cyBwb2ludHMgZm9yIG15IGFuYWx5c2lzLlxuXG5UaGUgbWFpbiBnaXN0IHNlZW1zIHRvIGJlIGZpeGluZyBhIHBvdGVudGlhbCB2dWxuZXJhYmlsaXR5LiBTcGVjaWZpY2FsbHksIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvciBldmVuIGFuIGluZmluaXRlIGxvb3Agd2l0aGluIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBUaGlzIGlzIHRyaWdnZXJlZCB3aGVuIHByb2Nlc3NpbmcgYW4gQVNDT05GIEFDSyBjaHVuayB0aGF0IGhhcyBwYXJhbWV0ZXJzIHdpdGggaW5jb3JyZWN0IGxlbmd0aHMuIFRoaXMgaXMgYSBjbGVhciBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIFNDVFAgbmV0d29ya2luZyBzdGFjayBpdHNlbGYsIG1ha2luZyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gV2UndmUgZ290IHRvIGJyZWFrIGl0LCBmaW5kIHdoZXJlIGl0IGZhaWxzIVxuXG5JIG5lZWQgdG8gY29uZmlybSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLCBidXQgYElQX1NDVFBgIGxvb2tzIGxpa2UgYSBrZXkgb25lIHRvIHdhdGNoLiBJJ2xsIG1ha2Ugc3VyZSB0byBkb3VibGUtY2hlY2ssIGJ1dCBgSU5FVGAgaXMgdXN1YWxseSBhIGdpdmVuLiBOb3csIGl0J3MgdGltZSB0byBzZXQgdGhlIHJlc3VsdHMgYW5kIG1vdmUgZm9yd2FyZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE4OSwiT3V0cHV0VG9rZW5zIjoxMjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDEuNDEwOTA0NDkzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Nzg5MjIzODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja1wiLFxuICAgIFwic2N0cF9zZl9kb19hc2NvbmZfYWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklQX1NDVFBcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzY3RwX3Byb2Nlc3NfYXNjb25mX2Fja1wiLFxuICAgIFwic2N0cF9zZl9kb19hc2NvbmZfYWNrXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyByZWFkIG9yIGluZmluaXRlIGxvb3AgaW4gYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAgd2hlbiBwcm9jZXNzaW5nIGFuIEFTQ09ORiBBQ0sgY2h1bmsgd2l0aCBhbiBpbnZhbGlkIHBhcmFtZXRlciBsZW5ndGguIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgU0NUUCBuZXR3b3JraW5nIHN0YWNrIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxNDowMS40ODk4MzMwMjJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTY5MDkyMjEyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDEuNDkwMzQ3MTEyWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIwMTY4NTczNDMyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDIwOTAxNTZhMmJlNWZlMjRmN2U4ZDg4ZjA1MGEzZmZiYzlmYjU0MDlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU3VuIEF1ZyAyMyAxMzoxMzozNyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuYyBiL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuaW5kZXggMjM2ZTI1YWJjN2E0Mi4uNmY1NTI1OGNmMmNmYiAxMDA2NDRcbi0tLSBhL25ldC9zY3RwL3NtX21ha2VfY2h1bmsuY1xuKysrIGIvbmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXG5AQCAtMzQ2MCw4ICszNDYwLDEwIEBAIHN0YXRpYyBfX2JlMTYgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKHN0cnVjdCBzY3RwX2NodW5rICphc2NvbmZfYWNrLFxuIFx0XHR9XG4gXG4gXHRcdGxlbmd0aCA9IG50b2hzKGFzY29uZl9hY2tfcGFyYW0tXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XG4tXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBsZW5ndGg7XG4tXHRcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcbitcdFx0aWYgKGxlbmd0aCBcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcbitcdFx0XHRyZXR1cm4gU0NUUF9FUlJPUl9JTlZfUEFSQU07XG4rXHRcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcbitcdFx0YXNjb25mX2Fja19sZW4gLT0gU0NUUF9QQUQ0KGxlbmd0aCk7XG4gXHR9XG4gXG4gXHRyZXR1cm4gZXJyX2NvZGU7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yM1QxMzoxNDowMS40OTAzNDgwMTJaIiwiU2VxIjoxNywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgyMTM0NjQ0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTQ1RQIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBmb3IgYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuIEl0IGxvb2tzIGxpa2UgaXQncyBzcGVjaWZpY2FsbHkgbW9kaWZ5aW5nIHRoZSBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCBmdW5jdGlvbi4gVGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoZSBhZGRpdGlvbiBvZiBhIGxlbmd0aCBjaGVjazogYGlmIChsZW5ndGggXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpYCBhbmQgYSByZXR1cm4gb2YgYFNDVFBfRVJST1JfSU5WX1BBUkFNYCBpZiBpdCdzIHRydWUuIE1ha2VzIHNlbnNlOyB5b3UgZG9uJ3Qgd2FudCB0byBiZSByZWFkaW5nIHBhc3QgdGhlIGVuZCBvZiBhIGJ1ZmZlciwgYW5kIGFuIGludmFsaWQgcGFyYW1ldGVyIGxlbmd0aCBpcyBhIGdvb2QgcmVhc29uIHRvIHNpZ25hbCBhbiBlcnJvci5cblxuVGhlIHNlY29uZCBwYXJ0IGlzIG1vcmUgaW50ZXJlc3RpbmcuIEl0J3MgY2hhbmdpbmcgaG93IHRoZSBgYXNjb25mX2Fja19wYXJhbWAgYW5kIGBhc2NvbmZfYWNrX2xlbmAgcG9pbnRlcnMgYXJlIGFkdmFuY2VkLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMganVzdCBhZGRpbmcgdGhlIGxlbmd0aCwgYnV0IHRoZSB1cGRhdGVkIHZlcnNpb24gbm93IHVzZXMgYFNDVFBfUEFENChsZW5ndGgpYC4gQ2xlYXJseSwgaXQncyBhYm91dCBhbGlnbm1lbnQuIEFkZGluZyB0aGUgcGFkZGluZyBsaWtlbHkgZW5zdXJlcyB0aGF0IHRoZSBwYXJhbWV0ZXJzIGFyZSA0LWJ5dGUgYWxpZ25lZCwgd2hpY2ggaXMgY29tbW9uIGluIG5ldHdvcmsgcHJvdG9jb2xzIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBvciBwb3NzaWJseSBldmVuIHJlcXVpcmVkIGJ5IHRoZSBoYXJkd2FyZS4gSSdsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBkZWZpbml0aW9uIG9mIGBTQ1RQX1BBRDRgIHRvIGJlIHN1cmUuXG5cblRvIGdldCBhIGJldHRlciBoYW5kbGUgb24gdGhpcywgSSBuZWVkIHRvIHNlZSB0aGUgY29udGV4dC4gTGV0J3MgdXNlIGBkZWZhdWx0X2FwaTpncmVwcGVyYCB0byBmaW5kIGFsbCB0aGUgaW5zdGFuY2VzIG9mIGBzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VgLiBTZWVpbmcgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBlbHNld2hlcmUgd2lsbCBkZWZpbml0ZWx5IGhlbHAgY2xhcmlmeSB3aHkgdGhlc2UgY2hhbmdlcyB3ZXJlIG5lY2Vzc2FyeSBhbmQgYW55IHBvdGVudGlhbCBzaWRlIGVmZmVjdHMuIENvbnRleHQgaXMga2luZywgYXMgYWx3YXlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDc0LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDYuMzExNzA4MTIzWiIsIlNlcSI6MTgsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjUzMTg1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzY3RwX2dldF9hc2NvbmZfcmVzcG9uc2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3NjdHAvc21fbWFrZV9jaHVuay5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zMzU2PXN0YXRpYyB2b2lkIHNjdHBfYXNjb25mX3BhcmFtX3N1Y2Nlc3Moc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuLS1cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxNi0gKi9cXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmM6MzQxNzpzdGF0aWMgX19iZTE2IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mX2FjayxcXG5uZXQvc2N0cC9zbV9tYWtlX2NodW5rLmMtMzQxOC1cXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHNjdHBfYWRkaXBfcGFyYW0gKmFzY29uZl9wYXJhbSxcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYz0zNDczPWludCBzY3RwX3Byb2Nlc3NfYXNjb25mX2FjayhzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYyxcXG4tLVxcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYy0zNTEyLVxcdFxcdGVsc2Uge1xcbm5ldC9zY3RwL3NtX21ha2VfY2h1bmsuYzozNTEzOlxcdFxcdFxcdGVycl9jb2RlID0gc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlKGFzY29uZl9hY2ssXFxubmV0L3NjdHAvc21fbWFrZV9jaHVuay5jLTM1MTQtXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgIGFzY29uZl9wYXJhbSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDYuMzU4MjQ2MDAzWiIsIlNlcSI6MTksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1MzMyNzcwMjEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byBgc2N0cF9nZXRfYXNjb25mX3Jlc3BvbnNlYCoqXG5cbk9rYXksIHRpbWUgdG8gZGlnIGludG8gdGhpcyBmdW5jdGlvbiwgYHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZWAsIGxvY2F0ZWQgaW4gYG5ldC9zY3RwL3NtX21ha2VfY2h1bmsuY2AuIEknbSBjdXJpb3VzIHRvIHNlZSBob3cgdGhlIFNDVFAgc3RhY2sgaGFuZGxlcyB0aGUgZ2VuZXJhdGlvbiBvZiBhbiBBU0NPTkYgcmVzcG9uc2UuIEknbSBleHBlY3RpbmcgdGhpcyB0byBiZSBhIGNydWNpYWwgcGllY2UgaW4gdGhlIGFkYXB0YXRpb24gbGF5ZXIsIHNwZWNpZmljYWxseSBkZWFsaW5nIHdpdGggYXNzb2NpYXRpb24gY29uZmlndXJhdGlvbiBjaGFuZ2VzLiBMZXQncyBzZWUgaG93IHRoZSBzdGF0ZSBtYWNoaW5lIGxvZ2ljIGludGVyYWN0cyBoZXJlLiBJIGFudGljaXBhdGUgdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBjcmFmdGluZyB0aGUgYXBwcm9wcmlhdGUgY2h1bmssIGRldGVybWluaW5nIHdoYXQgaW5mb3JtYXRpb24gbmVlZHMgdG8gYmUgaW5jbHVkZWQgYmFzZWQgb24gdGhlIGNvbnRleHQgb2YgdGhlIHJlcXVlc3RlZCBjaGFuZ2UuIEknbSBsb29raW5nIGZvciB0aGUgbG9naWMgdGhhdCBkZXRlcm1pbmVzIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIHJlcXVlc3QuIFNwZWNpZmljYWxseSwgSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyBpdCByZXNwb25kcyB0byBkaWZmZXJlbnQgdHlwZXMgb2YgYXNzb2NpYXRpb24gY2hhbmdlIHJlcXVlc3RzOiBwZXJoYXBzIGFkZHJlc3MgYWRkaXRpb24gb3IgZGVsZXRpb24sIHBhcmFtZXRlciBuZWdvdGlhdGlvbiwgb3IgZXZlbiBhZGFwdGF0aW9uIGxheWVyIHBhcmFtZXRlcnMuIEknbGwgYmUgZm9jdXNlZCBvbiBob3cgaXQgY29uc3RydWN0cyB0aGUgQVNDT05GIGNodW5rLCBzZXR0aW5nIHRoZSBmbGFncyBhbmQgcGFyYW1ldGVycyBjb3JyZWN0bHksIGFuZCB3aGF0IHNvcnQgb2YgZXJyb3IgaGFuZGxpbmcgaXMgaW1wbGVtZW50ZWQuIEknbSBhbHNvIGFudGljaXBhdGluZyB0aGF0IGl0IGxldmVyYWdlcyBvdGhlciBpbnRlcm5hbCBTQ1RQIGZ1bmN0aW9ucyBmb3IgYnVpbGRpbmcgdGhlIGNodW5rIGl0c2VsZiwgbGlrZSBwYXlsb2FkIGVuY29kaW5nIGFuZCBsZW5ndGggY2FsY3VsYXRpb25zLiBJJ20gdGhpbmtpbmcgSSdsbCBsb29rIGZvciBzcGVjaWZpYyBpbnRlcmFjdGlvbnMgd2l0aCB0aGUgVENCIGFuZCB3aGljaCBkYXRhIHN0cnVjdHVyZXMgYXJlIHVzZWQgZm9yIHRoZSBhY3R1YWwgY2h1bmsgY29uc3RydWN0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTI2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjNUMTM6MTQ6MDkuODkxNTI3MDg0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxODk3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvc2N0cC9zbV9tYWtlX2NodW5rLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzQxNyxcbiAgXCJMaW5lQ291bnRcIjogNjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzQxNzpcXHRzdGF0aWMgX19iZTE2IHNjdHBfZ2V0X2FzY29uZl9yZXNwb25zZShzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mX2FjayxcXG4zNDE4OlxcdFxcdFxcdFxcdFxcdCAgICAgICBzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbSAqYXNjb25mX3BhcmFtLFxcbjM0MTk6XFx0XFx0XFx0XFx0XFx0ICAgICAgIGludCBub19lcnIpXFxuMzQyMDpcXHR7XFxuMzQyMTpcXHRcXHRzdHJ1Y3Qgc2N0cF9hZGRpcF9wYXJhbVxcdCphc2NvbmZfYWNrX3BhcmFtO1xcbjM0MjI6XFx0XFx0c3RydWN0IHNjdHBfZXJyaGRyICplcnJfcGFyYW07XFxuMzQyMzpcXHRcXHRpbnQgYXNjb25mX2Fja19sZW47XFxuMzQyNDpcXHRcXHRfX2JlMTYgZXJyX2NvZGU7XFxuMzQyNTpcXHRcXHRpbnQgbGVuZ3RoO1xcbjM0MjY6XFx0XFxuMzQyNzpcXHRcXHRpZiAobm9fZXJyKVxcbjM0Mjg6XFx0XFx0XFx0ZXJyX2NvZGUgPSBTQ1RQX0VSUk9SX05PX0VSUk9SO1xcbjM0Mjk6XFx0XFx0ZWxzZVxcbjM0MzA6XFx0XFx0XFx0ZXJyX2NvZGUgPSBTQ1RQX0VSUk9SX1JFUV9SRUZVU0VEO1xcbjM0MzE6XFx0XFxuMzQzMjpcXHRcXHRhc2NvbmZfYWNrX2xlbiA9IG50b2hzKGFzY29uZl9hY2stXFx1MDAzZWNodW5rX2hkci1cXHUwMDNlbGVuZ3RoKSAtXFxuMzQzMzpcXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBzY3RwX2NodW5raGRyKTtcXG4zNDM0OlxcdFxcbjM0MzU6XFx0XFx0LyogU2tpcCB0aGUgYWRkaXBoZHIgZnJvbSB0aGUgYXNjb25mX2FjayBjaHVuayBhbmQgc3RvcmUgYSBwb2ludGVyIHRvXFxuMzQzNjpcXHRcXHQgKiB0aGUgZmlyc3QgYXNjb25mX2FjayBwYXJhbWV0ZXIuXFxuMzQzNzpcXHRcXHQgKi9cXG4zNDM4OlxcdFxcdGxlbmd0aCA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9hZGRpcGhkcik7XFxuMzQzOTpcXHRcXHRhc2NvbmZfYWNrX3BhcmFtID0gKHN0cnVjdCBzY3RwX2FkZGlwX3BhcmFtICopKGFzY29uZl9hY2stXFx1MDAzZXNrYi1cXHUwMDNlZGF0YSArXFxuMzQ0MDpcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgbGVuZ3RoKTtcXG4zNDQxOlxcdFxcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcXG4zNDQyOlxcdFxcbjM0NDM6XFx0XFx0d2hpbGUgKGFzY29uZl9hY2tfbGVuIFxcdTAwM2UgMCkge1xcbjM0NDQ6XFx0XFx0XFx0aWYgKGFzY29uZl9hY2tfcGFyYW0tXFx1MDAzZWNycl9pZCA9PSBhc2NvbmZfcGFyYW0tXFx1MDAzZWNycl9pZCkge1xcbjM0NDU6XFx0XFx0XFx0XFx0c3dpdGNoIChhc2NvbmZfYWNrX3BhcmFtLVxcdTAwM2VwYXJhbV9oZHIudHlwZSkge1xcbjM0NDY6XFx0XFx0XFx0XFx0Y2FzZSBTQ1RQX1BBUkFNX1NVQ0NFU1NfUkVQT1JUOlxcbjM0NDc6XFx0XFx0XFx0XFx0XFx0cmV0dXJuIFNDVFBfRVJST1JfTk9fRVJST1I7XFxuMzQ0ODpcXHRcXHRcXHRcXHRjYXNlIFNDVFBfUEFSQU1fRVJSX0NBVVNFOlxcbjM0NDk6XFx0XFx0XFx0XFx0XFx0bGVuZ3RoID0gc2l6ZW9mKCphc2NvbmZfYWNrX3BhcmFtKTtcXG4zNDUwOlxcdFxcdFxcdFxcdFxcdGVycl9wYXJhbSA9ICh2b2lkICopYXNjb25mX2Fja19wYXJhbSArIGxlbmd0aDtcXG4zNDUxOlxcdFxcdFxcdFxcdFxcdGFzY29uZl9hY2tfbGVuIC09IGxlbmd0aDtcXG4zNDUyOlxcdFxcdFxcdFxcdFxcdGlmIChhc2NvbmZfYWNrX2xlbiBcXHUwMDNlIDApXFxuMzQ1MzpcXHRcXHRcXHRcXHRcXHRcXHRyZXR1cm4gZXJyX3BhcmFtLVxcdTAwM2VjYXVzZTtcXG4zNDU0OlxcdFxcdFxcdFxcdFxcdGVsc2VcXG4zNDU1OlxcdFxcdFxcdFxcdFxcdFxcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcXG4zNDU2OlxcdFxcdFxcdFxcdFxcdGJyZWFrO1xcbjM0NTc6XFx0XFx0XFx0XFx0ZGVmYXVsdDpcXG4zNDU4OlxcdFxcdFxcdFxcdFxcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcXG4zNDU5OlxcdFxcdFxcdFxcdH1cXG4zNDYwOlxcdFxcdFxcdH1cXG4zNDYxOlxcdFxcbjM0NjI6XFx0XFx0XFx0bGVuZ3RoID0gbnRvaHMoYXNjb25mX2Fja19wYXJhbS1cXHUwMDNlcGFyYW1faGRyLmxlbmd0aCk7XFxuMzQ2MzpcXHRcXHRcXHRpZiAobGVuZ3RoIFxcdTAwM2Mgc2l6ZW9mKHN0cnVjdCBzY3RwX3BhcmFtaGRyKSlcXG4zNDY0OlxcdFxcdFxcdFxcdHJldHVybiBTQ1RQX0VSUk9SX0lOVl9QQVJBTTtcXG4zNDY1OlxcdFxcdFxcdGFzY29uZl9hY2tfcGFyYW0gPSAodm9pZCAqKWFzY29uZl9hY2tfcGFyYW0gKyBTQ1RQX1BBRDQobGVuZ3RoKTtcXG4zNDY2OlxcdFxcdFxcdGFzY29uZl9hY2tfbGVuIC09IFNDVFBfUEFENChsZW5ndGgpO1xcbjM0Njc6XFx0XFx0fVxcbjM0Njg6XFx0XFxuMzQ2OTpcXHRcXHRyZXR1cm4gZXJyX2NvZGU7XFxuMzQ3MDpcXHR9XFxuMzQ3MTpcXHRcXG4zNDcyOlxcdC8qIFByb2Nlc3MgYW4gaW5jb21pbmcgQVNDT05GX0FDSyBjaHVuayBhZ2FpbnN0IHRoZSBjYWNoZWQgbGFzdCBBU0NPTkYgY2h1bmsuICovXFxuMzQ3MzpcXHRpbnQgc2N0cF9wcm9jZXNzX2FzY29uZl9hY2soc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsXFxuMzQ3NDpcXHRcXHRcXHRcXHQgICAgc3RydWN0IHNjdHBfY2h1bmsgKmFzY29uZl9hY2spXFxuMzQ3NTpcXHR7XFxuMzQ3NjpcXHRcXHRzdHJ1Y3Qgc2N0cF9jaHVuayAqYXNjb25mID0gYXNvYy1cXHUwMDNlYWRkaXBfbGFzdF9hc2NvbmY7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjE0OjA5Ljg5MTk0ODU2NFoiLCJTZXEiOjIxLCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTc2Njk0NTAzMCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIE5ldHdvcmsgUGFja2V0IFBhcnNpbmcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCBcIlRoaXMgZml4ZXMgYW4gaW5maW5pdGUgbG9vcCBvciBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3MgaW4gdGhlIFNDVFAgY29kZS5cIiBUaGUgY29yZSBpc3N1ZSBpcyBob3cgdGhlIGNvZGUgaGFuZGxlcyB0aGUgYGxlbmd0aGAgZmllbGQgZnJvbSBhbiBBU0NPTkZfQUNLIHBhcmFtZXRlciB3aXRoaW4gYW4gaW5jb21pbmcgbmV0d29yayBwYWNrZXQuXG5cbklmIGBsZW5ndGhgIGlzIHplcm8sIHRoZSBvcmlnaW5hbCBjb2RlIGRvZXNuJ3QgYWR2YW5jZSB0aGUgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSwgbGVhZGluZyB0byBhbiBpbmZpbml0ZSBsb29wLCBleGFjdGx5IGFzIEkgc3VzcGVjdGVkLiBUaGVuIEkgcmVhbGl6ZWQgdGhlcmUncyBtb3JlIHRvIGl0LiBFdmVuIGlmIGBsZW5ndGhgIGlzbid0IHplcm8sIGlmIGl0J3MgKm5vdCogcHJvcGVybHkgcGFkZGVkLCBgYXNjb25mX2Fja19wYXJhbWAgY291bGQgYmVjb21lIG1pc2FsaWduZWQuIFRoaXMgd291bGQgY2F1c2UgaXNzdWVzIHdpdGggc3Vic2VxdWVudCByZWFkcyBhbmQgY2FsY3VsYXRpb25zLiBOb3csIGJlY2F1c2UgdGhpcyBjb2RlIGlzIHBhcnNpbmcgbmV0d29yayBkYXRhIGluc2lkZSBgYXNjb25mX2Fjay1cdTAwM2Vza2ItXHUwMDNlZGF0YWAsIGl0J3MgYWxsIGNvbWluZyBpbiBhcyBuZXR3b3JrIGlucHV0LlxuXG5TcGVjaWZpY2FsbHksIGEgYGxlbmd0aGAgb2YgemVybyBsZWFkcyB0byBhbiBpbmZpbml0ZSBsb29wLCB3aGljaCBpcyBiYWQsIGJ1dCBvdXQtb2YtYm91bmRzIHJlYWRzIGlmIGxlbmd0aCBpc24ndCBwYWRkZWQgaXMgd2hhdCBnZXRzIG15IGF0dGVudGlvbi4gQnV0IHRoZSBvdXQtb2YtYm91bmRzIGlzc3VlIGlzIHRoZSBiaWdnZXIgY29uY2Vybi4gSSBiZWxpZXZlIHRoZSB1bnBhZGRlZCBkYXRhIHNpdHVhdGlvbiB3b3VsZCBjYXVzZSByZWFkcyBvdXRzaWRlIG9mIHRoZSBhbGxvY2F0ZWQgYnVmZmVyLiBJJ2QgZXhwZWN0IEtBU0FOIHRvIGNhdGNoIHRoZXNlIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMuXG5cbk5vdywgbXkgbWluZCBnb2VzIHRvIHRoZSBxdWVzdGlvbiBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gVGhpcyBpc24ndCByZWFkaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBUaGlzIGlzIHJlYWRpbmcgKmluY29taW5nIG5ldHdvcmsgZGF0YSouIEknbSBwYXJzaW5nIGFuIGBza2JgLCBzbyB0aGUgZGF0YSBpcyBpbml0aWFsaXplZCBmcm9tIHRoZSBuZXR3b3JrIHBhY2tldC4gS01TQU4gaXMgZm9yIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LCBzbyB0aGF0J3Mgbm90IHJlbGV2YW50IGhlcmUuIFNvLCB0aGUgYnVnIGlzIGEgc3RhbmRhcmQgb3V0LW9mLWJvdW5kcyBvciBpbmZpbml0ZSBsb29wIGJ1Zy5cblxuTGV0IG1lIHRha2UgYW5vdGhlciBxdWljayBsb29rIGF0IHRoZSBwYXRjaCBpdHNlbGYgdG8gY29uZmlybS5cblxuYGBgY1xuIFx0XHRsZW5ndGggPSBudG9ocyhhc2NvbmZfYWNrX3BhcmFtLVx1MDAzZXBhcmFtX2hkci5sZW5ndGgpO1xuLVx0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICsgbGVuZ3RoO1xuLVx0XHRhc2NvbmZfYWNrX2xlbiAtPSBsZW5ndGg7XG4rXHRcdGlmIChsZW5ndGggXHUwMDNjIHNpemVvZihzdHJ1Y3Qgc2N0cF9wYXJhbWhkcikpXG4rXHRcdFx0cmV0dXJuIFNDVFBfRVJST1JfSU5WX1BBUkFNO1xuK1x0XHRhc2NvbmZfYWNrX3BhcmFtID0gKHZvaWQgKilhc2NvbmZfYWNrX3BhcmFtICsgU0NUUF9QQUQ0KGxlbmd0aCk7XG4rXHRcdGFzY29uZl9hY2tfbGVuIC09IFNDVFBfUEFENChsZW5ndGgpO1xuYGBgXG5cblllcCwgdGhhdCdzIGV4YWN0bHkgd2hhdCBJIHRob3VnaHQuIEl0J3MgcHJvcGVybHkgY2hlY2tpbmcgdGhlIGBsZW5ndGhgIGZpZWxkIHRvIGVuc3VyZSBpdCBpcyBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgaGVhZGVyIHN0cnVjdHVyZSwgYW5kIGl0J3MgYXBwbHlpbmcgcGFkZGluZyB3aGVuIGNhbGN1bGF0aW5nIHRoZSBuZXcgcG9pbnRlciBwb3NpdGlvbiBhbmQgcmVtYWluaW5nIGxlbmd0aC4gVGhpcyBoYW5kbGVzIGJvdGggdGhlIHplcm8tbGVuZ3RoIGluZmluaXRlIGxvb3AgYW5kIHRoZSB1bmFsaWduZWQgYWNjZXNzIHByb2JsZW1zLiBUaGlzIGlzIGFsbCBuZXR3b3JrLXJlY2VpdmVkIGRhdGEuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGludm9sdmVkLlxuXG5UaGVyZWZvcmUsIGBOZWVkc0tNU0FOID0gZmFsc2VgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0Mjk5LCJPdXRwdXRUb2tlbnMiOjE4MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjU2NywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTIzVDEzOjE0OjIxLjY1ODg5ODgzNFoiLCJTZXEiOjIyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwMTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gcGFyc2luZyBpbmNvbWluZyBTQ1RQIEFTQ09ORl9BQ0sgY2h1bmtzIGZyb20gdGhlIG5ldHdvcmsuIFRoZSBwcmV2aW91cyBjb2RlIGxhY2tlZCBhIG1pbmltdW0gbGVuZ3RoIGNoZWNrIGFuZCBkaWQgbm90IHByb3Blcmx5IHBhZCB0aGUgbGVuZ3RoIHdoZW4gYWR2YW5jaW5nIHRoZSBwYXJhbWV0ZXIgcG9pbnRlciAoYGFzY29uZl9hY2tfcGFyYW1gKSBhbmQgZGVjcmVtZW50aW5nIHRoZSByZW1haW5pbmcgbGVuZ3RoIChgYXNjb25mX2Fja19sZW5gKS4gVGhpcyBjb3VsZCBsZWFkIHRvIGFuIGluZmluaXRlIGxvb3AgKGlmIGxlbmd0aCBpcyAwKSBvciBhbiBvdXQtb2YtYm91bmRzIHJlYWQgb2YgdGhlIHNvY2tldCBidWZmZXIgKHNrYikgZGF0YS4gU2luY2UgdGhlIGRhdGEgYmVpbmcgcGFyc2VkIGlzIGluaXRpYWxpemVkIGZyb20gdGhlIG5ldHdvcmsgcGFja2V0LCB0aGVyZSBpcyBubyByaXNrIG9mIHJlYWRpbmcgdW5pbml0aWFsaXplZCBrZXJuZWwgbWVtb3J5IG9yIGxlYWtpbmcgaXQgdG8gdXNlciBzcGFjZS4gT3V0LW9mLWJvdW5kcyByZWFkcyBhbmQgaW5maW5pdGUgbG9vcHMgYXJlIGVmZmVjdGl2ZWx5IGNhdWdodCBieSBLQVNBTiBhbmQgc3RhbmRhcmQgZnV6emluZyB0aW1lb3V0cy4gVGhlcmVmb3JlLCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IG5lY2Vzc2FyeS5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhbiBpc3N1ZSBpbiBwYXJzaW5nIGluY29taW5nIFNDVFAgQVNDT05GX0FDSyBjaHVua3MgZnJvbSB0aGUgbmV0d29yay4gVGhlIHByZXZpb3VzIGNvZGUgbGFja2VkIGEgbWluaW11bSBsZW5ndGggY2hlY2sgYW5kIGRpZCBub3QgcHJvcGVybHkgcGFkIHRoZSBsZW5ndGggd2hlbiBhZHZhbmNpbmcgdGhlIHBhcmFtZXRlciBwb2ludGVyIChgYXNjb25mX2Fja19wYXJhbWApIGFuZCBkZWNyZW1lbnRpbmcgdGhlIHJlbWFpbmluZyBsZW5ndGggKGBhc2NvbmZfYWNrX2xlbmApLiBUaGlzIGNvdWxkIGxlYWQgdG8gYW4gaW5maW5pdGUgbG9vcCAoaWYgbGVuZ3RoIGlzIDApIG9yIGFuIG91dC1vZi1ib3VuZHMgcmVhZCBvZiB0aGUgc29ja2V0IGJ1ZmZlciAoc2tiKSBkYXRhLiBTaW5jZSB0aGUgZGF0YSBiZWluZyBwYXJzZWQgaXMgaW5pdGlhbGl6ZWQgZnJvbSB0aGUgbmV0d29yayBwYWNrZXQsIHRoZXJlIGlzIG5vIHJpc2sgb2YgcmVhZGluZyB1bmluaXRpYWxpemVkIGtlcm5lbCBtZW1vcnkgb3IgbGVha2luZyBpdCB0byB1c2VyIHNwYWNlLiBPdXQtb2YtYm91bmRzIHJlYWRzIGFuZCBpbmZpbml0ZSBsb29wcyBhcmUgZWZmZWN0aXZlbHkgY2F1Z2h0IGJ5IEtBU0FOIGFuZCBzdGFuZGFyZCBmdXp6aW5nIHRpbWVvdXRzLiBUaGVyZWZvcmUsIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QgbmVjZXNzYXJ5LlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[1] Phase: Succeeded StartedAt: 2026-08-23 13:14:33 +0000 UTC FinishedAt: 2026-08-23 13:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-23 13:14:33 +0000 UTC FinishedAt: 2026-08-23 13:14:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2] Phase: Succeeded StartedAt: 2026-08-23 13:14:33 +0000 UTC FinishedAt: 2026-08-23 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:14:33 +0000 UTC FinishedAt: 2026-08-23 16:56:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:14:33 +0000 UTC FinishedAt: 2026-08-23 13:14:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:14:33 +0000 UTC FinishedAt: 2026-08-23 13:14:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"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-workflow7t6g9/series-workflow7t6g9-convert-artifact-1412855607/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:14:43 +0000 UTC FinishedAt: 2026-08-23 13:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:14:43 +0000 UTC FinishedAt: 2026-08-23 13:31:42 +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:*11e6c707-ad8e-4c2b-bafb-e55ec450da7f,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-workflow7t6g9/series-workflow7t6g9-convert-artifact-1412855607/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": "7d13da70-57fe-4bee-a951-1ad483139676", "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-workflow7t6g9/series-workflow7t6g9-build-action-2103170701/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:14:43 +0000 UTC FinishedAt: 2026-08-23 13:31:32 +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:*11e6c707-ad8e-4c2b-bafb-e55ec450da7f,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-workflow7t6g9/series-workflow7t6g9-convert-artifact-1412855607/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": "7d13da70-57fe-4bee-a951-1ad483139676", "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-workflow7t6g9/series-workflow7t6g9-build-action-2103170701/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:31:42 +0000 UTC FinishedAt: 2026-08-23 13:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:31:42 +0000 UTC FinishedAt: 2026-08-23 13:31:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:31:42 +0000 UTC FinishedAt: 2026-08-23 13:31:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:31:42 +0000 UTC FinishedAt: 2026-08-23 13:31:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-workflow7t6g9/series-workflow7t6g9-convert-artifact-4099912550/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:31:52 +0000 UTC FinishedAt: 2026-08-23 13:34:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:31:52 +0000 UTC FinishedAt: 2026-08-23 13:33:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d13da70-57fe-4bee-a951-1ad483139676,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-workflow7t6g9/series-workflow7t6g9-build-action-2103170701/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-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:34:05 +0000 UTC FinishedAt: 2026-08-23 13:34:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:34:05 +0000 UTC FinishedAt: 2026-08-23 13:34:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:34:05 +0000 UTC FinishedAt: 2026-08-23 13:52:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:34:05 +0000 UTC FinishedAt: 2026-08-23 13:52:04 +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:*11e6c707-ad8e-4c2b-bafb-e55ec450da7f,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-workflow7t6g9/series-workflow7t6g9-convert-artifact-4099912550/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": "f96261bd-f3b0-4d62-a531-0723a94718ff", "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-workflow7t6g9/series-workflow7t6g9-build-action-3845679402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:34:05 +0000 UTC FinishedAt: 2026-08-23 13:51:54 +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:*11e6c707-ad8e-4c2b-bafb-e55ec450da7f,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-workflow7t6g9/series-workflow7t6g9-convert-artifact-4099912550/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": "f96261bd-f3b0-4d62-a531-0723a94718ff", "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-workflow7t6g9/series-workflow7t6g9-build-action-3845679402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:52:04 +0000 UTC FinishedAt: 2026-08-23 13:52:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:52:04 +0000 UTC FinishedAt: 2026-08-23 13:52:04 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:52:04 +0000 UTC FinishedAt: 2026-08-23 13:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:52:04 +0000 UTC FinishedAt: 2026-08-23 13:54:00 +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:*f96261bd-f3b0-4d62-a531-0723a94718ff,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-workflow7t6g9/series-workflow7t6g9-build-action-3845679402/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-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 16:56:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"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:*7d13da70-57fe-4bee-a951-1ad483139676,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f96261bd-f3b0-4d62-a531-0723a94718ff,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-workflow7t6g9/series-workflow7t6g9-build-action-2103170701/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-workflow7t6g9/series-workflow7t6g9-build-action-3845679402/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 13:54:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 13:54:14 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"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-workflow7t6g9/series-workflow7t6g9-convert-artifact-1152716715/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 13:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 13:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:10 +0000 UTC FinishedAt: 2026-08-23 13:54:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:21 +0000 UTC FinishedAt: 2026-08-23 16:56:31 +0000 UTC Input: nil Output: nil --------- Name: series-workflow7t6g9[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["sctp_process_asconf_ack","sctp_sf_do_asconf_ack"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"7cbfb180945ce529608e4d4e24a6d483699fab1e","config_name":"upstream-apparmor-kasan.config","enable_configs":["IP_SCTP"],"series_id":"e4bc8956-86f6-47ff-822f-a51365ac1c69","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-23 13:54:21 +0000 UTC FinishedAt: 2026-08-23 16:56:21 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7d13da70-57fe-4bee-a951-1ad483139676,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*f96261bd-f3b0-4d62-a531-0723a94718ff,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-workflow7t6g9/series-workflow7t6g9-build-action-2103170701/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-workflow7t6g9/series-workflow7t6g9-build-action-3845679402/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-workflow7t6g9/series-workflow7t6g9-convert-artifact-1152716715/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,}