Name: series-workflowjrggl Phase: Succeeded StartedAt: 2026-06-30 19:15:03 +0000 UTC FinishedAt: 2026-06-30 23:36:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[0] Phase: Succeeded StartedAt: 2026-06-30 19:15:03 +0000 UTC FinishedAt: 2026-06-30 19:29:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[0].run-triage Phase: Succeeded StartedAt: 2026-06-30 19:15:03 +0000 UTC FinishedAt: 2026-06-30 19:29:23 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TMPFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TMPFS" ], "series_id": "332fb90c-1e7c-4936-b78b-d8e461b7c105" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "mapping_seek_hole_data", "shmem_file_llseek", "iomap_seek_hole_iter", "iomap_seek_data_iter" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RNUEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwcGluZ19zZWVrX2hvbGVfZGF0YSYjMzQ7LAogICAgJiMzNDtzaG1lbV9maWxlX2xsc2VlayYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2hvbGVfaXRlciYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2RhdGFfaXRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNWViZjlhODY4Y2RmNmQ2ZTliOWJlODU3NmU1NDc0ODYzZmM5M2Q0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTk6Mjg6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uYjc4ZmQ4OGYyNjM4NzYgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2ZpbGVtYXAuY1xuQEAgLTMyMjUsNiAmIzQzOzMyMjUsNyBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxuIFx0d2hpbGUgKChmb2xpbyA9IGZpbmRfZ2V0X2VudHJ5KFx1MDAyNnhhcywgbWF4LCBYQV9QUkVTRU5UKSkpIHtcbiBcdFx0bG9mZl90IHBvcyA9ICh1NjQpeGFzLnhhX2luZGV4IFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuIFx0XHRzaXplX3Qgc2Vla19zaXplO1xuJiM0MztcdFx0dTY0IG5leHQ7XG4gXG4gXHRcdGlmIChzdGFydCBcdTAwM2MgcG9zKSB7XG4gXHRcdFx0aWYgKCFzZWVrX2RhdGEpXG5AQCAtMzIzMyw3ICYjNDM7MzIzNCwxMSBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxuIFx0XHR9XG4gXG4gXHRcdHNlZWtfc2l6ZSA9IHNlZWtfZm9saW9fc2l6ZShcdTAwMjZ4YXMsIGZvbGlvKTtcbi1cdFx0cG9zID0gcm91bmRfdXAoKHU2NClwb3MgJiM0MzsgMSwgc2Vla19zaXplKTtcbiYjNDM7XHRcdG5leHQgPSByb3VuZF91cCgodTY0KXBvcyAmIzQzOyAxLCBzZWVrX3NpemUpO1xuJiM0MztcdFx0aWYgKG5leHQgXHUwMDNlICh1NjQpZW5kKVxuJiM0MztcdFx0XHRwb3MgPSBlbmQ7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdHBvcyA9IG5leHQ7XG4gXHRcdHN0YXJ0ID0gZm9saW9fc2Vla19ob2xlX2RhdGEoXHUwMDI2eGFzLCBtYXBwaW5nLCBmb2xpbywgc3RhcnQsIHBvcyxcbiBcdFx0XHRcdHNlZWtfZGF0YSk7XG4gXHRcdGlmIChzdGFydCBcdTAwM2MgcG9zKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RNUEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwcGluZ19zZWVrX2hvbGVfZGF0YSYjMzQ7LAogICAgJiMzNDtzaG1lbV9maWxlX2xsc2VlayYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2hvbGVfaXRlciYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2RhdGFfaXRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE1ZWJmOWE4NjhjZGY2ZDZlOWI5YmU4NTc2ZTU0NzQ4NjNmYzkzZDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAxOToyODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuYwppbmRleCA1YWY2MmU2YWJjYTU4Yi4uYjc4ZmQ4OGYyNjM4NzYgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9maWxlbWFwLmMKQEAgLTMyMjUsNiAmIzQzOzMyMjUsNyBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LAogCXdoaWxlICgoZm9saW8gPSBmaW5kX2dldF9lbnRyeSgmYW1wO3hhcywgbWF4LCBYQV9QUkVTRU5UKSkpIHsKIAkJbG9mZl90IHBvcyA9ICh1NjQpeGFzLnhhX2luZGV4ICZsdDsmbHQ7IFBBR0VfU0hJRlQ7CiAJCXNpemVfdCBzZWVrX3NpemU7CiYjNDM7CQl1NjQgbmV4dDsKIAogCQlpZiAoc3RhcnQgJmx0OyBwb3MpIHsKIAkJCWlmICghc2Vla19kYXRhKQpAQCAtMzIzMyw3ICYjNDM7MzIzNCwxMSBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LAogCQl9CiAKIAkJc2Vla19zaXplID0gc2Vla19mb2xpb19zaXplKCZhbXA7eGFzLCBmb2xpbyk7Ci0JCXBvcyA9IHJvdW5kX3VwKCh1NjQpcG9zICYjNDM7IDEsIHNlZWtfc2l6ZSk7CiYjNDM7CQluZXh0ID0gcm91bmRfdXAoKHU2NClwb3MgJiM0MzsgMSwgc2Vla19zaXplKTsKJiM0MzsJCWlmIChuZXh0ICZndDsgKHU2NCllbmQpCiYjNDM7CQkJcG9zID0gZW5kOwomIzQzOwkJZWxzZQomIzQzOwkJCXBvcyA9IG5leHQ7CiAJCXN0YXJ0ID0gZm9saW9fc2Vla19ob2xlX2RhdGEoJmFtcDt4YXMsIG1hcHBpbmcsIGZvbGlvLCBzdGFydCwgcG9zLAogCQkJCXNlZWtfZGF0YSk7CiAJCWlmIChzdGFydCAmbHQ7IHBvcykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwNQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IG1tL2ZpbGVtYXAuYyAtIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIGluIGBtbS9maWxlbWFwLmNgLiBJbW1lZGlhdGVseSwgaXQgY2F0Y2hlcyBteSBleWUgYmVjYXVzZSBpdOKAmXMgYSBmYWlybHkgbG93LWxldmVsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgd2UmIzM5O3JlIGNhbGN1bGF0aW5nIGBwb3NgIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGp1c3RlZCB0aGUgY2FsY3VsYXRpb24gdXNpbmcgYHJvdW5kX3VwKCh1NjQpcG9zICYjNDM7IDEsIHNlZWtfc2l6ZSlgLiBUaGUgbG9naWMgZm9sbG93czogaWYgdGhlIGNhbGN1bGF0ZWQgYG5leHRgIHZhbHVlIGV4Y2VlZHMgdGhlIGBlbmRgIHZhbHVlLCBgcG9zYCBnZXRzIGNsYW1wZWQgdG8gYGVuZGA7IG90aGVyd2lzZSwgaXQmIzM5O3Mgc2V0IHRvIGBuZXh0YC4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBjaGFuZ2Ug4oCTIGl0JiMzOTtzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoVkZTKSBhbmQgTWVtb3J5IE1hbmFnZW1lbnQgKE1NKSBsYXllcnMuICBJdCYjMzk7cyBhZmZlY3RpbmcgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHdoaWNoIG1lYW5zIHdl4oCZcmUgcG90ZW50aWFsbHkgbG9va2luZyBhdCBjaGFuZ2VzIGluIGhvdyBmaWxlcyByZXBvcnQgZGF0YSBvciBob2xlcyB0byB1c2Vyc3BhY2UuIERlZmluaXRlbHkgYSBjYW5kaWRhdGUgZm9yIGNhcmVmdWwgcmV2aWV3LgoKU2luY2UgaXTigJlzIGluIGBtbS9maWxlbWFwLmNgLCB0aGF0JiMzOTtzIGFsd2F5cyBjb21waWxlZCBpbi4gVGhlIGZpcnN0IHF1ZXN0aW9uIEkgaGF2ZSBpcywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBwYXRjaD8gU29tZXRoaW5nIHRoYXQgd291bGQgY29uZGl0aW9uYWxseSBlbmFibGUgb3IgZGlzYWJsZSBpdHMgZWZmZWN0cy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZmluZCBhbnl0aGluZyBsaWtlIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBhdCBhIGRlZXBlciBsZXZlbCB0aGFuIGp1c3QgY29kZS4KCk5leHQgc3RlcDogSSYjMzk7bGwgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGNvbnNlcXVlbmNlcyBvZiB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFwcGluZ19zZWVrX2hvbGVfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pb21hcC9idWZmZXJlZC1pby5jPTEzODk9c3RhdGljIHZvaWQgaW9tYXBfd3JpdGVfZGVsYWxsb2Nfc2NhbihzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ0Ni0gKiBBcyB3ZSBhcmUgc2Nhbm5pbmcgdGhlIHBhZ2UgY2FjaGUgZm9yIGRhdGEsIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHJlaW1wbGVtZW50IHRoZVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDQ3OiAqIHdoZWVsIC0gbWFwcGluZ19zZWVrX2hvbGVfZGF0YSgpIGRvZXMgZXhhY3RseSB3aGF0IHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NDgtICogc3RhcnQgYW5kIGVuZCBvZiBkYXRhIHJhbmdlcyBjb3JyZWN0bHkgZXZlbiBmb3Igc3ViLWZvbGlvIGJsb2NrIHNpemVzLiBUaGlzXG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDUzLSAqXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0NTQ6ICogSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbWFwcGluZ19zZWVrX2hvbGVfZGF0YSgpIGlzIG5vdCBhd2FyZSBvZiBFT0YsIGFuZCBzb1xuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDU1LSAqIGNhbiByZXR1cm4gZGF0YSByYW5nZXMgdGhhdCBleGlzdCBpbiB0aGUgY2FjaGUgYmV5b25kIEVPRi4gZS5nLiBhIHBhZ2UgZmF1bHRcbi0tXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NTktICogYmV5b25kIEVPRiBhbmQgdGhlbiBoYXZlIHRvIHB1bmNoIGl0IG91dC4gQmVjYXVzZSB0aGUgcmFuZ2UgaXMgdXAgdG8gZGF0ZSxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmM6MTQ2MDogKiBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKCkgd2lsbCByZXR1cm4gaXQsIGFuZCB3ZSB3aWxsIHNraXAgdGhlIHB1bmNoIGJlY2F1c2VcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ2MS0gKiB0aGUgZm9saW8gaXMgZGlydHkuIFRIaXMgaXMgaW5jb3JyZWN0IC0gd2UgYWx3YXlzIG5lZWQgdG8gcHVuY2ggb3V0IGRlbGFsbG9jXG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDY3LSAqIEludGVydmFscyBhcmUgb2YgdGhlIGZvcm0gW3N0YXJ0X2J5dGUsIGVuZF9ieXRlKSAoaS5lLiBvcGVuIGVuZGVkKSBiZWNhdXNlIGl0XG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0Njg6ICogbWF0Y2hlcyB0aGUgaW50ZXJ2YWxzIHJldHVybmVkIGJ5IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKS4gaS5lLiBTRUVLX0RBVEFcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ2OS0gKiByZXR1cm5zIHRoZSBzdGFydCBvZiBhIGRhdGEgcmFuZ2UgKHN0YXJ0X2J5dGUpLCBhbmQgU0VFS19IT0xFKHN0YXJ0X2J5dGUpXG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYz0xNDc0PXZvaWQgaW9tYXBfd3JpdGVfZGVsYWxsb2NfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgc3RhcnRfYnl0ZSxcbi0tXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0OTEtXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0OTI6XHRcdHN0YXJ0X2J5dGUgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGlub2RlLVx1MDAzZWlfbWFwcGluZyxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5My1cdFx0XHRcdHN0YXJ0X2J5dGUsIHNjYW5fZW5kX2J5dGUsIFNFRUtfREFUQSk7XG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDk3LVx0XHQgKlxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDk4Olx0XHQgKiBOb3RlIHRoYXQgbWFwcGluZ19zZWVrX2hvbGVfZGF0YSBpcyBvbmx5IHN1cHBvc2VkIHRvIHJldHVyblxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDk5LVx0XHQgKiBlaXRoZXIgYW4gb2Zmc2V0IG9yIC1FTlhJTywgc28gV0FSTiBvbiBhbnkgb3RoZXIgZXJyb3IgYXNcbi0tXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE1MTItXHRcdCAqL1xuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNTEzOlx0XHRkYXRhX2VuZCA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCBzdGFydF9ieXRlLFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNTE0LVx0XHRcdFx0c2Nhbl9lbmRfYnl0ZSwgU0VFS19IT0xFKTtcbi0tXG5mcy9pb21hcC9zZWVrLmM9OT1zdGF0aWMgaW50IGlvbWFwX3NlZWtfaG9sZV9pdGVyKHN0cnVjdCBpb21hcF9pdGVyICppdGVyLFxuLS1cbmZzL2lvbWFwL3NlZWsuYy0xNS1cdGNhc2UgSU9NQVBfVU5XUklUVEVOOlxuZnMvaW9tYXAvc2Vlay5jOjE2Olx0XHQqaG9sZV9wb3MgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGl0ZXItXHUwMDNlaW5vZGUtXHUwMDNlaV9tYXBwaW5nLFxuZnMvaW9tYXAvc2Vlay5jLTE3LVx0XHRcdFx0aXRlci1cdTAwM2Vwb3MsIGl0ZXItXHUwMDNlcG9zICYjNDM7IGxlbmd0aCwgU0VFS19IT0xFKTtcbi0tXG5mcy9pb21hcC9zZWVrLmM9NTU9c3RhdGljIGludCBpb21hcF9zZWVrX2RhdGFfaXRlcihzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlcixcbi0tXG5mcy9pb21hcC9zZWVrLmMtNjMtXHRjYXNlIElPTUFQX1VOV1JJVFRFTjpcbmZzL2lvbWFwL3NlZWsuYzo2NDpcdFx0KmhvbGVfcG9zID0gbWFwcGluZ19zZWVrX2hvbGVfZGF0YShpdGVyLVx1MDAzZWlub2RlLVx1MDAzZWlfbWFwcGluZyxcbmZzL2lvbWFwL3NlZWsuYy02NS1cdFx0XHRcdGl0ZXItXHUwMDNlcG9zLCBpdGVyLVx1MDAzZXBvcyAmIzQzOyBsZW5ndGgsIFNFRUtfREFUQSk7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg9MTI5Mj1ib29sIGZpbGVtYXBfcmVsZWFzZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZnBfdCBnZnApO1xuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg6MTI5Mzpsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsXG5pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaC0xMjk0LVx0XHRpbnQgd2hlbmNlKTtcbi0tXG5tbS9maWxlbWFwLmM9MzE4OD1zdGF0aWMgaW5saW5lIHNpemVfdCBzZWVrX2ZvbGlvX3NpemUoc3RydWN0IHhhX3N0YXRlICp4YXMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vZmlsZW1hcC5jLTMxOTUtLyoqXG5tbS9maWxlbWFwLmM6MzE5NjogKiBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhIC0gU2VlayBmb3IgU0VFS19EQVRBIC8gU0VFS19IT0xFIGluIHRoZSBwYWdlIGNhY2hlLlxubW0vZmlsZW1hcC5jLTMxOTctICogQG1hcHBpbmc6IEFkZHJlc3Mgc3BhY2UgdG8gc2VhcmNoLlxuLS1cbm1tL2ZpbGVtYXAuYy0zMjEyLSAqL1xubW0vZmlsZW1hcC5jOjMyMTM6bG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcbm1tL2ZpbGVtYXAuYy0zMjE0LVx0XHRsb2ZmX3QgZW5kLCBpbnQgd2hlbmNlKVxuLS1cbm1tL3NobWVtLmM9MzU3Nz1zdGF0aWMgbG9mZl90IHNobWVtX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKVxuLS1cbm1tL3NobWVtLmMtMzU4OS1cdC8qIFdlJiMzOTtyZSBob2xkaW5nIGlfcndzZW0gc28gd2UgY2FuIGFjY2VzcyBpX3NpemUgZGlyZWN0bHkgKi9cbm1tL3NobWVtLmM6MzU5MDpcdG9mZnNldCA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEobWFwcGluZywgb2Zmc2V0LCBpbm9kZS1cdTAwM2VpX3NpemUsIHdoZW5jZSk7XG5tbS9zaG1lbS5jLTM1OTEtXHRpZiAob2Zmc2V0IFx1MDAzZT0gMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgYW5kIEltcGFjdCBvZiBhIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBkZXRhaWxzLiBUaGlzIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBmdW5jdGlvbiBpcyB1c2VkIGluIGEgZmV3IGtleSBwbGFjZXM6IGBmcy9pb21hcC9idWZmZXJlZC1pby5jYCBzcGVjaWZpY2FsbHkgd2l0aGluIGBpb21hcF93cml0ZV9kZWxhbGxvY19yZWxlYXNlYCwgYW5kIGluIHRoZSBzZWVraW5nIGxvZ2ljIHZpYSBgZnMvaW9tYXAvc2Vlay5jYCBpbiBib3RoIGBpb21hcF9zZWVrX2hvbGVfaXRlcmAgYW5kIGBpb21hcF9zZWVrX2RhdGFfaXRlcmAuIFRoZW4gd2UgYWxzbyBzZWUgaXQgaW4gYG1tL3NobWVtLmNgIHNwZWNpZmljYWxseSBpbiBgc2htZW1fZmlsZV9sbHNlZWtgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgbHNlZWtgIHdpdGggZWl0aGVyIGBTRUVLX0hPTEVgIG9yIGBTRUVLX0RBVEFgIGNhbGxzLCBlc3BlY2lhbGx5IG9uIHNobWVtICh0bXBmcykgZmlsZXMsIGFuZCB0aGVuIGFsc28gZmlsZXN5c3RlbXMgdGhhdCB1c2UgaW9tYXAg4oCTIFhGUywgZXh0NCwgYW5kIGJ0cmZzIGFyZSB0aGUgYmlnIG9uZXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGZpeGluZyBhIGZ1bmN0aW9uYWwgYnVnLiBUaGUgY29uY2VybiBpcyB0aGF0IGBwb3NgIGNvdWxkIHBvdGVudGlhbGx5IGV4Y2VlZCBgZW5kYCBiZWNhdXNlIG9mIGhvdyBgcm91bmRfdXBgIGJlaGF2ZXMsIHdoaWNoIGNvdWxkIGNhdXNlIGludGVyZXN0aW5nIGFuZCBwb3NzaWJseSBleHBsb2l0YWJsZSBiZWhhdmlvci4gU2VlbXMgcHJldHR5IHNlcmlvdXMgZ2l2ZW4gdGhlIGV4cG9zdXJlLiBEZWZpbml0ZWx5IFdvcnRoRnV6emluZy4KCk15IGZvY3VzIGlzIHByaW1hcmlseSBvbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgaXRzZWxmLCBhbmQgaXTigJlzIGRpcmVjdCBjYWxsZXIgaW4gc2htZW0sIHdoaWNoIGlzIGBzaG1lbV9maWxlX2xsc2Vla2AuIEZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCB0aGVyZSBpc27igJl0IG11Y2ggdG8gd29ycnkgYWJvdXQsIHRoYW5rZnVsbHkuIGBtbS9maWxlbWFwLmNgIGlzIGFsd2F5cyBjb21waWxlZCwgYW5kIHNobWVtIGlzIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSwgVE1QRlMgaXMgdXN1YWxseSBlbmFibGVkLCBhbmQgSU9NQVAgaXMgZW5hYmxlZCBieSBxdWl0ZSBhIGZldyBmaWxlc3lzdGVtcyB0aGF0IGFyZSBjb21tb25seSB1c2VkLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IHRob3VnaC4gYENPTkZJR19TSE1FTWAgYW5kIGBDT05GSUdfRlNfSU9NQVBgLiBHb3QgaXQuCgpObyBuZWVkIHRvIHNwZWNpZnkgYW55IHNwZWNpYWwgY29uZmlncy4gRm9yIGZ1enppbmcgcHVycG9zZXMsIGxldCYjMzk7cyBrZWVwIHRoZSBmb2N1cyBzeW1ib2xzIHRvIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBhbmQgYHNobWVtX2ZpbGVfbGxzZWVrYC4gTGV0JiMzOTtzIGFsc28gdGFrZSBhIGxvb2sgYXQgYG1tL2ZpbGVtYXAuY2AgYXJvdW5kIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcHBpbmdfc2Vla19ob2xlX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9maWxlbWFwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZmlsZW1hcC5jPTMxODg9c3RhdGljIGlubGluZSBzaXplX3Qgc2Vla19mb2xpb19zaXplKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL2ZpbGVtYXAuYy0zMTk1LS8qKlxubW0vZmlsZW1hcC5jOjMxOTY6ICogbWFwcGluZ19zZWVrX2hvbGVfZGF0YSAtIFNlZWsgZm9yIFNFRUtfREFUQSAvIFNFRUtfSE9MRSBpbiB0aGUgcGFnZSBjYWNoZS5cbm1tL2ZpbGVtYXAuYy0zMTk3LSAqIEBtYXBwaW5nOiBBZGRyZXNzIHNwYWNlIHRvIHNlYXJjaC5cbi0tXG5tbS9maWxlbWFwLmMtMzIxMi0gKi9cbm1tL2ZpbGVtYXAuYzozMjEzOmxvZmZfdCBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3Qgc3RhcnQsXG5tbS9maWxlbWFwLmMtMzIxNC1cdFx0bG9mZl90IGVuZCwgaW50IHdoZW5jZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTU2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBzaG1lbV9maWxlX2xsc2Vla2AqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgbG9vayBhdCBgc2htZW1fZmlsZV9sbHNlZWtgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGFueSBwb3RlbnRpYWwgcXVpcmtzLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzaGFyZWQgbWVtb3J5IHN1YnN5c3RlbSBhbmQgYW55IHNwZWNpZmljIGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIHdpdGhpbiB0aGUgYnJvYWRlciBmaWxlIHN5c3RlbSBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgZWRnZSBjYXNlcywgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgYnVnIGh1bnRpbmcuIFRoaXMgc2VlbXMgbGlrZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIHNvIGEgZGVlcCB1bmRlcnN0YW5kaW5nIGhlcmUgaXMgcGFyYW1vdW50LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyBgbGxzZWVrYCBoYW5kbGVzIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbnQgYWNjZXNzLCBlcnJvciBjb25kaXRpb25zLCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1hbmFnZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2htZW1fZmlsZV9sbHNlZWsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zaG1lbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3NobWVtLmM9MzQ2NT1zdGF0aWMgc3NpemVfdCBzaG1lbV9maWxlX3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxuLS1cbm1tL3NobWVtLmMtMzU3Ni1cbm1tL3NobWVtLmM6MzU3NzpzdGF0aWMgbG9mZl90IHNobWVtX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKVxubW0vc2htZW0uYy0zNTc4LXtcbi0tXG5tbS9zaG1lbS5jPTUxMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc2htZW1fZmlsZV9vcGVyYXRpb25zID0ge1xuLS1cbm1tL3NobWVtLmMtNTE0Mi0jaWZkZWYgQ09ORklHX1RNUEZTXG5tbS9zaG1lbS5jOjUxNDM6XHQubGxzZWVrXHRcdD0gc2htZW1fZmlsZV9sbHNlZWssXG5tbS9zaG1lbS5jLTUxNDQtXHQucmVhZF9pdGVyXHQ9IHNobWVtX2ZpbGVfcmVhZF9pdGVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgb2YgYHNobWVtX2ZpbGVfbGxzZWVrYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIGxpa2UgYHNobWVtX2ZpbGVfbGxzZWVrYCBpcyBzb21laG93IGxpbmtlZCB0byBgQ09ORklHX1RNUEZTYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtSaWdodCwgVE1QRlMsIHNvIHRoYXQmIzM5O3MgYSBnb29kIG9uZSB0byBlbnN1cmUgaXMgZW5hYmxlZC4mIzM0OyBCdXQgd2FpdCwgaGFuZyBvbi4gQSBjbG9zZXIgbG9vayByZXZlYWxzIGEgYml0IG1vcmUgY29tcGxleGl0eS4gVGhlIGZ1bmN0aW9uIGl0c2VsZiwgYHNobWVtX2ZpbGVfbGxzZWVrYCwgc2VlbXMgdG8gYmUgKmRlZmluZWQqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBgQ09ORklHX1RNUEZTYCBpcyBzZXQuIEhvd2V2ZXIsIGl0cyAqdXNhZ2UqIHdpdGhpbiBgc2htZW1fZmlsZV9vcGVyYXRpb25zYCBhcHBlYXJzIHRvIGJlIGNvbmRpdGlvbmFsLCBndWFyZGVkIGJ5IGAjaWZkZWYgQ09ORklHX1RNUEZTYC4gVGhhdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbi4KCkkgbmVlZCB0byBjb25maXJtIGV4YWN0bHkgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hlcmUgaXQmIzM5O3MgY2FsbGVkLiBNeSBiZXN0IGJldCBpcyB0byBnbyBkaXJlY3RseSB0byBgbW0vc2htZW0uY2AgYW5kIHRha2UgYSBsb29rIGFyb3VuZCB0aGUgZGVmaW5pdGlvbiBvZiBgc2htZW1fZmlsZV9vcGVyYXRpb25zYC4gSSYjMzk7bGwgem9vbSBpbiBvbiB0aGF0IGFyZWEgYW5kIHNlZSBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3NobWVtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MTM4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUxMzg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzaG1lbV9maWxlX29wZXJhdGlvbnMgPSB7XG41MTM5Olx0XHQubW1hcF9wcmVwYXJlXHQ9IHNobWVtX21tYXBfcHJlcGFyZSxcbjUxNDA6XHRcdC5vcGVuXHRcdD0gc2htZW1fZmlsZV9vcGVuLFxuNTE0MTpcdFx0LmdldF91bm1hcHBlZF9hcmVhID0gc2htZW1fZ2V0X3VubWFwcGVkX2FyZWEsXG41MTQyOlx0I2lmZGVmIENPTkZJR19UTVBGU1xuNTE0MzpcdFx0Lmxsc2Vla1x0XHQ9IHNobWVtX2ZpbGVfbGxzZWVrLFxuNTE0NDpcdFx0LnJlYWRfaXRlclx0PSBzaG1lbV9maWxlX3JlYWRfaXRlcixcbjUxNDU6XHRcdC53cml0ZV9pdGVyXHQ9IHNobWVtX2ZpbGVfd3JpdGVfaXRlcixcbjUxNDY6XHRcdC5mc3luY1x0XHQ9IG5vb3BfZnN5bmMsXG41MTQ3Olx0XHQuc3BsaWNlX3JlYWRcdD0gc2htZW1fZmlsZV9zcGxpY2VfcmVhZCxcbjUxNDg6XHRcdC5zcGxpY2Vfd3JpdGVcdD0gaXRlcl9maWxlX3NwbGljZV93cml0ZSxcbjUxNDk6XHRcdC5mYWxsb2NhdGVcdD0gc2htZW1fZmFsbG9jYXRlLFxuNTE1MDpcdFx0LnNldGxlYXNlXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXG41MTUxOlx0I2VuZGlmXG41MTUyOlx0fTtcbjUxNTM6XHRcbjUxNTQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2htZW1faW5vZGVfb3BlcmF0aW9ucyA9IHtcbjUxNTU6XHRcdC5nZXRhdHRyXHQ9IHNobWVtX2dldGF0dHIsXG41MTU2Olx0XHQuc2V0YXR0clx0PSBzaG1lbV9zZXRhdHRyLFxuNTE1NzpcdCNpZmRlZiBDT05GSUdfVE1QRlNfWEFUVFJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMyMgoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWRlMvTU0gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCByZWxpZXMgb24gYENPTkZJR19UTVBGU2Ag4oCTIHRoYXQmIzM5O3MgYSBnaXZlbiBpZiBpdOKAmXMgdXNpbmcgYHNobWVtX2ZpbGVfbGxzZWVrYC4gSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBpb21hcGAgdGhvdWdoLCBJIGFzc3VtZSBgQ09ORklHX0ZTX0lPTUFQYCB3aWxsIGJlIHB1bGxlZCBpbiBieSB0aGUgcmVsZXZhbnQgZmlsZXN5c3RlbXMuIEkmIzM5O2xsIGFkZCBgVE1QRlNgIHRvIGBFbmFibGVDb25maWdzYC4KCk5vdywgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBvdXQgaW4gYG1tL2ZpbGVtYXAuY2AuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBNZW1vcnkgTWFuYWdlbWVudCBmdW5jdGlvbiDigJMgaW1wb3J0YW50IGZvciBhbnkgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBJJiMzOTtsbCBhZGQgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHRvIGBGb2N1c1N5bWJvbHNgLgoKU2luY2UgaXTigJlzIHJlbGF0ZWQgdG8gaG9sZSBzZWVraW5nLCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMgYXMgd2VsbC4gSSYjMzk7bGwgYWxzbyBhZGQgYHNobWVtX2ZpbGVfbGxzZWVrYCwgYGlvbWFwX3NlZWtfaG9sZV9pdGVyYCwgYW5kIGBpb21hcF9zZWVrX2RhdGFfaXRlcmAgdG8gdGhlIHN5bWJvbCBsaXN0LgoKVGhlIGJ1ZyBpcyBpbiB0aGUgcm91bmRpbmcgYmVoYXZpb3Igd2l0aGluIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCwgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgbWVhbnMgaXQgaW1wYWN0cyBob3cgYGxzZWVrYCBiZWhhdmVzIHdpdGggYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgLCBzbyB0aGUgcGF0Y2ggY2xlYXJseSBpcyBhYm91dCBmaXhpbmcgaG93IHRoZSBjb3JlIFZGUy9NTSBsb2dpYyBoYW5kbGVzIHRob3NlIG9wZXJhdGlvbnMuIFRoaXMgd2lsbCBhZmZlY3QgdG1wZnMgYW5kIGlvbWFwIGZpbGVzeXN0ZW1zLCBzbyBJIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kLgoKSSBzaG91bGQgY2FsbCBzZXQtcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUTVBGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hcHBpbmdfc2Vla19ob2xlX2RhdGEmIzM0OywKICAgICYjMzQ7c2htZW1fZmlsZV9sbHNlZWsmIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19ob2xlX2l0ZXImIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19kYXRhX2l0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUTVBGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hcHBpbmdfc2Vla19ob2xlX2RhdGEmIzM0OywKICAgICYjMzQ7c2htZW1fZmlsZV9sbHNlZWsmIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19ob2xlX2l0ZXImIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19kYXRhX2l0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjg6MjkuMjI0Njk3NjIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMTkzNzQ0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVE1QRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYXBwaW5nX3NlZWtfaG9sZV9kYXRhXCIsXG4gICAgXCJzaG1lbV9maWxlX2xsc2Vla1wiLFxuICAgIFwiaW9tYXBfc2Vla19ob2xlX2l0ZXJcIixcbiAgICBcImlvbWFwX3NlZWtfZGF0YV9pdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODoyOS4yMjQ3MDY2MDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzQ5MzIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE1ZWJmOWE4NjhjZGY2ZDZlOWI5YmU4NTc2ZTU0NzQ4NjNmYzkzZDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTk6Mjg6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXFxuaW5kZXggNWFmNjJlNmFiY2E1OGIuLmI3OGZkODhmMjYzODc2IDEwMDY0NFxcbi0tLSBhL21tL2ZpbGVtYXAuY1xcbisrKyBiL21tL2ZpbGVtYXAuY1xcbkBAIC0zMjI1LDYgKzMyMjUsNyBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxcbiBcXHR3aGlsZSAoKGZvbGlvID0gZmluZF9nZXRfZW50cnkoXFx1MDAyNnhhcywgbWF4LCBYQV9QUkVTRU5UKSkpIHtcXG4gXFx0XFx0bG9mZl90IHBvcyA9ICh1NjQpeGFzLnhhX2luZGV4IFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuIFxcdFxcdHNpemVfdCBzZWVrX3NpemU7XFxuK1xcdFxcdHU2NCBuZXh0O1xcbiBcXG4gXFx0XFx0aWYgKHN0YXJ0IFxcdTAwM2MgcG9zKSB7XFxuIFxcdFxcdFxcdGlmICghc2Vla19kYXRhKVxcbkBAIC0zMjMzLDcgKzMyMzQsMTEgQEAgbG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c2Vla19zaXplID0gc2Vla19mb2xpb19zaXplKFxcdTAwMjZ4YXMsIGZvbGlvKTtcXG4tXFx0XFx0cG9zID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xcbitcXHRcXHRuZXh0ID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xcbitcXHRcXHRpZiAobmV4dCBcXHUwMDNlICh1NjQpZW5kKVxcbitcXHRcXHRcXHRwb3MgPSBlbmQ7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cG9zID0gbmV4dDtcXG4gXFx0XFx0c3RhcnQgPSBmb2xpb19zZWVrX2hvbGVfZGF0YShcXHUwMDI2eGFzLCBtYXBwaW5nLCBmb2xpbywgc3RhcnQsIHBvcyxcXG4gXFx0XFx0XFx0XFx0c2Vla19kYXRhKTtcXG4gXFx0XFx0aWYgKHN0YXJ0IFxcdTAwM2MgcG9zKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODoyOS43NDg4MTU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc5NTIzNDU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUTVBGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIixcbiAgICBcInNobWVtX2ZpbGVfbGxzZWVrXCIsXG4gICAgXCJpb21hcF9zZWVrX2hvbGVfaXRlclwiLFxuICAgIFwiaW9tYXBfc2Vla19kYXRhX2l0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTVlYmY5YTg2OGNkZjZkNmU5YjliZTg1NzZlNTQ3NDg2M2ZjOTNkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE5OjI4OjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uYjc4ZmQ4OGYyNjM4NzYgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbisrKyBiL21tL2ZpbGVtYXAuY1xuQEAgLTMyMjUsNiArMzIyNSw3IEBAIGxvZmZfdCBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3Qgc3RhcnQsXG4gXHR3aGlsZSAoKGZvbGlvID0gZmluZF9nZXRfZW50cnkoXHUwMDI2eGFzLCBtYXgsIFhBX1BSRVNFTlQpKSkge1xuIFx0XHRsb2ZmX3QgcG9zID0gKHU2NCl4YXMueGFfaW5kZXggXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQ7XG4gXHRcdHNpemVfdCBzZWVrX3NpemU7XG4rXHRcdHU2NCBuZXh0O1xuIFxuIFx0XHRpZiAoc3RhcnQgXHUwMDNjIHBvcykge1xuIFx0XHRcdGlmICghc2Vla19kYXRhKVxuQEAgLTMyMzMsNyArMzIzNCwxMSBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxuIFx0XHR9XG4gXG4gXHRcdHNlZWtfc2l6ZSA9IHNlZWtfZm9saW9fc2l6ZShcdTAwMjZ4YXMsIGZvbGlvKTtcbi1cdFx0cG9zID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xuK1x0XHRuZXh0ID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xuK1x0XHRpZiAobmV4dCBcdTAwM2UgKHU2NCllbmQpXG4rXHRcdFx0cG9zID0gZW5kO1xuK1x0XHRlbHNlXG4rXHRcdFx0cG9zID0gbmV4dDtcbiBcdFx0c3RhcnQgPSBmb2xpb19zZWVrX2hvbGVfZGF0YShcdTAwMjZ4YXMsIG1hcHBpbmcsIGZvbGlvLCBzdGFydCwgcG9zLFxuIFx0XHRcdFx0c2Vla19kYXRhKTtcbiBcdFx0aWYgKHN0YXJ0IFx1MDAzYyBwb3MpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODoyOS43NDg4MTgxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjIwNDk0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBtbS9maWxlbWFwLmMgLSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgaW4gYG1tL2ZpbGVtYXAuY2AuIEltbWVkaWF0ZWx5LCBpdCBjYXRjaGVzIG15IGV5ZSBiZWNhdXNlIGl04oCZcyBhIGZhaXJseSBsb3ctbGV2ZWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB3ZSdyZSBjYWxjdWxhdGluZyBgcG9zYCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSXQgc2VlbXMgdGhleSd2ZSBhZGp1c3RlZCB0aGUgY2FsY3VsYXRpb24gdXNpbmcgYHJvdW5kX3VwKCh1NjQpcG9zICsgMSwgc2Vla19zaXplKWAuIFRoZSBsb2dpYyBmb2xsb3dzOiBpZiB0aGUgY2FsY3VsYXRlZCBgbmV4dGAgdmFsdWUgZXhjZWVkcyB0aGUgYGVuZGAgdmFsdWUsIGBwb3NgIGdldHMgY2xhbXBlZCB0byBgZW5kYDsgb3RoZXJ3aXNlLCBpdCdzIHNldCB0byBgbmV4dGAuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBjaGFuZ2Ug4oCTIGl0J3MgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBWaXJ0dWFsIEZpbGUgU3lzdGVtIChWRlMpIGFuZCBNZW1vcnkgTWFuYWdlbWVudCAoTU0pIGxheWVycy4gIEl0J3MgYWZmZWN0aW5nIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCB3aGljaCBtZWFucyB3ZeKAmXJlIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgY2hhbmdlcyBpbiBob3cgZmlsZXMgcmVwb3J0IGRhdGEgb3IgaG9sZXMgdG8gdXNlcnNwYWNlLiBEZWZpbml0ZWx5IGEgY2FuZGlkYXRlIGZvciBjYXJlZnVsIHJldmlldy5cblxuU2luY2UgaXTigJlzIGluIGBtbS9maWxlbWFwLmNgLCB0aGF0J3MgYWx3YXlzIGNvbXBpbGVkIGluLiBUaGUgZmlyc3QgcXVlc3Rpb24gSSBoYXZlIGlzLCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIHBhdGNoPyBTb21ldGhpbmcgdGhhdCB3b3VsZCBjb25kaXRpb25hbGx5IGVuYWJsZSBvciBkaXNhYmxlIGl0cyBlZmZlY3RzLiBMZXQncyBzZWUgaWYgd2UgY2FuIGZpbmQgYW55dGhpbmcgbGlrZSB0aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYXQgYSBkZWVwZXIgbGV2ZWwgdGhhbiBqdXN0IGNvZGUuXG5cbk5leHQgc3RlcDogSSdsbCBjaGVjayB0aGUgY2FsbGVycyBvZiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjM0LjYxMDg3MDkxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzEyMzAyNzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaW9tYXAvYnVmZmVyZWQtaW8uYz0xMzg5PXN0YXRpYyB2b2lkIGlvbWFwX3dyaXRlX2RlbGFsbG9jX3NjYW4oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ0Ni0gKiBBcyB3ZSBhcmUgc2Nhbm5pbmcgdGhlIHBhZ2UgY2FjaGUgZm9yIGRhdGEsIHdlIGRvbid0IG5lZWQgdG8gcmVpbXBsZW1lbnQgdGhlXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDQ3OiAqIHdoZWVsIC0gbWFwcGluZ19zZWVrX2hvbGVfZGF0YSgpIGRvZXMgZXhhY3RseSB3aGF0IHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDQ4LSAqIHN0YXJ0IGFuZCBlbmQgb2YgZGF0YSByYW5nZXMgY29ycmVjdGx5IGV2ZW4gZm9yIHN1Yi1mb2xpbyBibG9jayBzaXplcy4gVGhpc1xcbi0tXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDUzLSAqXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDU0OiAqIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKSBpcyBub3QgYXdhcmUgb2YgRU9GLCBhbmQgc29cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NTUtICogY2FuIHJldHVybiBkYXRhIHJhbmdlcyB0aGF0IGV4aXN0IGluIHRoZSBjYWNoZSBiZXlvbmQgRU9GLiBlLmcuIGEgcGFnZSBmYXVsdFxcbi0tXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDU5LSAqIGJleW9uZCBFT0YgYW5kIHRoZW4gaGF2ZSB0byBwdW5jaCBpdCBvdXQuIEJlY2F1c2UgdGhlIHJhbmdlIGlzIHVwIHRvIGRhdGUsXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDYwOiAqIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKSB3aWxsIHJldHVybiBpdCwgYW5kIHdlIHdpbGwgc2tpcCB0aGUgcHVuY2ggYmVjYXVzZVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ2MS0gKiB0aGUgZm9saW8gaXMgZGlydHkuIFRIaXMgaXMgaW5jb3JyZWN0IC0gd2UgYWx3YXlzIG5lZWQgdG8gcHVuY2ggb3V0IGRlbGFsbG9jXFxuLS1cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NjctICogSW50ZXJ2YWxzIGFyZSBvZiB0aGUgZm9ybSBbc3RhcnRfYnl0ZSwgZW5kX2J5dGUpIChpLmUuIG9wZW4gZW5kZWQpIGJlY2F1c2UgaXRcXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0Njg6ICogbWF0Y2hlcyB0aGUgaW50ZXJ2YWxzIHJldHVybmVkIGJ5IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKS4gaS5lLiBTRUVLX0RBVEFcXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NjktICogcmV0dXJucyB0aGUgc3RhcnQgb2YgYSBkYXRhIHJhbmdlIChzdGFydF9ieXRlKSwgYW5kIFNFRUtfSE9MRShzdGFydF9ieXRlKVxcbi0tXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYz0xNDc0PXZvaWQgaW9tYXBfd3JpdGVfZGVsYWxsb2NfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgc3RhcnRfYnl0ZSxcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5MS1cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0OTI6XFx0XFx0c3RhcnRfYnl0ZSA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoaW5vZGUtXFx1MDAzZWlfbWFwcGluZyxcXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0OTMtXFx0XFx0XFx0XFx0c3RhcnRfYnl0ZSwgc2Nhbl9lbmRfYnl0ZSwgU0VFS19EQVRBKTtcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5Ny1cXHRcXHQgKlxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmM6MTQ5ODpcXHRcXHQgKiBOb3RlIHRoYXQgbWFwcGluZ19zZWVrX2hvbGVfZGF0YSBpcyBvbmx5IHN1cHBvc2VkIHRvIHJldHVyblxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5OS1cXHRcXHQgKiBlaXRoZXIgYW4gb2Zmc2V0IG9yIC1FTlhJTywgc28gV0FSTiBvbiBhbnkgb3RoZXIgZXJyb3IgYXNcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTUxMi1cXHRcXHQgKi9cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE1MTM6XFx0XFx0ZGF0YV9lbmQgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGlub2RlLVxcdTAwM2VpX21hcHBpbmcsIHN0YXJ0X2J5dGUsXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNTE0LVxcdFxcdFxcdFxcdHNjYW5fZW5kX2J5dGUsIFNFRUtfSE9MRSk7XFxuLS1cXG5mcy9pb21hcC9zZWVrLmM9OT1zdGF0aWMgaW50IGlvbWFwX3NlZWtfaG9sZV9pdGVyKHN0cnVjdCBpb21hcF9pdGVyICppdGVyLFxcbi0tXFxuZnMvaW9tYXAvc2Vlay5jLTE1LVxcdGNhc2UgSU9NQVBfVU5XUklUVEVOOlxcbmZzL2lvbWFwL3NlZWsuYzoxNjpcXHRcXHQqaG9sZV9wb3MgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGl0ZXItXFx1MDAzZWlub2RlLVxcdTAwM2VpX21hcHBpbmcsXFxuZnMvaW9tYXAvc2Vlay5jLTE3LVxcdFxcdFxcdFxcdGl0ZXItXFx1MDAzZXBvcywgaXRlci1cXHUwMDNlcG9zICsgbGVuZ3RoLCBTRUVLX0hPTEUpO1xcbi0tXFxuZnMvaW9tYXAvc2Vlay5jPTU1PXN0YXRpYyBpbnQgaW9tYXBfc2Vla19kYXRhX2l0ZXIoc3RydWN0IGlvbWFwX2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9pb21hcC9zZWVrLmMtNjMtXFx0Y2FzZSBJT01BUF9VTldSSVRURU46XFxuZnMvaW9tYXAvc2Vlay5jOjY0OlxcdFxcdCpob2xlX3BvcyA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoaXRlci1cXHUwMDNlaW5vZGUtXFx1MDAzZWlfbWFwcGluZyxcXG5mcy9pb21hcC9zZWVrLmMtNjUtXFx0XFx0XFx0XFx0aXRlci1cXHUwMDNlcG9zLCBpdGVyLVxcdTAwM2Vwb3MgKyBsZW5ndGgsIFNFRUtfREFUQSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaD0xMjkyPWJvb2wgZmlsZW1hcF9yZWxlYXNlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcCk7XFxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg6MTI5Mzpsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsXFxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmgtMTI5NC1cXHRcXHRpbnQgd2hlbmNlKTtcXG4tLVxcbm1tL2ZpbGVtYXAuYz0zMTg4PXN0YXRpYyBpbmxpbmUgc2l6ZV90IHNlZWtfZm9saW9fc2l6ZShzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2ZpbGVtYXAuYy0zMTk1LS8qKlxcbm1tL2ZpbGVtYXAuYzozMTk2OiAqIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEgLSBTZWVrIGZvciBTRUVLX0RBVEEgLyBTRUVLX0hPTEUgaW4gdGhlIHBhZ2UgY2FjaGUuXFxubW0vZmlsZW1hcC5jLTMxOTctICogQG1hcHBpbmc6IEFkZHJlc3Mgc3BhY2UgdG8gc2VhcmNoLlxcbi0tXFxubW0vZmlsZW1hcC5jLTMyMTItICovXFxubW0vZmlsZW1hcC5jOjMyMTM6bG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcXG5tbS9maWxlbWFwLmMtMzIxNC1cXHRcXHRsb2ZmX3QgZW5kLCBpbnQgd2hlbmNlKVxcbi0tXFxubW0vc2htZW0uYz0zNTc3PXN0YXRpYyBsb2ZmX3Qgc2htZW1fZmlsZV9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpXFxuLS1cXG5tbS9zaG1lbS5jLTM1ODktXFx0LyogV2UncmUgaG9sZGluZyBpX3J3c2VtIHNvIHdlIGNhbiBhY2Nlc3MgaV9zaXplIGRpcmVjdGx5ICovXFxubW0vc2htZW0uYzozNTkwOlxcdG9mZnNldCA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEobWFwcGluZywgb2Zmc2V0LCBpbm9kZS1cXHUwMDNlaV9zaXplLCB3aGVuY2UpO1xcbm1tL3NobWVtLmMtMzU5MS1cXHRpZiAob2Zmc2V0IFxcdTAwM2U9IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjQxLjkyMzE4MjczN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTE3MTEzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBhbmQgSW1wYWN0IG9mIGEgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBkZXRhaWxzLiBUaGlzIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBmdW5jdGlvbiBpcyB1c2VkIGluIGEgZmV3IGtleSBwbGFjZXM6IGBmcy9pb21hcC9idWZmZXJlZC1pby5jYCBzcGVjaWZpY2FsbHkgd2l0aGluIGBpb21hcF93cml0ZV9kZWxhbGxvY19yZWxlYXNlYCwgYW5kIGluIHRoZSBzZWVraW5nIGxvZ2ljIHZpYSBgZnMvaW9tYXAvc2Vlay5jYCBpbiBib3RoIGBpb21hcF9zZWVrX2hvbGVfaXRlcmAgYW5kIGBpb21hcF9zZWVrX2RhdGFfaXRlcmAuIFRoZW4gd2UgYWxzbyBzZWUgaXQgaW4gYG1tL3NobWVtLmNgIHNwZWNpZmljYWxseSBpbiBgc2htZW1fZmlsZV9sbHNlZWtgLiBUaGF0J3MgaW1wb3J0YW50LiBJdCdzIGVzc2VudGlhbGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCB3aXRoIGVpdGhlciBgU0VFS19IT0xFYCBvciBgU0VFS19EQVRBYCBjYWxscywgZXNwZWNpYWxseSBvbiBzaG1lbSAodG1wZnMpIGZpbGVzLCBhbmQgdGhlbiBhbHNvIGZpbGVzeXN0ZW1zIHRoYXQgdXNlIGlvbWFwIOKAkyBYRlMsIGV4dDQsIGFuZCBidHJmcyBhcmUgdGhlIGJpZyBvbmVzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIGZpeGluZyBhIGZ1bmN0aW9uYWwgYnVnLiBUaGUgY29uY2VybiBpcyB0aGF0IGBwb3NgIGNvdWxkIHBvdGVudGlhbGx5IGV4Y2VlZCBgZW5kYCBiZWNhdXNlIG9mIGhvdyBgcm91bmRfdXBgIGJlaGF2ZXMsIHdoaWNoIGNvdWxkIGNhdXNlIGludGVyZXN0aW5nIGFuZCBwb3NzaWJseSBleHBsb2l0YWJsZSBiZWhhdmlvci4gU2VlbXMgcHJldHR5IHNlcmlvdXMgZ2l2ZW4gdGhlIGV4cG9zdXJlLiBEZWZpbml0ZWx5IFdvcnRoRnV6emluZy5cblxuTXkgZm9jdXMgaXMgcHJpbWFyaWx5IG9uIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBpdHNlbGYsIGFuZCBpdOKAmXMgZGlyZWN0IGNhbGxlciBpbiBzaG1lbSwgd2hpY2ggaXMgYHNobWVtX2ZpbGVfbGxzZWVrYC4gRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIHRoZXJlIGlzbuKAmXQgbXVjaCB0byB3b3JyeSBhYm91dCwgdGhhbmtmdWxseS4gYG1tL2ZpbGVtYXAuY2AgaXMgYWx3YXlzIGNvbXBpbGVkLCBhbmQgc2htZW0gaXMgdW5pdmVyc2FsbHkgYXZhaWxhYmxlLCBUTVBGUyBpcyB1c3VhbGx5IGVuYWJsZWQsIGFuZCBJT01BUCBpcyBlbmFibGVkIGJ5IHF1aXRlIGEgZmV3IGZpbGVzeXN0ZW1zIHRoYXQgYXJlIGNvbW1vbmx5IHVzZWQuIExldCdzIGNvbmZpcm0gdGhhdCB0aG91Z2guIGBDT05GSUdfU0hNRU1gIGFuZCBgQ09ORklHX0ZTX0lPTUFQYC4gR290IGl0LlxuXG5ObyBuZWVkIHRvIHNwZWNpZnkgYW55IHNwZWNpYWwgY29uZmlncy4gRm9yIGZ1enppbmcgcHVycG9zZXMsIGxldCdzIGtlZXAgdGhlIGZvY3VzIHN5bWJvbHMgdG8gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIGFuZCBgc2htZW1fZmlsZV9sbHNlZWtgLiBMZXQncyBhbHNvIHRha2UgYSBsb29rIGF0IGBtbS9maWxlbWFwLmNgIGFyb3VuZCBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAsIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODo0OC41MzQ4OTcwNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MjUzNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZmlsZW1hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2ZpbGVtYXAuYz0zMTg4PXN0YXRpYyBpbmxpbmUgc2l6ZV90IHNlZWtfZm9saW9fc2l6ZShzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2ZpbGVtYXAuYy0zMTk1LS8qKlxcbm1tL2ZpbGVtYXAuYzozMTk2OiAqIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEgLSBTZWVrIGZvciBTRUVLX0RBVEEgLyBTRUVLX0hPTEUgaW4gdGhlIHBhZ2UgY2FjaGUuXFxubW0vZmlsZW1hcC5jLTMxOTctICogQG1hcHBpbmc6IEFkZHJlc3Mgc3BhY2UgdG8gc2VhcmNoLlxcbi0tXFxubW0vZmlsZW1hcC5jLTMyMTItICovXFxubW0vZmlsZW1hcC5jOjMyMTM6bG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcXG5tbS9maWxlbWFwLmMtMzIxNC1cXHRcXHRsb2ZmX3QgZW5kLCBpbnQgd2hlbmNlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODo0OC42NDExNTk2MThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA4Njg4ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgc2htZW1fZmlsZV9sbHNlZWtgKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBMZXQncyBzdGFydCB3aXRoIGEgZm9jdXNlZCBsb29rIGF0IGBzaG1lbV9maWxlX2xsc2Vla2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgYW55IHBvdGVudGlhbCBxdWlya3MuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2hhcmVkIG1lbW9yeSBzdWJzeXN0ZW0gYW5kIGFueSBzcGVjaWZpYyBpbXBsaWNhdGlvbnMgaXQgbWlnaHQgaGF2ZSB3aXRoaW4gdGhlIGJyb2FkZXIgZmlsZSBzeXN0ZW0gY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgZWRnZSBjYXNlcywgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbGV0J3MgYmUgaG9uZXN0LCBidWcgaHVudGluZy4gVGhpcyBzZWVtcyBsaWtlIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgc28gYSBkZWVwIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBwYXJhbW91bnQuIEknbGwgbmVlZCB0byBjb25zaWRlciBob3cgYGxsc2Vla2AgaGFuZGxlcyB0aGUgcG90ZW50aWFsIGZvciBjb25jdXJyZW50IGFjY2VzcywgZXJyb3IgY29uZGl0aW9ucywgYW5kIHRoZSB1bmRlcmx5aW5nIG1lbW9yeSBtYW5hZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTU2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjg6NTEuNTQ5ODUwODgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyOTk1NjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNobWVtX2ZpbGVfbGxzZWVrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3NobWVtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2htZW0uYz0zNDY1PXN0YXRpYyBzc2l6ZV90IHNobWVtX2ZpbGVfc3BsaWNlX3JlYWQoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsXFxuLS1cXG5tbS9zaG1lbS5jLTM1NzYtXFxubW0vc2htZW0uYzozNTc3OnN0YXRpYyBsb2ZmX3Qgc2htZW1fZmlsZV9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpXFxubW0vc2htZW0uYy0zNTc4LXtcXG4tLVxcbm1tL3NobWVtLmM9NTEzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzaG1lbV9maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5tbS9zaG1lbS5jLTUxNDItI2lmZGVmIENPTkZJR19UTVBGU1xcbm1tL3NobWVtLmM6NTE0MzpcXHQubGxzZWVrXFx0XFx0PSBzaG1lbV9maWxlX2xsc2VlayxcXG5tbS9zaG1lbS5jLTUxNDQtXFx0LnJlYWRfaXRlclxcdD0gc2htZW1fZmlsZV9yZWFkX2l0ZXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjUxLjY0Mjg1MzM5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDYyMjM3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IG9mIGBzaG1lbV9maWxlX2xsc2Vla2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgbGlrZSBgc2htZW1fZmlsZV9sbHNlZWtgIGlzIHNvbWVob3cgbGlua2VkIHRvIGBDT05GSUdfVE1QRlNgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIlJpZ2h0LCBUTVBGUywgc28gdGhhdCdzIGEgZ29vZCBvbmUgdG8gZW5zdXJlIGlzIGVuYWJsZWQuXCIgQnV0IHdhaXQsIGhhbmcgb24uIEEgY2xvc2VyIGxvb2sgcmV2ZWFscyBhIGJpdCBtb3JlIGNvbXBsZXhpdHkuIFRoZSBmdW5jdGlvbiBpdHNlbGYsIGBzaG1lbV9maWxlX2xsc2Vla2AsIHNlZW1zIHRvIGJlICpkZWZpbmVkKiByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYENPTkZJR19UTVBGU2AgaXMgc2V0LiBIb3dldmVyLCBpdHMgKnVzYWdlKiB3aXRoaW4gYHNobWVtX2ZpbGVfb3BlcmF0aW9uc2AgYXBwZWFycyB0byBiZSBjb25kaXRpb25hbCwgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19UTVBGU2AuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gZXhhY3RseSBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB3aGVyZSBpdCdzIGNhbGxlZC4gTXkgYmVzdCBiZXQgaXMgdG8gZ28gZGlyZWN0bHkgdG8gYG1tL3NobWVtLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgdGhlIGRlZmluaXRpb24gb2YgYHNobWVtX2ZpbGVfb3BlcmF0aW9uc2AuIEknbGwgem9vbSBpbiBvbiB0aGF0IGFyZWEgYW5kIHNlZSBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjg6NTUuNDQ5MDc5NjAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zaG1lbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUxMzgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUxMzg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc2htZW1fZmlsZV9vcGVyYXRpb25zID0ge1xcbjUxMzk6XFx0XFx0Lm1tYXBfcHJlcGFyZVxcdD0gc2htZW1fbW1hcF9wcmVwYXJlLFxcbjUxNDA6XFx0XFx0Lm9wZW5cXHRcXHQ9IHNobWVtX2ZpbGVfb3BlbixcXG41MTQxOlxcdFxcdC5nZXRfdW5tYXBwZWRfYXJlYSA9IHNobWVtX2dldF91bm1hcHBlZF9hcmVhLFxcbjUxNDI6XFx0I2lmZGVmIENPTkZJR19UTVBGU1xcbjUxNDM6XFx0XFx0Lmxsc2Vla1xcdFxcdD0gc2htZW1fZmlsZV9sbHNlZWssXFxuNTE0NDpcXHRcXHQucmVhZF9pdGVyXFx0PSBzaG1lbV9maWxlX3JlYWRfaXRlcixcXG41MTQ1OlxcdFxcdC53cml0ZV9pdGVyXFx0PSBzaG1lbV9maWxlX3dyaXRlX2l0ZXIsXFxuNTE0NjpcXHRcXHQuZnN5bmNcXHRcXHQ9IG5vb3BfZnN5bmMsXFxuNTE0NzpcXHRcXHQuc3BsaWNlX3JlYWRcXHQ9IHNobWVtX2ZpbGVfc3BsaWNlX3JlYWQsXFxuNTE0ODpcXHRcXHQuc3BsaWNlX3dyaXRlXFx0PSBpdGVyX2ZpbGVfc3BsaWNlX3dyaXRlLFxcbjUxNDk6XFx0XFx0LmZhbGxvY2F0ZVxcdD0gc2htZW1fZmFsbG9jYXRlLFxcbjUxNTA6XFx0XFx0LnNldGxlYXNlXFx0PSBnZW5lcmljX3NldGxlYXNlLFxcbjUxNTE6XFx0I2VuZGlmXFxuNTE1MjpcXHR9O1xcbjUxNTM6XFx0XFxuNTE1NDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2htZW1faW5vZGVfb3BlcmF0aW9ucyA9IHtcXG41MTU1OlxcdFxcdC5nZXRhdHRyXFx0PSBzaG1lbV9nZXRhdHRyLFxcbjUxNTY6XFx0XFx0LnNldGF0dHJcXHQ9IHNobWVtX3NldGF0dHIsXFxuNTE1NzpcXHQjaWZkZWYgQ09ORklHX1RNUEZTX1hBVFRSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjU1LjQ0OTMyMjM3MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjkyNjgyODI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIFZGUy9NTSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggcmVsaWVzIG9uIGBDT05GSUdfVE1QRlNgIOKAkyB0aGF0J3MgYSBnaXZlbiBpZiBpdOKAmXMgdXNpbmcgYHNobWVtX2ZpbGVfbGxzZWVrYC4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIGludGVyYWN0aW9uIHdpdGggYGlvbWFwYCB0aG91Z2gsIEkgYXNzdW1lIGBDT05GSUdfRlNfSU9NQVBgIHdpbGwgYmUgcHVsbGVkIGluIGJ5IHRoZSByZWxldmFudCBmaWxlc3lzdGVtcy4gSSdsbCBhZGQgYFRNUEZTYCB0byBgRW5hYmxlQ29uZmlnc2AuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBvdXQgaW4gYG1tL2ZpbGVtYXAuY2AuIFRoYXQncyBhIGZ1bmRhbWVudGFsIE1lbW9yeSBNYW5hZ2VtZW50IGZ1bmN0aW9uIOKAkyBpbXBvcnRhbnQgZm9yIGFueSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEknbGwgYWRkIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCB0byBgRm9jdXNTeW1ib2xzYC5cblxuU2luY2UgaXTigJlzIHJlbGF0ZWQgdG8gaG9sZSBzZWVraW5nLCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMgYXMgd2VsbC4gSSdsbCBhbHNvIGFkZCBgc2htZW1fZmlsZV9sbHNlZWtgLCBgaW9tYXBfc2Vla19ob2xlX2l0ZXJgLCBhbmQgYGlvbWFwX3NlZWtfZGF0YV9pdGVyYCB0byB0aGUgc3ltYm9sIGxpc3QuXG5cblRoZSBidWcgaXMgaW4gdGhlIHJvdW5kaW5nIGJlaGF2aW9yIHdpdGhpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAsIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIG1lYW5zIGl0IGltcGFjdHMgaG93IGBsc2Vla2AgYmVoYXZlcyB3aXRoIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCwgc28gdGhlIHBhdGNoIGNsZWFybHkgaXMgYWJvdXQgZml4aW5nIGhvdyB0aGUgY29yZSBWRlMvTU0gbG9naWMgaGFuZGxlcyB0aG9zZSBvcGVyYXRpb25zLiBUaGlzIHdpbGwgYWZmZWN0IHRtcGZzIGFuZCBpb21hcCBmaWxlc3lzdGVtcywgc28gSSBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZC5cblxuSSBzaG91bGQgY2FsbCBzZXQtcmVzdWx0cyBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMjIsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjk6MTIuMzc2MTU1MjgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3ODg2MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUTVBGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIixcbiAgICBcInNobWVtX2ZpbGVfbGxzZWVrXCIsXG4gICAgXCJpb21hcF9zZWVrX2hvbGVfaXRlclwiLFxuICAgIFwiaW9tYXBfc2Vla19kYXRhX2l0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVE1QRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYXBwaW5nX3NlZWtfaG9sZV9kYXRhXCIsXG4gICAgXCJzaG1lbV9maWxlX2xsc2Vla1wiLFxuICAgIFwiaW9tYXBfc2Vla19ob2xlX2l0ZXJcIixcbiAgICBcImlvbWFwX3NlZWtfZGF0YV9pdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-30 19:15:03 +0000 UTC FinishedAt: 2026-06-30 19:29:13 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TMPFS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "mm-new", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git", "commit_hash": "6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "TMPFS" ], "series_id": "332fb90c-1e7c-4936-b78b-d8e461b7c105" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "mapping_seek_hole_data", "shmem_file_llseek", "iomap_seek_hole_iter", "iomap_seek_data_iter" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db", "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RNUEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwcGluZ19zZWVrX2hvbGVfZGF0YSYjMzQ7LAogICAgJiMzNDtzaG1lbV9maWxlX2xsc2VlayYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2hvbGVfaXRlciYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2RhdGFfaXRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAxNWViZjlhODY4Y2RmNmQ2ZTliOWJlODU3NmU1NDc0ODYzZmM5M2Q0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTk6Mjg6MjcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uYjc4ZmQ4OGYyNjM4NzYgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL2ZpbGVtYXAuY1xuQEAgLTMyMjUsNiAmIzQzOzMyMjUsNyBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxuIFx0d2hpbGUgKChmb2xpbyA9IGZpbmRfZ2V0X2VudHJ5KFx1MDAyNnhhcywgbWF4LCBYQV9QUkVTRU5UKSkpIHtcbiBcdFx0bG9mZl90IHBvcyA9ICh1NjQpeGFzLnhhX2luZGV4IFx1MDAzY1x1MDAzYyBQQUdFX1NISUZUO1xuIFx0XHRzaXplX3Qgc2Vla19zaXplO1xuJiM0MztcdFx0dTY0IG5leHQ7XG4gXG4gXHRcdGlmIChzdGFydCBcdTAwM2MgcG9zKSB7XG4gXHRcdFx0aWYgKCFzZWVrX2RhdGEpXG5AQCAtMzIzMyw3ICYjNDM7MzIzNCwxMSBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxuIFx0XHR9XG4gXG4gXHRcdHNlZWtfc2l6ZSA9IHNlZWtfZm9saW9fc2l6ZShcdTAwMjZ4YXMsIGZvbGlvKTtcbi1cdFx0cG9zID0gcm91bmRfdXAoKHU2NClwb3MgJiM0MzsgMSwgc2Vla19zaXplKTtcbiYjNDM7XHRcdG5leHQgPSByb3VuZF91cCgodTY0KXBvcyAmIzQzOyAxLCBzZWVrX3NpemUpO1xuJiM0MztcdFx0aWYgKG5leHQgXHUwMDNlICh1NjQpZW5kKVxuJiM0MztcdFx0XHRwb3MgPSBlbmQ7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdHBvcyA9IG5leHQ7XG4gXHRcdHN0YXJ0ID0gZm9saW9fc2Vla19ob2xlX2RhdGEoXHUwMDI2eGFzLCBtYXBwaW5nLCBmb2xpbywgc3RhcnQsIHBvcyxcbiBcdFx0XHRcdHNlZWtfZGF0YSk7XG4gXHRcdGlmIChzdGFydCBcdTAwM2MgcG9zKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1RNUEZTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bWFwcGluZ19zZWVrX2hvbGVfZGF0YSYjMzQ7LAogICAgJiMzNDtzaG1lbV9maWxlX2xsc2VlayYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2hvbGVfaXRlciYjMzQ7LAogICAgJiMzNDtpb21hcF9zZWVrX2RhdGFfaXRlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDE1ZWJmOWE4NjhjZGY2ZDZlOWI5YmU4NTc2ZTU0NzQ4NjNmYzkzZDQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEp1biAzMCAxOToyODoyNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL21tL2ZpbGVtYXAuYyBiL21tL2ZpbGVtYXAuYwppbmRleCA1YWY2MmU2YWJjYTU4Yi4uYjc4ZmQ4OGYyNjM4NzYgMTAwNjQ0Ci0tLSBhL21tL2ZpbGVtYXAuYwomIzQzOyYjNDM7JiM0MzsgYi9tbS9maWxlbWFwLmMKQEAgLTMyMjUsNiAmIzQzOzMyMjUsNyBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LAogCXdoaWxlICgoZm9saW8gPSBmaW5kX2dldF9lbnRyeSgmYW1wO3hhcywgbWF4LCBYQV9QUkVTRU5UKSkpIHsKIAkJbG9mZl90IHBvcyA9ICh1NjQpeGFzLnhhX2luZGV4ICZsdDsmbHQ7IFBBR0VfU0hJRlQ7CiAJCXNpemVfdCBzZWVrX3NpemU7CiYjNDM7CQl1NjQgbmV4dDsKIAogCQlpZiAoc3RhcnQgJmx0OyBwb3MpIHsKIAkJCWlmICghc2Vla19kYXRhKQpAQCAtMzIzMyw3ICYjNDM7MzIzNCwxMSBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LAogCQl9CiAKIAkJc2Vla19zaXplID0gc2Vla19mb2xpb19zaXplKCZhbXA7eGFzLCBmb2xpbyk7Ci0JCXBvcyA9IHJvdW5kX3VwKCh1NjQpcG9zICYjNDM7IDEsIHNlZWtfc2l6ZSk7CiYjNDM7CQluZXh0ID0gcm91bmRfdXAoKHU2NClwb3MgJiM0MzsgMSwgc2Vla19zaXplKTsKJiM0MzsJCWlmIChuZXh0ICZndDsgKHU2NCllbmQpCiYjNDM7CQkJcG9zID0gZW5kOwomIzQzOwkJZWxzZQomIzQzOwkJCXBvcyA9IG5leHQ7CiAJCXN0YXJ0ID0gZm9saW9fc2Vla19ob2xlX2RhdGEoJmFtcDt4YXMsIG1hcHBpbmcsIGZvbGlvLCBzdGFydCwgcG9zLAogCQkJCXNlZWtfZGF0YSk7CiAJCWlmIChzdGFydCAmbHQ7IHBvcykKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAwNQoJCQkJCQkJb3V0cHV0OiAyMQoJCQkJCQkJdGhvdWdodHM6IDE2MwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgUGF0Y2g6IG1tL2ZpbGVtYXAuYyAtIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIGluIGBtbS9maWxlbWFwLmNgLiBJbW1lZGlhdGVseSwgaXQgY2F0Y2hlcyBteSBleWUgYmVjYXVzZSBpdOKAmXMgYSBmYWlybHkgbG93LWxldmVsIGNoYW5nZSwgc3BlY2lmaWNhbGx5IGFyb3VuZCBob3cgd2UmIzM5O3JlIGNhbGN1bGF0aW5nIGBwb3NgIHdpdGhpbiB0aGlzIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGV5JiMzOTt2ZSBhZGp1c3RlZCB0aGUgY2FsY3VsYXRpb24gdXNpbmcgYHJvdW5kX3VwKCh1NjQpcG9zICYjNDM7IDEsIHNlZWtfc2l6ZSlgLiBUaGUgbG9naWMgZm9sbG93czogaWYgdGhlIGNhbGN1bGF0ZWQgYG5leHRgIHZhbHVlIGV4Y2VlZHMgdGhlIGBlbmRgIHZhbHVlLCBgcG9zYCBnZXRzIGNsYW1wZWQgdG8gYGVuZGA7IG90aGVyd2lzZSwgaXQmIzM5O3Mgc2V0IHRvIGBuZXh0YC4KCkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBjaGFuZ2Ug4oCTIGl0JiMzOTtzIHJpZ2h0IGluIHRoZSBoZWFydCBvZiB0aGUgVmlydHVhbCBGaWxlIFN5c3RlbSAoVkZTKSBhbmQgTWVtb3J5IE1hbmFnZW1lbnQgKE1NKSBsYXllcnMuICBJdCYjMzk7cyBhZmZlY3RpbmcgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHdoaWNoIG1lYW5zIHdl4oCZcmUgcG90ZW50aWFsbHkgbG9va2luZyBhdCBjaGFuZ2VzIGluIGhvdyBmaWxlcyByZXBvcnQgZGF0YSBvciBob2xlcyB0byB1c2Vyc3BhY2UuIERlZmluaXRlbHkgYSBjYW5kaWRhdGUgZm9yIGNhcmVmdWwgcmV2aWV3LgoKU2luY2UgaXTigJlzIGluIGBtbS9maWxlbWFwLmNgLCB0aGF0JiMzOTtzIGFsd2F5cyBjb21waWxlZCBpbi4gVGhlIGZpcnN0IHF1ZXN0aW9uIEkgaGF2ZSBpcywgYXJlIHRoZXJlIGFueSBzcGVjaWZpYyBrZXJuZWwgY29uZmlndXJhdGlvbnMgdGhhdCBtaWdodCBpbXBhY3QgdGhpcyBwYXRjaD8gU29tZXRoaW5nIHRoYXQgd291bGQgY29uZGl0aW9uYWxseSBlbmFibGUgb3IgZGlzYWJsZSBpdHMgZWZmZWN0cy4gTGV0JiMzOTtzIHNlZSBpZiB3ZSBjYW4gZmluZCBhbnl0aGluZyBsaWtlIHRoYXQuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBhY3Qgb2YgdGhpcyBhdCBhIGRlZXBlciBsZXZlbCB0aGFuIGp1c3QgY29kZS4KCk5leHQgc3RlcDogSSYjMzk7bGwgY2hlY2sgdGhlIGNhbGxlcnMgb2YgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgLiBVbmRlcnN0YW5kaW5nIHdoZXJlIHRoaXMgZnVuY3Rpb24gaXMgdXNlZCB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgaGFuZGxlIG9uIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGNvbnNlcXVlbmNlcyBvZiB0aGUgcGF0Y2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bWFwcGluZ19zZWVrX2hvbGVfZGF0YSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9pb21hcC9idWZmZXJlZC1pby5jPTEzODk9c3RhdGljIHZvaWQgaW9tYXBfd3JpdGVfZGVsYWxsb2Nfc2NhbihzdHJ1Y3QgaW5vZGUgKmlub2RlLFxuLS1cbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ0Ni0gKiBBcyB3ZSBhcmUgc2Nhbm5pbmcgdGhlIHBhZ2UgY2FjaGUgZm9yIGRhdGEsIHdlIGRvbiYjMzk7dCBuZWVkIHRvIHJlaW1wbGVtZW50IHRoZVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDQ3OiAqIHdoZWVsIC0gbWFwcGluZ19zZWVrX2hvbGVfZGF0YSgpIGRvZXMgZXhhY3RseSB3aGF0IHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NDgtICogc3RhcnQgYW5kIGVuZCBvZiBkYXRhIHJhbmdlcyBjb3JyZWN0bHkgZXZlbiBmb3Igc3ViLWZvbGlvIGJsb2NrIHNpemVzLiBUaGlzXG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDUzLSAqXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0NTQ6ICogSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgbWFwcGluZ19zZWVrX2hvbGVfZGF0YSgpIGlzIG5vdCBhd2FyZSBvZiBFT0YsIGFuZCBzb1xuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDU1LSAqIGNhbiByZXR1cm4gZGF0YSByYW5nZXMgdGhhdCBleGlzdCBpbiB0aGUgY2FjaGUgYmV5b25kIEVPRi4gZS5nLiBhIHBhZ2UgZmF1bHRcbi0tXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NTktICogYmV5b25kIEVPRiBhbmQgdGhlbiBoYXZlIHRvIHB1bmNoIGl0IG91dC4gQmVjYXVzZSB0aGUgcmFuZ2UgaXMgdXAgdG8gZGF0ZSxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmM6MTQ2MDogKiBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKCkgd2lsbCByZXR1cm4gaXQsIGFuZCB3ZSB3aWxsIHNraXAgdGhlIHB1bmNoIGJlY2F1c2VcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ2MS0gKiB0aGUgZm9saW8gaXMgZGlydHkuIFRIaXMgaXMgaW5jb3JyZWN0IC0gd2UgYWx3YXlzIG5lZWQgdG8gcHVuY2ggb3V0IGRlbGFsbG9jXG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDY3LSAqIEludGVydmFscyBhcmUgb2YgdGhlIGZvcm0gW3N0YXJ0X2J5dGUsIGVuZF9ieXRlKSAoaS5lLiBvcGVuIGVuZGVkKSBiZWNhdXNlIGl0XG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0Njg6ICogbWF0Y2hlcyB0aGUgaW50ZXJ2YWxzIHJldHVybmVkIGJ5IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKS4gaS5lLiBTRUVLX0RBVEFcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ2OS0gKiByZXR1cm5zIHRoZSBzdGFydCBvZiBhIGRhdGEgcmFuZ2UgKHN0YXJ0X2J5dGUpLCBhbmQgU0VFS19IT0xFKHN0YXJ0X2J5dGUpXG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYz0xNDc0PXZvaWQgaW9tYXBfd3JpdGVfZGVsYWxsb2NfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgc3RhcnRfYnl0ZSxcbi0tXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0OTEtXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0OTI6XHRcdHN0YXJ0X2J5dGUgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGlub2RlLVx1MDAzZWlfbWFwcGluZyxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5My1cdFx0XHRcdHN0YXJ0X2J5dGUsIHNjYW5fZW5kX2J5dGUsIFNFRUtfREFUQSk7XG4tLVxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDk3LVx0XHQgKlxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDk4Olx0XHQgKiBOb3RlIHRoYXQgbWFwcGluZ19zZWVrX2hvbGVfZGF0YSBpcyBvbmx5IHN1cHBvc2VkIHRvIHJldHVyblxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDk5LVx0XHQgKiBlaXRoZXIgYW4gb2Zmc2V0IG9yIC1FTlhJTywgc28gV0FSTiBvbiBhbnkgb3RoZXIgZXJyb3IgYXNcbi0tXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE1MTItXHRcdCAqL1xuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNTEzOlx0XHRkYXRhX2VuZCA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoaW5vZGUtXHUwMDNlaV9tYXBwaW5nLCBzdGFydF9ieXRlLFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNTE0LVx0XHRcdFx0c2Nhbl9lbmRfYnl0ZSwgU0VFS19IT0xFKTtcbi0tXG5mcy9pb21hcC9zZWVrLmM9OT1zdGF0aWMgaW50IGlvbWFwX3NlZWtfaG9sZV9pdGVyKHN0cnVjdCBpb21hcF9pdGVyICppdGVyLFxuLS1cbmZzL2lvbWFwL3NlZWsuYy0xNS1cdGNhc2UgSU9NQVBfVU5XUklUVEVOOlxuZnMvaW9tYXAvc2Vlay5jOjE2Olx0XHQqaG9sZV9wb3MgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGl0ZXItXHUwMDNlaW5vZGUtXHUwMDNlaV9tYXBwaW5nLFxuZnMvaW9tYXAvc2Vlay5jLTE3LVx0XHRcdFx0aXRlci1cdTAwM2Vwb3MsIGl0ZXItXHUwMDNlcG9zICYjNDM7IGxlbmd0aCwgU0VFS19IT0xFKTtcbi0tXG5mcy9pb21hcC9zZWVrLmM9NTU9c3RhdGljIGludCBpb21hcF9zZWVrX2RhdGFfaXRlcihzdHJ1Y3QgaW9tYXBfaXRlciAqaXRlcixcbi0tXG5mcy9pb21hcC9zZWVrLmMtNjMtXHRjYXNlIElPTUFQX1VOV1JJVFRFTjpcbmZzL2lvbWFwL3NlZWsuYzo2NDpcdFx0KmhvbGVfcG9zID0gbWFwcGluZ19zZWVrX2hvbGVfZGF0YShpdGVyLVx1MDAzZWlub2RlLVx1MDAzZWlfbWFwcGluZyxcbmZzL2lvbWFwL3NlZWsuYy02NS1cdFx0XHRcdGl0ZXItXHUwMDNlcG9zLCBpdGVyLVx1MDAzZXBvcyAmIzQzOyBsZW5ndGgsIFNFRUtfREFUQSk7XG4tLVxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg9MTI5Mj1ib29sIGZpbGVtYXBfcmVsZWFzZV9mb2xpbyhzdHJ1Y3QgZm9saW8gKmZvbGlvLCBnZnBfdCBnZnApO1xuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg6MTI5Mzpsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsXG5pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaC0xMjk0LVx0XHRpbnQgd2hlbmNlKTtcbi0tXG5tbS9maWxlbWFwLmM9MzE4OD1zdGF0aWMgaW5saW5lIHNpemVfdCBzZWVrX2ZvbGlvX3NpemUoc3RydWN0IHhhX3N0YXRlICp4YXMsIHN0cnVjdCBmb2xpbyAqZm9saW8pXG4tLVxubW0vZmlsZW1hcC5jLTMxOTUtLyoqXG5tbS9maWxlbWFwLmM6MzE5NjogKiBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhIC0gU2VlayBmb3IgU0VFS19EQVRBIC8gU0VFS19IT0xFIGluIHRoZSBwYWdlIGNhY2hlLlxubW0vZmlsZW1hcC5jLTMxOTctICogQG1hcHBpbmc6IEFkZHJlc3Mgc3BhY2UgdG8gc2VhcmNoLlxuLS1cbm1tL2ZpbGVtYXAuYy0zMjEyLSAqL1xubW0vZmlsZW1hcC5jOjMyMTM6bG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcbm1tL2ZpbGVtYXAuYy0zMjE0LVx0XHRsb2ZmX3QgZW5kLCBpbnQgd2hlbmNlKVxuLS1cbm1tL3NobWVtLmM9MzU3Nz1zdGF0aWMgbG9mZl90IHNobWVtX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKVxuLS1cbm1tL3NobWVtLmMtMzU4OS1cdC8qIFdlJiMzOTtyZSBob2xkaW5nIGlfcndzZW0gc28gd2UgY2FuIGFjY2VzcyBpX3NpemUgZGlyZWN0bHkgKi9cbm1tL3NobWVtLmM6MzU5MDpcdG9mZnNldCA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEobWFwcGluZywgb2Zmc2V0LCBpbm9kZS1cdTAwM2VpX3NpemUsIHdoZW5jZSk7XG5tbS9zaG1lbS5jLTM1OTEtXHRpZiAob2Zmc2V0IFx1MDAzZT0gMClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDQxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDA2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2NvcGUgYW5kIEltcGFjdCBvZiBhIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBkZXRhaWxzLiBUaGlzIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBmdW5jdGlvbiBpcyB1c2VkIGluIGEgZmV3IGtleSBwbGFjZXM6IGBmcy9pb21hcC9idWZmZXJlZC1pby5jYCBzcGVjaWZpY2FsbHkgd2l0aGluIGBpb21hcF93cml0ZV9kZWxhbGxvY19yZWxlYXNlYCwgYW5kIGluIHRoZSBzZWVraW5nIGxvZ2ljIHZpYSBgZnMvaW9tYXAvc2Vlay5jYCBpbiBib3RoIGBpb21hcF9zZWVrX2hvbGVfaXRlcmAgYW5kIGBpb21hcF9zZWVrX2RhdGFfaXRlcmAuIFRoZW4gd2UgYWxzbyBzZWUgaXQgaW4gYG1tL3NobWVtLmNgIHNwZWNpZmljYWxseSBpbiBgc2htZW1fZmlsZV9sbHNlZWtgLiBUaGF0JiMzOTtzIGltcG9ydGFudC4gSXQmIzM5O3MgZXNzZW50aWFsbHkgcmVhY2hhYmxlIGZyb20gdXNlcnNwYWNlIHZpYSBgbHNlZWtgIHdpdGggZWl0aGVyIGBTRUVLX0hPTEVgIG9yIGBTRUVLX0RBVEFgIGNhbGxzLCBlc3BlY2lhbGx5IG9uIHNobWVtICh0bXBmcykgZmlsZXMsIGFuZCB0aGVuIGFsc28gZmlsZXN5c3RlbXMgdGhhdCB1c2UgaW9tYXAg4oCTIFhGUywgZXh0NCwgYW5kIGJ0cmZzIGFyZSB0aGUgYmlnIG9uZXMuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIGZpeGluZyBhIGZ1bmN0aW9uYWwgYnVnLiBUaGUgY29uY2VybiBpcyB0aGF0IGBwb3NgIGNvdWxkIHBvdGVudGlhbGx5IGV4Y2VlZCBgZW5kYCBiZWNhdXNlIG9mIGhvdyBgcm91bmRfdXBgIGJlaGF2ZXMsIHdoaWNoIGNvdWxkIGNhdXNlIGludGVyZXN0aW5nIGFuZCBwb3NzaWJseSBleHBsb2l0YWJsZSBiZWhhdmlvci4gU2VlbXMgcHJldHR5IHNlcmlvdXMgZ2l2ZW4gdGhlIGV4cG9zdXJlLiBEZWZpbml0ZWx5IFdvcnRoRnV6emluZy4KCk15IGZvY3VzIGlzIHByaW1hcmlseSBvbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgaXRzZWxmLCBhbmQgaXTigJlzIGRpcmVjdCBjYWxsZXIgaW4gc2htZW0sIHdoaWNoIGlzIGBzaG1lbV9maWxlX2xsc2Vla2AuIEZyb20gYSBjb25maWd1cmF0aW9uIHBlcnNwZWN0aXZlLCB0aGVyZSBpc27igJl0IG11Y2ggdG8gd29ycnkgYWJvdXQsIHRoYW5rZnVsbHkuIGBtbS9maWxlbWFwLmNgIGlzIGFsd2F5cyBjb21waWxlZCwgYW5kIHNobWVtIGlzIHVuaXZlcnNhbGx5IGF2YWlsYWJsZSwgVE1QRlMgaXMgdXN1YWxseSBlbmFibGVkLCBhbmQgSU9NQVAgaXMgZW5hYmxlZCBieSBxdWl0ZSBhIGZldyBmaWxlc3lzdGVtcyB0aGF0IGFyZSBjb21tb25seSB1c2VkLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IHRob3VnaC4gYENPTkZJR19TSE1FTWAgYW5kIGBDT05GSUdfRlNfSU9NQVBgLiBHb3QgaXQuCgpObyBuZWVkIHRvIHNwZWNpZnkgYW55IHNwZWNpYWwgY29uZmlncy4gRm9yIGZ1enppbmcgcHVycG9zZXMsIGxldCYjMzk7cyBrZWVwIHRoZSBmb2N1cyBzeW1ib2xzIHRvIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBhbmQgYHNobWVtX2ZpbGVfbGxzZWVrYC4gTGV0JiMzOTtzIGFsc28gdGFrZSBhIGxvb2sgYXQgYG1tL2ZpbGVtYXAuY2AgYXJvdW5kIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCwganVzdCB0byBiZSBzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21hcHBpbmdfc2Vla19ob2xlX2RhdGEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9maWxlbWFwLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bW0vZmlsZW1hcC5jPTMxODg9c3RhdGljIGlubGluZSBzaXplX3Qgc2Vla19mb2xpb19zaXplKHN0cnVjdCB4YV9zdGF0ZSAqeGFzLCBzdHJ1Y3QgZm9saW8gKmZvbGlvKVxuLS1cbm1tL2ZpbGVtYXAuYy0zMTk1LS8qKlxubW0vZmlsZW1hcC5jOjMxOTY6ICogbWFwcGluZ19zZWVrX2hvbGVfZGF0YSAtIFNlZWsgZm9yIFNFRUtfREFUQSAvIFNFRUtfSE9MRSBpbiB0aGUgcGFnZSBjYWNoZS5cbm1tL2ZpbGVtYXAuYy0zMTk3LSAqIEBtYXBwaW5nOiBBZGRyZXNzIHNwYWNlIHRvIHNlYXJjaC5cbi0tXG5tbS9maWxlbWFwLmMtMzIxMi0gKi9cbm1tL2ZpbGVtYXAuYzozMjEzOmxvZmZfdCBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3Qgc3RhcnQsXG5tbS9maWxlbWFwLmMtMzIxNC1cdFx0bG9mZl90IGVuZCwgaW50IHdoZW5jZSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOToyODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTU2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEkmIzM5O20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OgoKKipJbnZlc3RpZ2F0aW5nIGBzaG1lbV9maWxlX2xsc2Vla2AqKgoKQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBhIGZvY3VzZWQgbG9vayBhdCBgc2htZW1fZmlsZV9sbHNlZWtgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgYmVoYXZpb3IgYW5kIGFueSBwb3RlbnRpYWwgcXVpcmtzLiBJJiMzOTttIGltbWVkaWF0ZWx5IHRoaW5raW5nIGFib3V0IGl0cyBpbnRlcmFjdGlvbiB3aXRoIHRoZSBzaGFyZWQgbWVtb3J5IHN1YnN5c3RlbSBhbmQgYW55IHNwZWNpZmljIGltcGxpY2F0aW9ucyBpdCBtaWdodCBoYXZlIHdpdGhpbiB0aGUgYnJvYWRlciBmaWxlIHN5c3RlbSBjb250ZXh0LiBTcGVjaWZpY2FsbHksIEkmIzM5O20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgZWRnZSBjYXNlcywgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbGV0JiMzOTtzIGJlIGhvbmVzdCwgYnVnIGh1bnRpbmcuIFRoaXMgc2VlbXMgbGlrZSBhIGNyaXRpY2FsIHBpZWNlIG9mIHRoZSBwdXp6bGUsIHNvIGEgZGVlcCB1bmRlcnN0YW5kaW5nIGhlcmUgaXMgcGFyYW1vdW50LiBJJiMzOTtsbCBuZWVkIHRvIGNvbnNpZGVyIGhvdyBgbGxzZWVrYCBoYW5kbGVzIHRoZSBwb3RlbnRpYWwgZm9yIGNvbmN1cnJlbnQgYWNjZXNzLCBlcnJvciBjb25kaXRpb25zLCBhbmQgdGhlIHVuZGVybHlpbmcgbWVtb3J5IG1hbmFnZW1lbnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2htZW1fZmlsZV9sbHNlZWsmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDttbS9zaG1lbS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL3NobWVtLmM9MzQ2NT1zdGF0aWMgc3NpemVfdCBzaG1lbV9maWxlX3NwbGljZV9yZWFkKHN0cnVjdCBmaWxlICppbiwgbG9mZl90ICpwcG9zLFxuLS1cbm1tL3NobWVtLmMtMzU3Ni1cbm1tL3NobWVtLmM6MzU3NzpzdGF0aWMgbG9mZl90IHNobWVtX2ZpbGVfbGxzZWVrKHN0cnVjdCBmaWxlICpmaWxlLCBsb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlKVxubW0vc2htZW0uYy0zNTc4LXtcbi0tXG5tbS9zaG1lbS5jPTUxMzg9c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc2htZW1fZmlsZV9vcGVyYXRpb25zID0ge1xuLS1cbm1tL3NobWVtLmMtNTE0Mi0jaWZkZWYgQ09ORklHX1RNUEZTXG5tbS9zaG1lbS5jOjUxNDM6XHQubGxzZWVrXHRcdD0gc2htZW1fZmlsZV9sbHNlZWssXG5tbS9zaG1lbS5jLTUxNDQtXHQucmVhZF9pdGVyXHQ9IHNobWVtX2ZpbGVfcmVhZF9pdGVyLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiA4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIERlcGVuZGVuY3kgb2YgYHNobWVtX2ZpbGVfbGxzZWVrYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCBpdHMgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMuIEl0IHNlZW1zIGxpa2UgYHNobWVtX2ZpbGVfbGxzZWVrYCBpcyBzb21laG93IGxpbmtlZCB0byBgQ09ORklHX1RNUEZTYC4gTXkgaW5pdGlhbCB0aG91Z2h0IHdhcywgJiMzNDtSaWdodCwgVE1QRlMsIHNvIHRoYXQmIzM5O3MgYSBnb29kIG9uZSB0byBlbnN1cmUgaXMgZW5hYmxlZC4mIzM0OyBCdXQgd2FpdCwgaGFuZyBvbi4gQSBjbG9zZXIgbG9vayByZXZlYWxzIGEgYml0IG1vcmUgY29tcGxleGl0eS4gVGhlIGZ1bmN0aW9uIGl0c2VsZiwgYHNobWVtX2ZpbGVfbGxzZWVrYCwgc2VlbXMgdG8gYmUgKmRlZmluZWQqIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBgQ09ORklHX1RNUEZTYCBpcyBzZXQuIEhvd2V2ZXIsIGl0cyAqdXNhZ2UqIHdpdGhpbiBgc2htZW1fZmlsZV9vcGVyYXRpb25zYCBhcHBlYXJzIHRvIGJlIGNvbmRpdGlvbmFsLCBndWFyZGVkIGJ5IGAjaWZkZWYgQ09ORklHX1RNUEZTYC4gVGhhdCYjMzk7cyBhIGtleSBkaXN0aW5jdGlvbi4KCkkgbmVlZCB0byBjb25maXJtIGV4YWN0bHkgaG93IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBhbmQgd2hlcmUgaXQmIzM5O3MgY2FsbGVkLiBNeSBiZXN0IGJldCBpcyB0byBnbyBkaXJlY3RseSB0byBgbW0vc2htZW0uY2AgYW5kIHRha2UgYSBsb29rIGFyb3VuZCB0aGUgZGVmaW5pdGlvbiBvZiBgc2htZW1fZmlsZV9vcGVyYXRpb25zYC4gSSYjMzk7bGwgem9vbSBpbiBvbiB0aGF0IGFyZWEgYW5kIHNlZSBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8zMCAxOToyODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O21tL3NobWVtLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1MTM4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OzUxMzg6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzaG1lbV9maWxlX29wZXJhdGlvbnMgPSB7XG41MTM5Olx0XHQubW1hcF9wcmVwYXJlXHQ9IHNobWVtX21tYXBfcHJlcGFyZSxcbjUxNDA6XHRcdC5vcGVuXHRcdD0gc2htZW1fZmlsZV9vcGVuLFxuNTE0MTpcdFx0LmdldF91bm1hcHBlZF9hcmVhID0gc2htZW1fZ2V0X3VubWFwcGVkX2FyZWEsXG41MTQyOlx0I2lmZGVmIENPTkZJR19UTVBGU1xuNTE0MzpcdFx0Lmxsc2Vla1x0XHQ9IHNobWVtX2ZpbGVfbGxzZWVrLFxuNTE0NDpcdFx0LnJlYWRfaXRlclx0PSBzaG1lbV9maWxlX3JlYWRfaXRlcixcbjUxNDU6XHRcdC53cml0ZV9pdGVyXHQ9IHNobWVtX2ZpbGVfd3JpdGVfaXRlcixcbjUxNDY6XHRcdC5mc3luY1x0XHQ9IG5vb3BfZnN5bmMsXG41MTQ3Olx0XHQuc3BsaWNlX3JlYWRcdD0gc2htZW1fZmlsZV9zcGxpY2VfcmVhZCxcbjUxNDg6XHRcdC5zcGxpY2Vfd3JpdGVcdD0gaXRlcl9maWxlX3NwbGljZV93cml0ZSxcbjUxNDk6XHRcdC5mYWxsb2NhdGVcdD0gc2htZW1fZmFsbG9jYXRlLFxuNTE1MDpcdFx0LnNldGxlYXNlXHQ9IGdlbmVyaWNfc2V0bGVhc2UsXG41MTUxOlx0I2VuZGlmXG41MTUyOlx0fTtcbjUxNTM6XHRcbjUxNTQ6XHRzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2htZW1faW5vZGVfb3BlcmF0aW9ucyA9IHtcbjUxNTU6XHRcdC5nZXRhdHRyXHQ9IHNobWVtX2dldGF0dHIsXG41MTU2Olx0XHQuc2V0YXR0clx0PSBzaG1lbV9zZXRhdHRyLFxuNTE1NzpcdCNpZmRlZiBDT05GSUdfVE1QRlNfWEFUVFJcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMzAgMTk6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjMyMgoJCQkJCQkJb3V0cHV0OiAxNjIKCQkJCQkJCXRob3VnaHRzOiAyNDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBWRlMvTU0gUGF0Y2gqKgoKT2theSwgc28gdGhpcyBwYXRjaCByZWxpZXMgb24gYENPTkZJR19UTVBGU2Ag4oCTIHRoYXQmIzM5O3MgYSBnaXZlbiBpZiBpdOKAmXMgdXNpbmcgYHNobWVtX2ZpbGVfbGxzZWVrYC4gSSYjMzk7bSBjdXJpb3VzIGFib3V0IHRoZSBpbnRlcmFjdGlvbiB3aXRoIGBpb21hcGAgdGhvdWdoLCBJIGFzc3VtZSBgQ09ORklHX0ZTX0lPTUFQYCB3aWxsIGJlIHB1bGxlZCBpbiBieSB0aGUgcmVsZXZhbnQgZmlsZXN5c3RlbXMuIEkmIzM5O2xsIGFkZCBgVE1QRlNgIHRvIGBFbmFibGVDb25maWdzYC4KCk5vdywgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBvdXQgaW4gYG1tL2ZpbGVtYXAuY2AuIFRoYXQmIzM5O3MgYSBmdW5kYW1lbnRhbCBNZW1vcnkgTWFuYWdlbWVudCBmdW5jdGlvbiDigJMgaW1wb3J0YW50IGZvciBhbnkgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBJJiMzOTtsbCBhZGQgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHRvIGBGb2N1c1N5bWJvbHNgLgoKU2luY2UgaXTigJlzIHJlbGF0ZWQgdG8gaG9sZSBzZWVraW5nLCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMgYXMgd2VsbC4gSSYjMzk7bGwgYWxzbyBhZGQgYHNobWVtX2ZpbGVfbGxzZWVrYCwgYGlvbWFwX3NlZWtfaG9sZV9pdGVyYCwgYW5kIGBpb21hcF9zZWVrX2RhdGFfaXRlcmAgdG8gdGhlIHN5bWJvbCBsaXN0LgoKVGhlIGJ1ZyBpcyBpbiB0aGUgcm91bmRpbmcgYmVoYXZpb3Igd2l0aGluIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCwgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgbWVhbnMgaXQgaW1wYWN0cyBob3cgYGxzZWVrYCBiZWhhdmVzIHdpdGggYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgLCBzbyB0aGUgcGF0Y2ggY2xlYXJseSBpcyBhYm91dCBmaXhpbmcgaG93IHRoZSBjb3JlIFZGUy9NTSBsb2dpYyBoYW5kbGVzIHRob3NlIG9wZXJhdGlvbnMuIFRoaXMgd2lsbCBhZmZlY3QgdG1wZnMgYW5kIGlvbWFwIGZpbGVzeXN0ZW1zLCBzbyBJIG5lZWQgdG8ga2VlcCB0aG9zZSBpbiBtaW5kLgoKSSBzaG91bGQgY2FsbCBzZXQtcmVzdWx0cyBub3cuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzMwIDE5OjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUTVBGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hcHBpbmdfc2Vla19ob2xlX2RhdGEmIzM0OywKICAgICYjMzQ7c2htZW1fZmlsZV9sbHNlZWsmIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19ob2xlX2l0ZXImIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19kYXRhX2l0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtUTVBGUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O21hcHBpbmdfc2Vla19ob2xlX2RhdGEmIzM0OywKICAgICYjMzQ7c2htZW1fZmlsZV9sbHNlZWsmIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19ob2xlX2l0ZXImIzM0OywKICAgICYjMzQ7aW9tYXBfc2Vla19kYXRhX2l0ZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjg6MjkuMjI0Njk3NjIxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDMzMTkzNzQ0ODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVE1QRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYXBwaW5nX3NlZWtfaG9sZV9kYXRhXCIsXG4gICAgXCJzaG1lbV9maWxlX2xsc2Vla1wiLFxuICAgIFwiaW9tYXBfc2Vla19ob2xlX2l0ZXJcIixcbiAgICBcImlvbWFwX3NlZWtfZGF0YV9pdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODoyOS4yMjQ3MDY2MDFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUyMzQ5MzIzOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDE1ZWJmOWE4NjhjZGY2ZDZlOWI5YmU4NTc2ZTU0NzQ4NjNmYzkzZDRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBKdW4gMzAgMTk6Mjg6MjcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXFxuaW5kZXggNWFmNjJlNmFiY2E1OGIuLmI3OGZkODhmMjYzODc2IDEwMDY0NFxcbi0tLSBhL21tL2ZpbGVtYXAuY1xcbisrKyBiL21tL2ZpbGVtYXAuY1xcbkBAIC0zMjI1LDYgKzMyMjUsNyBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxcbiBcXHR3aGlsZSAoKGZvbGlvID0gZmluZF9nZXRfZW50cnkoXFx1MDAyNnhhcywgbWF4LCBYQV9QUkVTRU5UKSkpIHtcXG4gXFx0XFx0bG9mZl90IHBvcyA9ICh1NjQpeGFzLnhhX2luZGV4IFxcdTAwM2NcXHUwMDNjIFBBR0VfU0hJRlQ7XFxuIFxcdFxcdHNpemVfdCBzZWVrX3NpemU7XFxuK1xcdFxcdHU2NCBuZXh0O1xcbiBcXG4gXFx0XFx0aWYgKHN0YXJ0IFxcdTAwM2MgcG9zKSB7XFxuIFxcdFxcdFxcdGlmICghc2Vla19kYXRhKVxcbkBAIC0zMjMzLDcgKzMyMzQsMTEgQEAgbG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcXG4gXFx0XFx0fVxcbiBcXG4gXFx0XFx0c2Vla19zaXplID0gc2Vla19mb2xpb19zaXplKFxcdTAwMjZ4YXMsIGZvbGlvKTtcXG4tXFx0XFx0cG9zID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xcbitcXHRcXHRuZXh0ID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xcbitcXHRcXHRpZiAobmV4dCBcXHUwMDNlICh1NjQpZW5kKVxcbitcXHRcXHRcXHRwb3MgPSBlbmQ7XFxuK1xcdFxcdGVsc2VcXG4rXFx0XFx0XFx0cG9zID0gbmV4dDtcXG4gXFx0XFx0c3RhcnQgPSBmb2xpb19zZWVrX2hvbGVfZGF0YShcXHUwMDI2eGFzLCBtYXBwaW5nLCBmb2xpbywgc3RhcnQsIHBvcyxcXG4gXFx0XFx0XFx0XFx0c2Vla19kYXRhKTtcXG4gXFx0XFx0aWYgKHN0YXJ0IFxcdTAwM2MgcG9zKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODoyOS43NDg4MTU1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0Mjc5NTIzNDU2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUTVBGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIixcbiAgICBcInNobWVtX2ZpbGVfbGxzZWVrXCIsXG4gICAgXCJpb21hcF9zZWVrX2hvbGVfaXRlclwiLFxuICAgIFwiaW9tYXBfc2Vla19kYXRhX2l0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMTVlYmY5YTg2OGNkZjZkNmU5YjliZTg1NzZlNTQ3NDg2M2ZjOTNkNFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgSnVuIDMwIDE5OjI4OjI3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbW0vZmlsZW1hcC5jIGIvbW0vZmlsZW1hcC5jXG5pbmRleCA1YWY2MmU2YWJjYTU4Yi4uYjc4ZmQ4OGYyNjM4NzYgMTAwNjQ0XG4tLS0gYS9tbS9maWxlbWFwLmNcbisrKyBiL21tL2ZpbGVtYXAuY1xuQEAgLTMyMjUsNiArMzIyNSw3IEBAIGxvZmZfdCBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKHN0cnVjdCBhZGRyZXNzX3NwYWNlICptYXBwaW5nLCBsb2ZmX3Qgc3RhcnQsXG4gXHR3aGlsZSAoKGZvbGlvID0gZmluZF9nZXRfZW50cnkoXHUwMDI2eGFzLCBtYXgsIFhBX1BSRVNFTlQpKSkge1xuIFx0XHRsb2ZmX3QgcG9zID0gKHU2NCl4YXMueGFfaW5kZXggXHUwMDNjXHUwMDNjIFBBR0VfU0hJRlQ7XG4gXHRcdHNpemVfdCBzZWVrX3NpemU7XG4rXHRcdHU2NCBuZXh0O1xuIFxuIFx0XHRpZiAoc3RhcnQgXHUwMDNjIHBvcykge1xuIFx0XHRcdGlmICghc2Vla19kYXRhKVxuQEAgLTMyMzMsNyArMzIzNCwxMSBAQCBsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqbWFwcGluZywgbG9mZl90IHN0YXJ0LFxuIFx0XHR9XG4gXG4gXHRcdHNlZWtfc2l6ZSA9IHNlZWtfZm9saW9fc2l6ZShcdTAwMjZ4YXMsIGZvbGlvKTtcbi1cdFx0cG9zID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xuK1x0XHRuZXh0ID0gcm91bmRfdXAoKHU2NClwb3MgKyAxLCBzZWVrX3NpemUpO1xuK1x0XHRpZiAobmV4dCBcdTAwM2UgKHU2NCllbmQpXG4rXHRcdFx0cG9zID0gZW5kO1xuK1x0XHRlbHNlXG4rXHRcdFx0cG9zID0gbmV4dDtcbiBcdFx0c3RhcnQgPSBmb2xpb19zZWVrX2hvbGVfZGF0YShcdTAwMjZ4YXMsIG1hcHBpbmcsIGZvbGlvLCBzdGFydCwgcG9zLFxuIFx0XHRcdFx0c2Vla19kYXRhKTtcbiBcdFx0aWYgKHN0YXJ0IFx1MDAzYyBwb3MpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODoyOS43NDg4MTgxNVoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjIwNDk0NzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBtbS9maWxlbWFwLmMgLSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCB0aGF0IHR3ZWFrcyBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgaW4gYG1tL2ZpbGVtYXAuY2AuIEltbWVkaWF0ZWx5LCBpdCBjYXRjaGVzIG15IGV5ZSBiZWNhdXNlIGl04oCZcyBhIGZhaXJseSBsb3ctbGV2ZWwgY2hhbmdlLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGhvdyB3ZSdyZSBjYWxjdWxhdGluZyBgcG9zYCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4gSXQgc2VlbXMgdGhleSd2ZSBhZGp1c3RlZCB0aGUgY2FsY3VsYXRpb24gdXNpbmcgYHJvdW5kX3VwKCh1NjQpcG9zICsgMSwgc2Vla19zaXplKWAuIFRoZSBsb2dpYyBmb2xsb3dzOiBpZiB0aGUgY2FsY3VsYXRlZCBgbmV4dGAgdmFsdWUgZXhjZWVkcyB0aGUgYGVuZGAgdmFsdWUsIGBwb3NgIGdldHMgY2xhbXBlZCB0byBgZW5kYDsgb3RoZXJ3aXNlLCBpdCdzIHNldCB0byBgbmV4dGAuXG5cbkZ1bmN0aW9uYWxseSwgdGhpcyBpcyBkZWZpbml0ZWx5IGEgY29yZSBjaGFuZ2Ug4oCTIGl0J3MgcmlnaHQgaW4gdGhlIGhlYXJ0IG9mIHRoZSBWaXJ0dWFsIEZpbGUgU3lzdGVtIChWRlMpIGFuZCBNZW1vcnkgTWFuYWdlbWVudCAoTU0pIGxheWVycy4gIEl0J3MgYWZmZWN0aW5nIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCB3aGljaCBtZWFucyB3ZeKAmXJlIHBvdGVudGlhbGx5IGxvb2tpbmcgYXQgY2hhbmdlcyBpbiBob3cgZmlsZXMgcmVwb3J0IGRhdGEgb3IgaG9sZXMgdG8gdXNlcnNwYWNlLiBEZWZpbml0ZWx5IGEgY2FuZGlkYXRlIGZvciBjYXJlZnVsIHJldmlldy5cblxuU2luY2UgaXTigJlzIGluIGBtbS9maWxlbWFwLmNgLCB0aGF0J3MgYWx3YXlzIGNvbXBpbGVkIGluLiBUaGUgZmlyc3QgcXVlc3Rpb24gSSBoYXZlIGlzLCBhcmUgdGhlcmUgYW55IHNwZWNpZmljIGtlcm5lbCBjb25maWd1cmF0aW9ucyB0aGF0IG1pZ2h0IGltcGFjdCB0aGlzIHBhdGNoPyBTb21ldGhpbmcgdGhhdCB3b3VsZCBjb25kaXRpb25hbGx5IGVuYWJsZSBvciBkaXNhYmxlIGl0cyBlZmZlY3RzLiBMZXQncyBzZWUgaWYgd2UgY2FuIGZpbmQgYW55dGhpbmcgbGlrZSB0aGF0LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wYWN0IG9mIHRoaXMgYXQgYSBkZWVwZXIgbGV2ZWwgdGhhbiBqdXN0IGNvZGUuXG5cbk5leHQgc3RlcDogSSdsbCBjaGVjayB0aGUgY2FsbGVycyBvZiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAuIFVuZGVyc3RhbmRpbmcgd2hlcmUgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciBoYW5kbGUgb24gdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgY29uc2VxdWVuY2VzIG9mIHRoZSBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjAwNSwiT3V0cHV0VG9rZW5zIjoyMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjM0LjYxMDg3MDkxM1oiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3MzEyMzAyNzI0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvaW9tYXAvYnVmZmVyZWQtaW8uYz0xMzg5PXN0YXRpYyB2b2lkIGlvbWFwX3dyaXRlX2RlbGFsbG9jX3NjYW4oc3RydWN0IGlub2RlICppbm9kZSxcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ0Ni0gKiBBcyB3ZSBhcmUgc2Nhbm5pbmcgdGhlIHBhZ2UgY2FjaGUgZm9yIGRhdGEsIHdlIGRvbid0IG5lZWQgdG8gcmVpbXBsZW1lbnQgdGhlXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDQ3OiAqIHdoZWVsIC0gbWFwcGluZ19zZWVrX2hvbGVfZGF0YSgpIGRvZXMgZXhhY3RseSB3aGF0IHdlIG5lZWQgdG8gaWRlbnRpZnkgdGhlXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDQ4LSAqIHN0YXJ0IGFuZCBlbmQgb2YgZGF0YSByYW5nZXMgY29ycmVjdGx5IGV2ZW4gZm9yIHN1Yi1mb2xpbyBibG9jayBzaXplcy4gVGhpc1xcbi0tXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDUzLSAqXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDU0OiAqIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKSBpcyBub3QgYXdhcmUgb2YgRU9GLCBhbmQgc29cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NTUtICogY2FuIHJldHVybiBkYXRhIHJhbmdlcyB0aGF0IGV4aXN0IGluIHRoZSBjYWNoZSBiZXlvbmQgRU9GLiBlLmcuIGEgcGFnZSBmYXVsdFxcbi0tXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNDU5LSAqIGJleW9uZCBFT0YgYW5kIHRoZW4gaGF2ZSB0byBwdW5jaCBpdCBvdXQuIEJlY2F1c2UgdGhlIHJhbmdlIGlzIHVwIHRvIGRhdGUsXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYzoxNDYwOiAqIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKSB3aWxsIHJldHVybiBpdCwgYW5kIHdlIHdpbGwgc2tpcCB0aGUgcHVuY2ggYmVjYXVzZVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ2MS0gKiB0aGUgZm9saW8gaXMgZGlydHkuIFRIaXMgaXMgaW5jb3JyZWN0IC0gd2UgYWx3YXlzIG5lZWQgdG8gcHVuY2ggb3V0IGRlbGFsbG9jXFxuLS1cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NjctICogSW50ZXJ2YWxzIGFyZSBvZiB0aGUgZm9ybSBbc3RhcnRfYnl0ZSwgZW5kX2J5dGUpIChpLmUuIG9wZW4gZW5kZWQpIGJlY2F1c2UgaXRcXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0Njg6ICogbWF0Y2hlcyB0aGUgaW50ZXJ2YWxzIHJldHVybmVkIGJ5IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoKS4gaS5lLiBTRUVLX0RBVEFcXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0NjktICogcmV0dXJucyB0aGUgc3RhcnQgb2YgYSBkYXRhIHJhbmdlIChzdGFydF9ieXRlKSwgYW5kIFNFRUtfSE9MRShzdGFydF9ieXRlKVxcbi0tXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYz0xNDc0PXZvaWQgaW9tYXBfd3JpdGVfZGVsYWxsb2NfcmVsZWFzZShzdHJ1Y3QgaW5vZGUgKmlub2RlLCBsb2ZmX3Qgc3RhcnRfYnl0ZSxcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5MS1cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE0OTI6XFx0XFx0c3RhcnRfYnl0ZSA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoaW5vZGUtXFx1MDAzZWlfbWFwcGluZyxcXG5mcy9pb21hcC9idWZmZXJlZC1pby5jLTE0OTMtXFx0XFx0XFx0XFx0c3RhcnRfYnl0ZSwgc2Nhbl9lbmRfYnl0ZSwgU0VFS19EQVRBKTtcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5Ny1cXHRcXHQgKlxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmM6MTQ5ODpcXHRcXHQgKiBOb3RlIHRoYXQgbWFwcGluZ19zZWVrX2hvbGVfZGF0YSBpcyBvbmx5IHN1cHBvc2VkIHRvIHJldHVyblxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTQ5OS1cXHRcXHQgKiBlaXRoZXIgYW4gb2Zmc2V0IG9yIC1FTlhJTywgc28gV0FSTiBvbiBhbnkgb3RoZXIgZXJyb3IgYXNcXG4tLVxcbmZzL2lvbWFwL2J1ZmZlcmVkLWlvLmMtMTUxMi1cXHRcXHQgKi9cXG5mcy9pb21hcC9idWZmZXJlZC1pby5jOjE1MTM6XFx0XFx0ZGF0YV9lbmQgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGlub2RlLVxcdTAwM2VpX21hcHBpbmcsIHN0YXJ0X2J5dGUsXFxuZnMvaW9tYXAvYnVmZmVyZWQtaW8uYy0xNTE0LVxcdFxcdFxcdFxcdHNjYW5fZW5kX2J5dGUsIFNFRUtfSE9MRSk7XFxuLS1cXG5mcy9pb21hcC9zZWVrLmM9OT1zdGF0aWMgaW50IGlvbWFwX3NlZWtfaG9sZV9pdGVyKHN0cnVjdCBpb21hcF9pdGVyICppdGVyLFxcbi0tXFxuZnMvaW9tYXAvc2Vlay5jLTE1LVxcdGNhc2UgSU9NQVBfVU5XUklUVEVOOlxcbmZzL2lvbWFwL3NlZWsuYzoxNjpcXHRcXHQqaG9sZV9wb3MgPSBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhKGl0ZXItXFx1MDAzZWlub2RlLVxcdTAwM2VpX21hcHBpbmcsXFxuZnMvaW9tYXAvc2Vlay5jLTE3LVxcdFxcdFxcdFxcdGl0ZXItXFx1MDAzZXBvcywgaXRlci1cXHUwMDNlcG9zICsgbGVuZ3RoLCBTRUVLX0hPTEUpO1xcbi0tXFxuZnMvaW9tYXAvc2Vlay5jPTU1PXN0YXRpYyBpbnQgaW9tYXBfc2Vla19kYXRhX2l0ZXIoc3RydWN0IGlvbWFwX2l0ZXIgKml0ZXIsXFxuLS1cXG5mcy9pb21hcC9zZWVrLmMtNjMtXFx0Y2FzZSBJT01BUF9VTldSSVRURU46XFxuZnMvaW9tYXAvc2Vlay5jOjY0OlxcdFxcdCpob2xlX3BvcyA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoaXRlci1cXHUwMDNlaW5vZGUtXFx1MDAzZWlfbWFwcGluZyxcXG5mcy9pb21hcC9zZWVrLmMtNjUtXFx0XFx0XFx0XFx0aXRlci1cXHUwMDNlcG9zLCBpdGVyLVxcdTAwM2Vwb3MgKyBsZW5ndGgsIFNFRUtfREFUQSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L3BhZ2VtYXAuaD0xMjkyPWJvb2wgZmlsZW1hcF9yZWxlYXNlX2ZvbGlvKHN0cnVjdCBmb2xpbyAqZm9saW8sIGdmcF90IGdmcCk7XFxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmg6MTI5Mzpsb2ZmX3QgbWFwcGluZ19zZWVrX2hvbGVfZGF0YShzdHJ1Y3QgYWRkcmVzc19zcGFjZSAqLCBsb2ZmX3Qgc3RhcnQsIGxvZmZfdCBlbmQsXFxuaW5jbHVkZS9saW51eC9wYWdlbWFwLmgtMTI5NC1cXHRcXHRpbnQgd2hlbmNlKTtcXG4tLVxcbm1tL2ZpbGVtYXAuYz0zMTg4PXN0YXRpYyBpbmxpbmUgc2l6ZV90IHNlZWtfZm9saW9fc2l6ZShzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2ZpbGVtYXAuYy0zMTk1LS8qKlxcbm1tL2ZpbGVtYXAuYzozMTk2OiAqIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEgLSBTZWVrIGZvciBTRUVLX0RBVEEgLyBTRUVLX0hPTEUgaW4gdGhlIHBhZ2UgY2FjaGUuXFxubW0vZmlsZW1hcC5jLTMxOTctICogQG1hcHBpbmc6IEFkZHJlc3Mgc3BhY2UgdG8gc2VhcmNoLlxcbi0tXFxubW0vZmlsZW1hcC5jLTMyMTItICovXFxubW0vZmlsZW1hcC5jOjMyMTM6bG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcXG5tbS9maWxlbWFwLmMtMzIxNC1cXHRcXHRsb2ZmX3QgZW5kLCBpbnQgd2hlbmNlKVxcbi0tXFxubW0vc2htZW0uYz0zNTc3PXN0YXRpYyBsb2ZmX3Qgc2htZW1fZmlsZV9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpXFxuLS1cXG5tbS9zaG1lbS5jLTM1ODktXFx0LyogV2UncmUgaG9sZGluZyBpX3J3c2VtIHNvIHdlIGNhbiBhY2Nlc3MgaV9zaXplIGRpcmVjdGx5ICovXFxubW0vc2htZW0uYzozNTkwOlxcdG9mZnNldCA9IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEobWFwcGluZywgb2Zmc2V0LCBpbm9kZS1cXHUwMDNlaV9zaXplLCB3aGVuY2UpO1xcbm1tL3NobWVtLmMtMzU5MS1cXHRpZiAob2Zmc2V0IFxcdTAwM2U9IDApXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjQxLjkyMzE4MjczN1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MTE3MTEzOTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTY29wZSBhbmQgSW1wYWN0IG9mIGEgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCBpbW1lZGlhdGVseSwgbXkgZXhwZXJ0IGV5ZSBnb2VzIHRvIHRoZSBkZXRhaWxzLiBUaGlzIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBmdW5jdGlvbiBpcyB1c2VkIGluIGEgZmV3IGtleSBwbGFjZXM6IGBmcy9pb21hcC9idWZmZXJlZC1pby5jYCBzcGVjaWZpY2FsbHkgd2l0aGluIGBpb21hcF93cml0ZV9kZWxhbGxvY19yZWxlYXNlYCwgYW5kIGluIHRoZSBzZWVraW5nIGxvZ2ljIHZpYSBgZnMvaW9tYXAvc2Vlay5jYCBpbiBib3RoIGBpb21hcF9zZWVrX2hvbGVfaXRlcmAgYW5kIGBpb21hcF9zZWVrX2RhdGFfaXRlcmAuIFRoZW4gd2UgYWxzbyBzZWUgaXQgaW4gYG1tL3NobWVtLmNgIHNwZWNpZmljYWxseSBpbiBgc2htZW1fZmlsZV9sbHNlZWtgLiBUaGF0J3MgaW1wb3J0YW50LiBJdCdzIGVzc2VudGlhbGx5IHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCB3aXRoIGVpdGhlciBgU0VFS19IT0xFYCBvciBgU0VFS19EQVRBYCBjYWxscywgZXNwZWNpYWxseSBvbiBzaG1lbSAodG1wZnMpIGZpbGVzLCBhbmQgdGhlbiBhbHNvIGZpbGVzeXN0ZW1zIHRoYXQgdXNlIGlvbWFwIOKAkyBYRlMsIGV4dDQsIGFuZCBidHJmcyBhcmUgdGhlIGJpZyBvbmVzLlxuXG5UaGUgcGF0Y2ggaXRzZWxmIGlzIGZpeGluZyBhIGZ1bmN0aW9uYWwgYnVnLiBUaGUgY29uY2VybiBpcyB0aGF0IGBwb3NgIGNvdWxkIHBvdGVudGlhbGx5IGV4Y2VlZCBgZW5kYCBiZWNhdXNlIG9mIGhvdyBgcm91bmRfdXBgIGJlaGF2ZXMsIHdoaWNoIGNvdWxkIGNhdXNlIGludGVyZXN0aW5nIGFuZCBwb3NzaWJseSBleHBsb2l0YWJsZSBiZWhhdmlvci4gU2VlbXMgcHJldHR5IHNlcmlvdXMgZ2l2ZW4gdGhlIGV4cG9zdXJlLiBEZWZpbml0ZWx5IFdvcnRoRnV6emluZy5cblxuTXkgZm9jdXMgaXMgcHJpbWFyaWx5IG9uIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCBpdHNlbGYsIGFuZCBpdOKAmXMgZGlyZWN0IGNhbGxlciBpbiBzaG1lbSwgd2hpY2ggaXMgYHNobWVtX2ZpbGVfbGxzZWVrYC4gRnJvbSBhIGNvbmZpZ3VyYXRpb24gcGVyc3BlY3RpdmUsIHRoZXJlIGlzbuKAmXQgbXVjaCB0byB3b3JyeSBhYm91dCwgdGhhbmtmdWxseS4gYG1tL2ZpbGVtYXAuY2AgaXMgYWx3YXlzIGNvbXBpbGVkLCBhbmQgc2htZW0gaXMgdW5pdmVyc2FsbHkgYXZhaWxhYmxlLCBUTVBGUyBpcyB1c3VhbGx5IGVuYWJsZWQsIGFuZCBJT01BUCBpcyBlbmFibGVkIGJ5IHF1aXRlIGEgZmV3IGZpbGVzeXN0ZW1zIHRoYXQgYXJlIGNvbW1vbmx5IHVzZWQuIExldCdzIGNvbmZpcm0gdGhhdCB0aG91Z2guIGBDT05GSUdfU0hNRU1gIGFuZCBgQ09ORklHX0ZTX0lPTUFQYC4gR290IGl0LlxuXG5ObyBuZWVkIHRvIHNwZWNpZnkgYW55IHNwZWNpYWwgY29uZmlncy4gRm9yIGZ1enppbmcgcHVycG9zZXMsIGxldCdzIGtlZXAgdGhlIGZvY3VzIHN5bWJvbHMgdG8gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIGFuZCBgc2htZW1fZmlsZV9sbHNlZWtgLiBMZXQncyBhbHNvIHRha2UgYSBsb29rIGF0IGBtbS9maWxlbWFwLmNgIGFyb3VuZCBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAsIGp1c3QgdG8gYmUgc3VyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA0MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwNiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODo0OC41MzQ4OTcwNzlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA2MjUzNzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibW0vZmlsZW1hcC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm1tL2ZpbGVtYXAuYz0zMTg4PXN0YXRpYyBpbmxpbmUgc2l6ZV90IHNlZWtfZm9saW9fc2l6ZShzdHJ1Y3QgeGFfc3RhdGUgKnhhcywgc3RydWN0IGZvbGlvICpmb2xpbylcXG4tLVxcbm1tL2ZpbGVtYXAuYy0zMTk1LS8qKlxcbm1tL2ZpbGVtYXAuYzozMTk2OiAqIG1hcHBpbmdfc2Vla19ob2xlX2RhdGEgLSBTZWVrIGZvciBTRUVLX0RBVEEgLyBTRUVLX0hPTEUgaW4gdGhlIHBhZ2UgY2FjaGUuXFxubW0vZmlsZW1hcC5jLTMxOTctICogQG1hcHBpbmc6IEFkZHJlc3Mgc3BhY2UgdG8gc2VhcmNoLlxcbi0tXFxubW0vZmlsZW1hcC5jLTMyMTItICovXFxubW0vZmlsZW1hcC5jOjMyMTM6bG9mZl90IG1hcHBpbmdfc2Vla19ob2xlX2RhdGEoc3RydWN0IGFkZHJlc3Nfc3BhY2UgKm1hcHBpbmcsIGxvZmZfdCBzdGFydCxcXG5tbS9maWxlbWFwLmMtMzIxNC1cXHRcXHRsb2ZmX3QgZW5kLCBpbnQgd2hlbmNlKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0zMFQxOToyODo0OC42NDExNTk2MThaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTA4Njg4ODk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGF0IHRob3VnaHQgcHJvY2Vzcywga2VlcGluZyBpbiBtaW5kIEknbSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6XG5cbioqSW52ZXN0aWdhdGluZyBgc2htZW1fZmlsZV9sbHNlZWtgKipcblxuQWxyaWdodCwgdGltZSB0byBkaXZlIGluLiBMZXQncyBzdGFydCB3aXRoIGEgZm9jdXNlZCBsb29rIGF0IGBzaG1lbV9maWxlX2xsc2Vla2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBiZWhhdmlvciBhbmQgYW55IHBvdGVudGlhbCBxdWlya3MuIEknbSBpbW1lZGlhdGVseSB0aGlua2luZyBhYm91dCBpdHMgaW50ZXJhY3Rpb24gd2l0aCB0aGUgc2hhcmVkIG1lbW9yeSBzdWJzeXN0ZW0gYW5kIGFueSBzcGVjaWZpYyBpbXBsaWNhdGlvbnMgaXQgbWlnaHQgaGF2ZSB3aXRoaW4gdGhlIGJyb2FkZXIgZmlsZSBzeXN0ZW0gY29udGV4dC4gU3BlY2lmaWNhbGx5LCBJJ20gZ29pbmcgdG8gYmUgbG9va2luZyBmb3IgZWRnZSBjYXNlcywgcGVyZm9ybWFuY2UgYm90dGxlbmVja3MsIGFuZCBwb3RlbnRpYWwgYXJlYXMgZm9yIG9wdGltaXphdGlvbiBvciwgbGV0J3MgYmUgaG9uZXN0LCBidWcgaHVudGluZy4gVGhpcyBzZWVtcyBsaWtlIGEgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZSwgc28gYSBkZWVwIHVuZGVyc3RhbmRpbmcgaGVyZSBpcyBwYXJhbW91bnQuIEknbGwgbmVlZCB0byBjb25zaWRlciBob3cgYGxsc2Vla2AgaGFuZGxlcyB0aGUgcG90ZW50aWFsIGZvciBjb25jdXJyZW50IGFjY2VzcywgZXJyb3IgY29uZGl0aW9ucywgYW5kIHRoZSB1bmRlcmx5aW5nIG1lbW9yeSBtYW5hZ2VtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTU2LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjg6NTEuNTQ5ODUwODgzWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkyOTk1NjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInNobWVtX2ZpbGVfbGxzZWVrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm1tL3NobWVtLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibW0vc2htZW0uYz0zNDY1PXN0YXRpYyBzc2l6ZV90IHNobWVtX2ZpbGVfc3BsaWNlX3JlYWQoc3RydWN0IGZpbGUgKmluLCBsb2ZmX3QgKnBwb3MsXFxuLS1cXG5tbS9zaG1lbS5jLTM1NzYtXFxubW0vc2htZW0uYzozNTc3OnN0YXRpYyBsb2ZmX3Qgc2htZW1fZmlsZV9sbHNlZWsoc3RydWN0IGZpbGUgKmZpbGUsIGxvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UpXFxubW0vc2htZW0uYy0zNTc4LXtcXG4tLVxcbm1tL3NobWVtLmM9NTEzOD1zdGF0aWMgY29uc3Qgc3RydWN0IGZpbGVfb3BlcmF0aW9ucyBzaG1lbV9maWxlX29wZXJhdGlvbnMgPSB7XFxuLS1cXG5tbS9zaG1lbS5jLTUxNDItI2lmZGVmIENPTkZJR19UTVBGU1xcbm1tL3NobWVtLmM6NTE0MzpcXHQubGxzZWVrXFx0XFx0PSBzaG1lbV9maWxlX2xsc2VlayxcXG5tbS9zaG1lbS5jLTUxNDQtXFx0LnJlYWRfaXRlclxcdD0gc2htZW1fZmlsZV9yZWFkX2l0ZXIsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjUxLjY0Mjg1MzM5NFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM4MDYyMjM3MjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IG9mIGBzaG1lbV9maWxlX2xsc2Vla2AqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byB1bmRlcnN0YW5kIGl0cyBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcy4gSXQgc2VlbXMgbGlrZSBgc2htZW1fZmlsZV9sbHNlZWtgIGlzIHNvbWVob3cgbGlua2VkIHRvIGBDT05GSUdfVE1QRlNgLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIlJpZ2h0LCBUTVBGUywgc28gdGhhdCdzIGEgZ29vZCBvbmUgdG8gZW5zdXJlIGlzIGVuYWJsZWQuXCIgQnV0IHdhaXQsIGhhbmcgb24uIEEgY2xvc2VyIGxvb2sgcmV2ZWFscyBhIGJpdCBtb3JlIGNvbXBsZXhpdHkuIFRoZSBmdW5jdGlvbiBpdHNlbGYsIGBzaG1lbV9maWxlX2xsc2Vla2AsIHNlZW1zIHRvIGJlICpkZWZpbmVkKiByZWdhcmRsZXNzIG9mIHdoZXRoZXIgYENPTkZJR19UTVBGU2AgaXMgc2V0LiBIb3dldmVyLCBpdHMgKnVzYWdlKiB3aXRoaW4gYHNobWVtX2ZpbGVfb3BlcmF0aW9uc2AgYXBwZWFycyB0byBiZSBjb25kaXRpb25hbCwgZ3VhcmRlZCBieSBgI2lmZGVmIENPTkZJR19UTVBGU2AuIFRoYXQncyBhIGtleSBkaXN0aW5jdGlvbi5cblxuSSBuZWVkIHRvIGNvbmZpcm0gZXhhY3RseSBob3cgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIGFuZCB3aGVyZSBpdCdzIGNhbGxlZC4gTXkgYmVzdCBiZXQgaXMgdG8gZ28gZGlyZWN0bHkgdG8gYG1tL3NobWVtLmNgIGFuZCB0YWtlIGEgbG9vayBhcm91bmQgdGhlIGRlZmluaXRpb24gb2YgYHNobWVtX2ZpbGVfb3BlcmF0aW9uc2AuIEknbGwgem9vbSBpbiBvbiB0aGF0IGFyZWEgYW5kIHNlZSBob3cgZXZlcnl0aGluZyBmaXRzIHRvZ2V0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NjA3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjg6NTUuNDQ5MDc5NjAxWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MDU1MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJtbS9zaG1lbS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDUxMzgsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjUxMzg6XFx0c3RhdGljIGNvbnN0IHN0cnVjdCBmaWxlX29wZXJhdGlvbnMgc2htZW1fZmlsZV9vcGVyYXRpb25zID0ge1xcbjUxMzk6XFx0XFx0Lm1tYXBfcHJlcGFyZVxcdD0gc2htZW1fbW1hcF9wcmVwYXJlLFxcbjUxNDA6XFx0XFx0Lm9wZW5cXHRcXHQ9IHNobWVtX2ZpbGVfb3BlbixcXG41MTQxOlxcdFxcdC5nZXRfdW5tYXBwZWRfYXJlYSA9IHNobWVtX2dldF91bm1hcHBlZF9hcmVhLFxcbjUxNDI6XFx0I2lmZGVmIENPTkZJR19UTVBGU1xcbjUxNDM6XFx0XFx0Lmxsc2Vla1xcdFxcdD0gc2htZW1fZmlsZV9sbHNlZWssXFxuNTE0NDpcXHRcXHQucmVhZF9pdGVyXFx0PSBzaG1lbV9maWxlX3JlYWRfaXRlcixcXG41MTQ1OlxcdFxcdC53cml0ZV9pdGVyXFx0PSBzaG1lbV9maWxlX3dyaXRlX2l0ZXIsXFxuNTE0NjpcXHRcXHQuZnN5bmNcXHRcXHQ9IG5vb3BfZnN5bmMsXFxuNTE0NzpcXHRcXHQuc3BsaWNlX3JlYWRcXHQ9IHNobWVtX2ZpbGVfc3BsaWNlX3JlYWQsXFxuNTE0ODpcXHRcXHQuc3BsaWNlX3dyaXRlXFx0PSBpdGVyX2ZpbGVfc3BsaWNlX3dyaXRlLFxcbjUxNDk6XFx0XFx0LmZhbGxvY2F0ZVxcdD0gc2htZW1fZmFsbG9jYXRlLFxcbjUxNTA6XFx0XFx0LnNldGxlYXNlXFx0PSBnZW5lcmljX3NldGxlYXNlLFxcbjUxNTE6XFx0I2VuZGlmXFxuNTE1MjpcXHR9O1xcbjUxNTM6XFx0XFxuNTE1NDpcXHRzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2htZW1faW5vZGVfb3BlcmF0aW9ucyA9IHtcXG41MTU1OlxcdFxcdC5nZXRhdHRyXFx0PSBzaG1lbV9nZXRhdHRyLFxcbjUxNTY6XFx0XFx0LnNldGF0dHJcXHQ9IHNobWVtX3NldGF0dHIsXFxuNTE1NzpcXHQjaWZkZWYgQ09ORklHX1RNUEZTX1hBVFRSXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTMwVDE5OjI4OjU1LjQ0OTMyMjM3MVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjkyNjgyODI2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBUaGlzIFZGUy9NTSBQYXRjaCoqXG5cbk9rYXksIHNvIHRoaXMgcGF0Y2ggcmVsaWVzIG9uIGBDT05GSUdfVE1QRlNgIOKAkyB0aGF0J3MgYSBnaXZlbiBpZiBpdOKAmXMgdXNpbmcgYHNobWVtX2ZpbGVfbGxzZWVrYC4gSSdtIGN1cmlvdXMgYWJvdXQgdGhlIGludGVyYWN0aW9uIHdpdGggYGlvbWFwYCB0aG91Z2gsIEkgYXNzdW1lIGBDT05GSUdfRlNfSU9NQVBgIHdpbGwgYmUgcHVsbGVkIGluIGJ5IHRoZSByZWxldmFudCBmaWxlc3lzdGVtcy4gSSdsbCBhZGQgYFRNUEZTYCB0byBgRW5hYmxlQ29uZmlnc2AuXG5cbk5vdywgdGhlIGNvcmUgb2YgdGhpcyBzZWVtcyB0byBiZSBhcm91bmQgYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgLCBzbyBJIG5lZWQgdG8gY2hlY2sgdGhhdCBvdXQgaW4gYG1tL2ZpbGVtYXAuY2AuIFRoYXQncyBhIGZ1bmRhbWVudGFsIE1lbW9yeSBNYW5hZ2VtZW50IGZ1bmN0aW9uIOKAkyBpbXBvcnRhbnQgZm9yIGFueSBwZXJmb3JtYW5jZSBpbXBsaWNhdGlvbnMuIEknbGwgYWRkIGBtYXBwaW5nX3NlZWtfaG9sZV9kYXRhYCB0byBgRm9jdXNTeW1ib2xzYC5cblxuU2luY2UgaXTigJlzIHJlbGF0ZWQgdG8gaG9sZSBzZWVraW5nLCBJIG5lZWQgdG8gbG9vayBhdCB0aGUgcmVsYXRlZCBmdW5jdGlvbnMgYXMgd2VsbC4gSSdsbCBhbHNvIGFkZCBgc2htZW1fZmlsZV9sbHNlZWtgLCBgaW9tYXBfc2Vla19ob2xlX2l0ZXJgLCBhbmQgYGlvbWFwX3NlZWtfZGF0YV9pdGVyYCB0byB0aGUgc3ltYm9sIGxpc3QuXG5cblRoZSBidWcgaXMgaW4gdGhlIHJvdW5kaW5nIGJlaGF2aW9yIHdpdGhpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAsIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIG1lYW5zIGl0IGltcGFjdHMgaG93IGBsc2Vla2AgYmVoYXZlcyB3aXRoIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCwgc28gdGhlIHBhdGNoIGNsZWFybHkgaXMgYWJvdXQgZml4aW5nIGhvdyB0aGUgY29yZSBWRlMvTU0gbG9naWMgaGFuZGxlcyB0aG9zZSBvcGVyYXRpb25zLiBUaGlzIHdpbGwgYWZmZWN0IHRtcGZzIGFuZCBpb21hcCBmaWxlc3lzdGVtcywgc28gSSBuZWVkIHRvIGtlZXAgdGhvc2UgaW4gbWluZC5cblxuSSBzaG91bGQgY2FsbCBzZXQtcmVzdWx0cyBub3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzMjIsIk91dHB1dFRva2VucyI6MTYyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQ1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMzBUMTk6Mjk6MTIuMzc2MTU1MjgyWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3ODg2MjIzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJUTVBGU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm1hcHBpbmdfc2Vla19ob2xlX2RhdGFcIixcbiAgICBcInNobWVtX2ZpbGVfbGxzZWVrXCIsXG4gICAgXCJpb21hcF9zZWVrX2hvbGVfaXRlclwiLFxuICAgIFwiaW9tYXBfc2Vla19kYXRhX2l0ZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgbWFwcGluZ19zZWVrX2hvbGVfZGF0YWAgd2hlcmUgYHBvc2AgY291bGQgZXhjZWVkIGBlbmRgIHdoZW4gcm91bmRpbmcgdXAgdG8gYHNlZWtfc2l6ZWAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFZGUy9NTSBsb2dpYyB0aGF0IGhhbmRsZXMgYFNFRUtfSE9MRWAgYW5kIGBTRUVLX0RBVEFgIG9wZXJhdGlvbnMsIHJlYWNoYWJsZSBmcm9tIHVzZXJzcGFjZSB2aWEgYGxzZWVrYCBvbiB0bXBmcyBhbmQgaW9tYXAtYmFzZWQgZmlsZXN5c3RlbXMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiVE1QRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJtYXBwaW5nX3NlZWtfaG9sZV9kYXRhXCIsXG4gICAgXCJzaG1lbV9maWxlX2xsc2Vla1wiLFxuICAgIFwiaW9tYXBfc2Vla19ob2xlX2l0ZXJcIixcbiAgICBcImlvbWFwX3NlZWtfZGF0YV9pdGVyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYG1hcHBpbmdfc2Vla19ob2xlX2RhdGFgIHdoZXJlIGBwb3NgIGNvdWxkIGV4Y2VlZCBgZW5kYCB3aGVuIHJvdW5kaW5nIHVwIHRvIGBzZWVrX3NpemVgLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gY29yZSBWRlMvTU0gbG9naWMgdGhhdCBoYW5kbGVzIGBTRUVLX0hPTEVgIGFuZCBgU0VFS19EQVRBYCBvcGVyYXRpb25zLCByZWFjaGFibGUgZnJvbSB1c2Vyc3BhY2UgdmlhIGBsc2Vla2Agb24gdG1wZnMgYW5kIGlvbWFwLWJhc2VkIGZpbGVzeXN0ZW1zLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[1] Phase: Succeeded StartedAt: 2026-06-30 19:29:23 +0000 UTC FinishedAt: 2026-06-30 19:29:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-30 19:29:23 +0000 UTC FinishedAt: 2026-06-30 19:29:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2] Phase: Succeeded StartedAt: 2026-06-30 19:29:23 +0000 UTC FinishedAt: 2026-06-30 23:36:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-30 19:29:23 +0000 UTC FinishedAt: 2026-06-30 23:36:50 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-30 19:29:23 +0000 UTC FinishedAt: 2026-06-30 19:29:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-30 19:29:23 +0000 UTC FinishedAt: 2026-06-30 19:29:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowjrggl/series-workflowjrggl-convert-artifact-30346651/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-30 19:29:43 +0000 UTC FinishedAt: 2026-06-30 20:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-30 19:29:43 +0000 UTC FinishedAt: 2026-06-30 20:00:35 +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:*148252c2-5362-43fe-aab1-d87c29410acc,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-workflowjrggl/series-workflowjrggl-convert-artifact-30346651/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": "e814947c-c9cf-40a4-96b8-cbe73a6a50b3", "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-workflowjrggl/series-workflowjrggl-build-action-319068633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-30 19:29:43 +0000 UTC FinishedAt: 2026-06-30 20:00:28 +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:*148252c2-5362-43fe-aab1-d87c29410acc,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-workflowjrggl/series-workflowjrggl-convert-artifact-30346651/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": "e814947c-c9cf-40a4-96b8-cbe73a6a50b3", "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-workflowjrggl/series-workflowjrggl-build-action-319068633/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-30 20:00:35 +0000 UTC FinishedAt: 2026-06-30 20:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-30 20:00:35 +0000 UTC FinishedAt: 2026-06-30 20:00:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-30 20:00:35 +0000 UTC FinishedAt: 2026-06-30 20:00:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-30 20:00:35 +0000 UTC FinishedAt: 2026-06-30 20:00:44 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.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-workflowjrggl/series-workflowjrggl-convert-artifact-671967986/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-30 20:00:46 +0000 UTC FinishedAt: 2026-06-30 20:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-30 20:00:46 +0000 UTC FinishedAt: 2026-06-30 20:02:37 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e814947c-c9cf-40a4-96b8-cbe73a6a50b3,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-workflowjrggl/series-workflowjrggl-build-action-319068633/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-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-30 20:02:47 +0000 UTC FinishedAt: 2026-06-30 20:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-30 20:02:47 +0000 UTC FinishedAt: 2026-06-30 20:02:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-30 20:02:47 +0000 UTC FinishedAt: 2026-06-30 20:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-30 20:02:47 +0000 UTC FinishedAt: 2026-06-30 20:28:58 +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:*148252c2-5362-43fe-aab1-d87c29410acc,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-workflowjrggl/series-workflowjrggl-convert-artifact-671967986/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": "5efab233-da01-4f34-b88e-5301b5be6cc4", "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-workflowjrggl/series-workflowjrggl-build-action-1337682566/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-30 20:02:47 +0000 UTC FinishedAt: 2026-06-30 20:27:35 +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:*148252c2-5362-43fe-aab1-d87c29410acc,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-workflowjrggl/series-workflowjrggl-convert-artifact-671967986/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": "5efab233-da01-4f34-b88e-5301b5be6cc4", "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-workflowjrggl/series-workflowjrggl-build-action-1337682566/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-30 20:28:58 +0000 UTC FinishedAt: 2026-06-30 20:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-30 20:28:58 +0000 UTC FinishedAt: 2026-06-30 20:28:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-30 20:28:58 +0000 UTC FinishedAt: 2026-06-30 20:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-30 20:28:58 +0000 UTC FinishedAt: 2026-06-30 20:31:01 +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:*5efab233-da01-4f34-b88e-5301b5be6cc4,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-workflowjrggl/series-workflowjrggl-build-action-1337682566/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-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 23:36:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 23:36:50 +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-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},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:*e814947c-c9cf-40a4-96b8-cbe73a6a50b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5efab233-da01-4f34-b88e-5301b5be6cc4,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-workflowjrggl/series-workflowjrggl-build-action-319068633/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-workflowjrggl/series-workflowjrggl-build-action-1337682566/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 20:31:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 20:31:19 +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-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},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-workflowjrggl/series-workflowjrggl-convert-artifact-351755591/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 20:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 20:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-30 20:31:11 +0000 UTC FinishedAt: 2026-06-30 20:31:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-30 20:31:21 +0000 UTC FinishedAt: 2026-06-30 23:36:50 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjrggl[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db","https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["mapping_seek_hole_data","shmem_file_llseek","iomap_seek_hole_iter","iomap_seek_data_iter"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"6764c9b6e99d94ec1fc29c90d004d71ee3af8f8f","config_name":"upstream-apparmor-kasan.config","enable_configs":["TMPFS"],"series_id":"332fb90c-1e7c-4936-b78b-d8e461b7c105","tree_name":"mm-new","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/akpm/mm.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-30 20:31:21 +0000 UTC FinishedAt: 2026-06-30 23:36:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*e814947c-c9cf-40a4-96b8-cbe73a6a50b3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*5efab233-da01-4f34-b88e-5301b5be6cc4,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-workflowjrggl/series-workflowjrggl-build-action-319068633/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-workflowjrggl/series-workflowjrggl-build-action-1337682566/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-workflowjrggl/series-workflowjrggl-convert-artifact-351755591/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,}