Name: series-workflow4kstc Phase: Succeeded StartedAt: 2026-07-27 23:25:56 +0000 UTC FinishedAt: 2026-07-28 04:22:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[0] Phase: Succeeded StartedAt: 2026-07-27 23:25:56 +0000 UTC FinishedAt: 2026-07-27 23:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 23:25:56 +0000 UTC FinishedAt: 2026-07-27 23:58:05 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "97e211ad1a34a5a979558a037619b9e633ca8620", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "97e211ad1a34a5a979558a037619b9e633ca8620", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "d6ce22c8-15de-4f9d-a958-bfea35389d71" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_fill_super" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fZXh0NF9maWxsX3N1cGVyYCB3aGVyZSBgZXh0NF9nZXRfcmVzdWlkYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBleHQ0X2dldF9yZXNnaWRgIHRvIGluaXRpYWxpemUgYHNiaS1cdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZTJhODRmMTFmOGFhNmExYjNiZGUyM2U4MGM5OTFiOGY5ZTIxYmUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMjM6NTc6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jXG5pbmRleCA2YzE4YjVhZGZmY2EzMi4uYTE4NzExMmNhZmFmZGUgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3N1cGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvc3VwZXIuY1xuQEAgLTUzODAsNyAmIzQzOzUzODAsNyBAQCBzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdGV4dDRfc2V0X2RlZl9vcHRzKHNiLCBlcyk7XG4gXG4gXHRzYmktXHUwMDNlc19yZXN1aWQgPSBtYWtlX2t1aWQoXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcbi1cdHNiaS1cdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc3VpZChlcykpO1xuJiM0MztcdHNiaS1cdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc2dpZChlcykpO1xuIFx0c2JpLVx1MDAzZXNfY29tbWl0X2ludGVydmFsID0gSkJEMl9ERUZBVUxUX01BWF9DT01NSVRfQUdFICogSFo7XG4gXHRzYmktXHUwMDNlc19taW5fYmF0Y2hfdGltZSA9IEVYVDRfREVGX01JTl9CQVRDSF9USU1FO1xuIFx0c2JpLVx1MDAzZXNfbWF4X2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NQVhfQkFUQ0hfVElNRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRlMmE4NGYxMWY4YWE2YTFiM2JkZTIzZTgwYzk5MWI4ZjllMjFiZTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAyMzo1NzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuYwppbmRleCA2YzE4YjVhZGZmY2EzMi4uYTE4NzExMmNhZmFmZGUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvc3VwZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L3N1cGVyLmMKQEAgLTUzODAsNyAmIzQzOzUzODAsNyBAQCBzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAlleHQ0X3NldF9kZWZfb3B0cyhzYiwgZXMpOwogCiAJc2JpLSZndDtzX3Jlc3VpZCA9IG1ha2Vfa3VpZCgmYW1wO2luaXRfdXNlcl9ucywgZXh0NF9nZXRfcmVzdWlkKGVzKSk7Ci0Jc2JpLSZndDtzX3Jlc2dpZCA9IG1ha2Vfa2dpZCgmYW1wO2luaXRfdXNlcl9ucywgZXh0NF9nZXRfcmVzdWlkKGVzKSk7CiYjNDM7CXNiaS0mZ3Q7c19yZXNnaWQgPSBtYWtlX2tnaWQoJmFtcDtpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc2dpZChlcykpOwogCXNiaS0mZ3Q7c19jb21taXRfaW50ZXJ2YWwgPSBKQkQyX0RFRkFVTFRfTUFYX0NPTU1JVF9BR0UgKiBIWjsKIAlzYmktJmd0O3NfbWluX2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NSU5fQkFUQ0hfVElNRTsKIAlzYmktJmd0O3NfbWF4X2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NQVhfQkFUQ0hfVElNRTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYW4gRXh0NCBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIHdpdGhpbiB0aGUgYF9fZXh0NF9maWxsX3N1cGVyYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgZnMvZXh0NC9zdXBlci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzd2l0Y2hpbmcgYSBjYWxsIHRvIGBleHQ0X2dldF9yZXN1aWQoZXMpYCB0byBgZXh0NF9nZXRfcmVzZ2lkKGVzKWAuIFNlZW1zIGxpa2UgYSBzaW1wbGUgdHlwbyBvciBvdmVyc2lnaHQsIGJ1dCB0aGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemVz4oCUc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyByZXNvdXJjZSBncm91cCBvd25lcnNoaXAuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nOyBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzIGNhbiBzb21ldGltZXMgZXhwb3NlIHVuZXhwZWN0ZWQgZWRnZSBjYXNlcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgZGV0YWlscyBmb3IgYSBwcm9wZXIgYXNzZXNzbWVudC4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGNsZWFybHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gVGltZSB0byBjaGVjayBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBBaGEsIGBFWFQ0X0ZTYCDigJMgdGhhdCYjMzk7cyB0aGUgb25lLiAKCk5vdywgSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19leHQ0X2ZpbGxfc3VwZXJgIGlzIGluZGVlZCB0aGUgdGFyZ2V0IGFuZCB0aGF0IGBFWFQ0X0ZTYCBpcyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgYWxsIHRoZSBwaWVjZXMgb2YgdGhlIHB1enpsZSByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L3N1cGVyLmM9NTM0Mj1zdGF0aWMgYm9vbCBleHQ0X2lzX3N0cmlwZV9pbmNvbXBhdGlibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBzdHJpcGUpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUzNDgtXG5mcy9leHQ0L3N1cGVyLmM6NTM0OTpzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy01MzUwLXtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTgyNz1zdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4NDYtXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcdHJldCA9IF9fZXh0NF9maWxsX3N1cGVyKGZjLCBzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTg0OC1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgZXh0NCBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBfX2V4dDRfZmlsbF9zdXBlcmAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcXVlc3Rpb246IHdoYXQmIzM5O3MgdGhlIG5vbi1zdGF0aWMgY2FsbGVyIHRoYXQmIzM5O3MgYWN0dWFsbHkgKnVzaW5nKiBpdD8gSXMgaXQgYGV4dDRfZmlsbF9zdXBlcmAgaXRzZWxmLCBvciBpcyBpdCBgZXh0NF9nZXRfdHJlZWA/IE15IGd1dCBzYXlzIGl0JiMzOTtzIHByb2JhYmx5IGBleHQ0X2ZpbGxfc3VwZXJgIGFjdGluZyBhcyB0aGUgcHVibGljLWZhY2luZyBlbnRyeSBwb2ludCwgYW5kIGBfX2V4dDRfZmlsbF9zdXBlcmAgaGFuZGxlcyB0aGUgaW50ZXJuYWwgZGV0YWlscywgYnV0IGxldCYjMzk7cyBub3QgYXNzdW1lIGFueXRoaW5nLiBUaGUgYmVzdCBtb3ZlIGlzIHRvIGRyaWxsIGRvd24gYW5kIGNvbmZpcm0uIExldCBtZSBqdXN0IHF1aWNrbHkgdHJhY2UgdGhlIHVzYWdlIG9mIGBleHQ0X2ZpbGxfc3VwZXJgIHRvIHNlZSBleGFjdGx5IGhvdyBhbmQgd2hlcmUgYF9fZXh0NF9maWxsX3N1cGVyYCBnZXRzIGludm9rZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4uIEkmIzM5O2xsIGNoZWNrIGBleHQ0X2ZpbGxfc3VwZXJgIGZpcnN0LCBzZWUgd2hhdCB0aGF0IHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9maWxsX3N1cGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz01MzQyPXN0YXRpYyBib29sIGV4dDRfaXNfc3RyaXBlX2luY29tcGF0aWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIHN0cmlwZSlcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTM0OC1cbmZzL2V4dDQvc3VwZXIuYzo1MzQ5OnN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTUzNTAte1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01NzY2PWZhaWxlZF9tb3VudDg6IF9fbWF5YmVfdW51c2VkXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4MjYtXG5mcy9leHQ0L3N1cGVyLmM6NTgyNzpzdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9leHQ0L3N1cGVyLmMtNTgyOC17XG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4NDYtXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcdHJldCA9IF9fZXh0NF9maWxsX3N1cGVyKGZjLCBzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTg0OC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZnMvZXh0NC9zdXBlci5jPTU4Nzc9c3RhdGljIGludCBleHQ0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2V4dDQvc3VwZXIuYy01ODc4LXtcbmZzL2V4dDQvc3VwZXIuYzo1ODc5Olx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIGV4dDRfZmlsbF9zdXBlcik7XG5mcy9leHQ0L3N1cGVyLmMtNTg4MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ5NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gZXh0NCYjMzk7cyBTdXBlcmJsb2NrIE1vdW50aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGV4dDQgZmlsZXN5c3RlbSBnZXRzIG1vdW50ZWQuIEkgc2VlIGBleHQ0X2ZpbGxfc3VwZXJgIGFuZCBJIHJlY2FsbCBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBub3QgdGhlIG1haW4gZW50cnkgcG9pbnQgdGhvdWdoLCByaWdodD8gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24sIGBleHQ0X2dldF90cmVlYC4gQnV0IHdhaXQgYSBtaW51dGUuLi4gaXMgYGV4dDRfZ2V0X3RyZWVgICphbHNvKiBzdGF0aWM/IFRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gSXQmIzM5O3MgdGltZSB0byBjb25maXJtLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGZ1bmRhbWVudGFsIGFib3V0IHRoZSBhcmNoaXRlY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X2dldF90cmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz05MT1zdGF0aWMgaW50IGV4dDRfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSk7XG5mcy9leHQ0L3N1cGVyLmM6OTI6c3RhdGljIGludCBleHQ0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG5mcy9leHQ0L3N1cGVyLmMtOTMtc3RhdGljIGludCBleHQ0X3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTEyNT1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBleHQ0X2NvbnRleHRfb3BzID0ge1xuZnMvZXh0NC9zdXBlci5jLTEyNi1cdC5wYXJzZV9wYXJhbVx0PSBleHQ0X3BhcnNlX3BhcmFtLFxuZnMvZXh0NC9zdXBlci5jOjEyNzpcdC5nZXRfdHJlZVx0PSBleHQ0X2dldF90cmVlLFxuZnMvZXh0NC9zdXBlci5jLTEyOC1cdC5yZWNvbmZpZ3VyZVx0PSBleHQ0X3JlY29uZmlndXJlLFxuLS1cbmZzL2V4dDQvc3VwZXIuYz01ODI3PXN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTg3Ni1cbmZzL2V4dDQvc3VwZXIuYzo1ODc3OnN0YXRpYyBpbnQgZXh0NF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9leHQ0L3N1cGVyLmMtNTg3OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGV4dDQgRmlsZSBTeXN0ZW0gSW5pdGlhbGl6YXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZXh0NCBjb2RlIGFnYWluLiBMZXQmIzM5O3Mgc2VlLi4uIGBleHQ0X2dldF90cmVlYC4uLiBTdGF0aWMsIGh1aD8gT2theSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gTWFrZXMgc2Vuc2UgZm9yIGludGVybmFsIHVzZSB3aXRoaW4gdGhlIG1vZHVsZSwgdHlwaWNhbGx5LiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gZ2V0dGluZyB0aGUgZmlsZXN5c3RlbSB0cmVlIHN0cnVjdHVyZSBzb21laG93LiBOb3csIGxldCBtZSBzZWUuLi4gd2hhdCYjMzk7cyB0aGUgcm9sZSBvZiBgZXh0NF9pbml0X2ZzX2NvbnRleHRgIGluIGFsbCBvZiB0aGlzPyBUaGlzIGZ1bmN0aW9uIHNvdW5kcyBsaWtlIGl0JiMzOTtzIHdoZXJlIHRoZSBmaWxlIHN5c3RlbSBjb250ZXh0IGlzIGluaXRpYWxpemVkLiBJcyBpdCBhbHNvIHN0YXRpYz8gSXMgaXQgbGlua2VkIHRvIHRoZSBwcmV2aW91cyBmdW5jdGlvbj8gSG93IGRvZXMgdGhlIGluaXRpYWxpc2F0aW9uIHByb2Nlc3MgbGluayB3aXRoIHRoZSBleHRyYWN0aW9uIG9mIHRoZSBmaWxlc3lzdGVtIG1ldGFkYXRhPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZpbGVzeXN0ZW0gdHJlZSBpbnRlcmFjdHMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gY29udGV4dC4gVGhpbmtpbmcgdGhhdCBJIGNhbiBwcm9iYWJseSB3b3JrIG91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYGV4dDRfZ2V0X3RyZWVgIGFuZCBgZXh0NF9pbml0X2ZzX2NvbnRleHRgIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfaW5pdF9mc19jb250ZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz05ND1zdGF0aWMgdm9pZCBleHQ0X2ZjX2ZyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKTtcbmZzL2V4dDQvc3VwZXIuYzo5NTpzdGF0aWMgaW50IGV4dDRfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG5mcy9leHQ0L3N1cGVyLmMtOTYtc3RhdGljIHZvaWQgZXh0NF9raWxsX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMzQ9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGV4dDJfZnNfdHlwZSA9IHtcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMTM2LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O2V4dDJcJiMzNDssXG5mcy9leHQ0L3N1cGVyLmM6MTM3Olx0LmluaXRfZnNfY29udGV4dFx0PSBleHQ0X2luaXRfZnNfY29udGV4dCxcbmZzL2V4dDQvc3VwZXIuYy0xMzgtXHQucGFyYW1ldGVyc1x0XHQ9IGV4dDRfcGFyYW1fc3BlY3MsXG4tLVxuZnMvZXh0NC9zdXBlci5jPTE1MD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXh0M19mc190eXBlID0ge1xuLS1cbmZzL2V4dDQvc3VwZXIuYy0xNTItXHQubmFtZVx0XHRcdD0gXCYjMzQ7ZXh0M1wmIzM0OyxcbmZzL2V4dDQvc3VwZXIuYzoxNTM6XHQuaW5pdF9mc19jb250ZXh0XHQ9IGV4dDRfaW5pdF9mc19jb250ZXh0LFxuZnMvZXh0NC9zdXBlci5jLTE1NC1cdC5wYXJhbWV0ZXJzXHRcdD0gZXh0NF9wYXJhbV9zcGVjcyxcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjAzNj1zdGF0aWMgdm9pZCBleHQ0X2ZjX2ZyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy0yMDUwLVxuZnMvZXh0NC9zdXBlci5jOjIwNTE6aW50IGV4dDRfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2V4dDQvc3VwZXIuYy0yMDUyLXtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NzUyNT1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXh0NF9mc190eXBlID0ge1xuLS1cbmZzL2V4dDQvc3VwZXIuYy03NTI3LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O2V4dDRcJiMzNDssXG5mcy9leHQ0L3N1cGVyLmM6NzUyODpcdC5pbml0X2ZzX2NvbnRleHRcdD0gZXh0NF9pbml0X2ZzX2NvbnRleHQsXG5mcy9leHQ0L3N1cGVyLmMtNzUyOS1cdC5wYXJhbWV0ZXJzXHRcdD0gZXh0NF9wYXJhbV9zcGVjcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGV4dDQgRmlsZXN5c3RlbSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGV4dDRfaW5pdF9mc19jb250ZXh0YCBpc24mIzM5O3Qgc3RhdGljLCB3aGljaCBtZWFucyBpdCBjYW4gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgZmlsZS4gQnV0IHdhaXQsIGl0JiMzOTtzIG5vdCB0aGUgbW91bnQgZnVuY3Rpb24gaXRzZWxmOyBpdCYjMzk7cyBqdXN0IHNldHRpbmcgdXAgdGhlIGNvbnRleHQsIGdvdCBpdC4gVGhlIHJlYWwgbW91bnRpbmcgb3BlcmF0aW9uIGhhcHBlbnMgdGhyb3VnaCBgZXh0NF9nZXRfdHJlZWAsIGludm9rZWQgdGhyb3VnaCB0aGUgVkZTIGBnZXRfdHJlZWAgb3BlcmF0aW9uLgoKTm93LCB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBCb3RoIGBleHQ0X2ZpbGxfc3VwZXJgIGFuZCBgX19leHQ0X2ZpbGxfc3VwZXJgIGFyZSBzdGF0aWMsIHNvIHRoZXkgKmNvdWxkKiBwb3RlbnRpYWxseSBiZSBpbmxpbmVkLCBvciBub3QuLi4gSG93ZXZlciwgYGV4dDRfZmlsbF9zdXBlcmAgaXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgZ2V0X3RyZWVfYmRldmA6IGBnZXRfdHJlZV9iZGV2KGZjLCBleHQ0X2ZpbGxfc3VwZXIpO2AuIEJlY2F1c2Ugb2YgdGhpcyB1c2FnZSwgYGV4dDRfZmlsbF9zdXBlcmAgY2Fubm90IGJlIGlubGluZWQgc2luY2UgaXQgaGFzIGl0cyBvd24gYWRkcmVzcyB3aGljaCBpcyBiZWluZyBzdG9yZWQuIFRoaXMgbWVhbnMgYGV4dDRfZmlsbF9zdXBlcmAgbG9va3MgdG8gYmUgYSBnb29kIHRhcmdldCBmb3IgZnVydGhlciBhbmFseXNpcy4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCBgRVhUNF9GU2AgaW4gYGZzL2V4dDQvS2NvbmZpZ2AgdG8gc2VlIHRoZSBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDQKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEVYVDQgRmlsZXN5c3RlbSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgYEVYVDRfRlNgLiBNeSBmb2N1cyBpcyB6ZXJvZWQgaW4gb24gdGhlIGBleHQ0X2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucywgYnV0IGl0IGxvb2tzIGxpa2UgYEVYVDRfRlNgIGlzIHRoZSBvbmx5IG9uZSByZXF1aXJlZCwgd2hpY2ggaXMgZ3JlYXQuCgpUaGUgcmF0aW9uYWxlIGlzIGNsZWFyLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYnVnIGZpeCBzcGVjaWZpY2FsbHkgd2l0aGluIGBfX2V4dDRfZmlsbF9zdXBlcmAuIEl0IGNvbmNlcm5zIHRoZSBpbmNvcnJlY3QgdXNlIG9mIGBleHQ0X2dldF9yZXN1aWRgIHdoZXJlIGBleHQ0X2dldF9yZXNnaWRgIHNob3VsZCBoYXZlIGJlZW4gdXNlZCB0byBpbml0aWFsaXplIGBzYmktJmd0O3NfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiB0byBob3cgdGhlIGV4dDQgZmlsZXN5c3RlbSBpbml0aWFsaXplcywgd2hpY2ggbWVhbnMgaXTigJlzIGFic29sdXRlbHkgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBXZSYjMzk7dmUgZ290IGEgdGFuZ2libGUgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGl0c2VsZiwgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZpbmRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy4KCkFscmlnaHQsIHRpbWUgdG8gcHJlcGFyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGdldCB0aGUgbmVjZXNzYXJ5IGVsZW1lbnRzIHNldCB1cCBhbmQgZ2V0IHRoaXMgbW92aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjMwLjMyMTQ3MDYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMTYzMTk0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX2V4dDRfZmlsbF9zdXBlcmAgd2hlcmUgYGV4dDRfZ2V0X3Jlc3VpZGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgZXh0NF9nZXRfcmVzZ2lkYCB0byBpbml0aWFsaXplIGBzYmktXFx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzAuMzIxNDc1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg5MTYzNTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGUyYTg0ZjExZjhhYTZhMWIzYmRlMjNlODBjOTkxYjhmOWUyMWJlMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMzo1NzoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmNcXG5pbmRleCA2YzE4YjVhZGZmY2EzMi4uYTE4NzExMmNhZmFmZGUgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXFxuKysrIGIvZnMvZXh0NC9zdXBlci5jXFxuQEAgLTUzODAsNyArNTM4MCw3IEBAIHN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRleHQ0X3NldF9kZWZfb3B0cyhzYiwgZXMpO1xcbiBcXG4gXFx0c2JpLVxcdTAwM2VzX3Jlc3VpZCA9IG1ha2Vfa3VpZChcXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcXG4tXFx0c2JpLVxcdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcXG4rXFx0c2JpLVxcdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXNnaWQoZXMpKTtcXG4gXFx0c2JpLVxcdTAwM2VzX2NvbW1pdF9pbnRlcnZhbCA9IEpCRDJfREVGQVVMVF9NQVhfQ09NTUlUX0FHRSAqIEhaO1xcbiBcXHRzYmktXFx1MDAzZXNfbWluX2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NSU5fQkFUQ0hfVElNRTtcXG4gXFx0c2JpLVxcdTAwM2VzX21heF9iYXRjaF90aW1lID0gRVhUNF9ERUZfTUFYX0JBVENIX1RJTUU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjMwLjkxMTQ0Nzg0OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIzNTI2MzMyNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVxcdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRlMmE4NGYxMWY4YWE2YTFiM2JkZTIzZTgwYzk5MWI4ZjllMjFiZTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMzo1NzoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuY1xuaW5kZXggNmMxOGI1YWRmZmNhMzIuLmExODcxMTJjYWZhZmRlIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXG4rKysgYi9mcy9leHQ0L3N1cGVyLmNcbkBAIC01MzgwLDcgKzUzODAsNyBAQCBzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdGV4dDRfc2V0X2RlZl9vcHRzKHNiLCBlcyk7XG4gXG4gXHRzYmktXHUwMDNlc19yZXN1aWQgPSBtYWtlX2t1aWQoXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcbi1cdHNiaS1cdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc3VpZChlcykpO1xuK1x0c2JpLVx1MDAzZXNfcmVzZ2lkID0gbWFrZV9rZ2lkKFx1MDAyNmluaXRfdXNlcl9ucywgZXh0NF9nZXRfcmVzZ2lkKGVzKSk7XG4gXHRzYmktXHUwMDNlc19jb21taXRfaW50ZXJ2YWwgPSBKQkQyX0RFRkFVTFRfTUFYX0NPTU1JVF9BR0UgKiBIWjtcbiBcdHNiaS1cdTAwM2VzX21pbl9iYXRjaF90aW1lID0gRVhUNF9ERUZfTUlOX0JBVENIX1RJTUU7XG4gXHRzYmktXHUwMDNlc19tYXhfYmF0Y2hfdGltZSA9IEVYVDRfREVGX01BWF9CQVRDSF9USU1FO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzAuOTExNDQ5NTY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NDg2MTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYW4gRXh0NCBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBidWcgd2l0aGluIHRoZSBgX19leHQ0X2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIGluIGBmcy9leHQ0L3N1cGVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBhIGNhbGwgdG8gYGV4dDRfZ2V0X3Jlc3VpZChlcylgIHRvIGBleHQ0X2dldF9yZXNnaWQoZXMpYC4gU2VlbXMgbGlrZSBhIHNpbXBsZSB0eXBvIG9yIG92ZXJzaWdodCwgYnV0IHRoaXMgZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6ZXPigJRzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIHJlc291cmNlIGdyb3VwIG93bmVyc2hpcC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmc7IGEgc3VidGxlIGNoYW5nZSBsaWtlIHRoaXMgY2FuIHNvbWV0aW1lcyBleHBvc2UgdW5leHBlY3RlZCBlZGdlIGNhc2VzLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZGV0YWlscyBmb3IgYSBwcm9wZXIgYXNzZXNzbWVudC4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGNsZWFybHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gVGltZSB0byBjaGVjayBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBBaGEsIGBFWFQ0X0ZTYCDigJMgdGhhdCdzIHRoZSBvbmUuIFxuXG5Ob3csIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19leHQ0X2ZpbGxfc3VwZXJgIGlzIGluZGVlZCB0aGUgdGFyZ2V0IGFuZCB0aGF0IGBFWFQ0X0ZTYCBpcyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIHBpZWNlcyBvZiB0aGUgcHV6emxlIHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzUuMDg2MzEzNzk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzM3NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZXh0NF9maWxsX3N1cGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvc3VwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L3N1cGVyLmM9NTM0Mj1zdGF0aWMgYm9vbCBleHQ0X2lzX3N0cmlwZV9pbmNvbXBhdGlibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBzdHJpcGUpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTM0OC1cXG5mcy9leHQ0L3N1cGVyLmM6NTM0OTpzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNTM1MC17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTgyNz1zdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTg0Ni1cXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcXHRyZXQgPSBfX2V4dDRfZmlsbF9zdXBlcihmYywgc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01ODQ4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1NzozNS4xNDg2NTgzMTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk0ODg5Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgZXh0NCBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgX19leHQ0X2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcXVlc3Rpb246IHdoYXQncyB0aGUgbm9uLXN0YXRpYyBjYWxsZXIgdGhhdCdzIGFjdHVhbGx5ICp1c2luZyogaXQ/IElzIGl0IGBleHQ0X2ZpbGxfc3VwZXJgIGl0c2VsZiwgb3IgaXMgaXQgYGV4dDRfZ2V0X3RyZWVgPyBNeSBndXQgc2F5cyBpdCdzIHByb2JhYmx5IGBleHQ0X2ZpbGxfc3VwZXJgIGFjdGluZyBhcyB0aGUgcHVibGljLWZhY2luZyBlbnRyeSBwb2ludCwgYW5kIGBfX2V4dDRfZmlsbF9zdXBlcmAgaGFuZGxlcyB0aGUgaW50ZXJuYWwgZGV0YWlscywgYnV0IGxldCdzIG5vdCBhc3N1bWUgYW55dGhpbmcuIFRoZSBiZXN0IG1vdmUgaXMgdG8gZHJpbGwgZG93biBhbmQgY29uZmlybS4gTGV0IG1lIGp1c3QgcXVpY2tseSB0cmFjZSB0aGUgdXNhZ2Ugb2YgYGV4dDRfZmlsbF9zdXBlcmAgdG8gc2VlIGV4YWN0bHkgaG93IGFuZCB3aGVyZSBgX19leHQ0X2ZpbGxfc3VwZXJgIGdldHMgaW52b2tlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuLi4gSSdsbCBjaGVjayBgZXh0NF9maWxsX3N1cGVyYCBmaXJzdCwgc2VlIHdoYXQgdGhhdCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzguNTQzNTUwNzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDA1NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfZmlsbF9zdXBlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9zdXBlci5jPTUzNDI9c3RhdGljIGJvb2wgZXh0NF9pc19zdHJpcGVfaW5jb21wYXRpYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgc3RyaXBlKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTUzNDgtXFxuZnMvZXh0NC9zdXBlci5jOjUzNDk6c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTUzNTAte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTU3NjY9ZmFpbGVkX21vdW50ODogX19tYXliZV91bnVzZWRcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01ODI2LVxcbmZzL2V4dDQvc3VwZXIuYzo1ODI3OnN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9leHQ0L3N1cGVyLmMtNTgyOC17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTg0Ni1cXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcXHRyZXQgPSBfX2V4dDRfZmlsbF9zdXBlcihmYywgc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01ODQ4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTU4Nzc9c3RhdGljIGludCBleHQ0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9leHQ0L3N1cGVyLmMtNTg3OC17XFxuZnMvZXh0NC9zdXBlci5jOjU4Nzk6XFx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIGV4dDRfZmlsbF9zdXBlcik7XFxuZnMvZXh0NC9zdXBlci5jLTU4ODAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1NzozOC42MDI5NjgxMTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUzODA3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIGV4dDQncyBTdXBlcmJsb2NrIE1vdW50aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBleHQ0IGZpbGVzeXN0ZW0gZ2V0cyBtb3VudGVkLiBJIHNlZSBgZXh0NF9maWxsX3N1cGVyYCBhbmQgSSByZWNhbGwgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIG5vdCB0aGUgbWFpbiBlbnRyeSBwb2ludCB0aG91Z2gsIHJpZ2h0PyBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiwgYGV4dDRfZ2V0X3RyZWVgLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpcyBgZXh0NF9nZXRfdHJlZWAgKmFsc28qIHN0YXRpYz8gVGhhdCBkb2Vzbid0IHNlZW0gcmlnaHQuIEl0J3MgdGltZSB0byBjb25maXJtLiBMZXQncyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBHb3R0YSBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1Nzo0MS44NTY3NzcwNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MTM1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfZ2V0X3RyZWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9zdXBlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvc3VwZXIuYz05MT1zdGF0aWMgaW50IGV4dDRfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSk7XFxuZnMvZXh0NC9zdXBlci5jOjkyOnN0YXRpYyBpbnQgZXh0NF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpO1xcbmZzL2V4dDQvc3VwZXIuYy05My1zdGF0aWMgaW50IGV4dDRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZXh0NF9jb250ZXh0X29wcyA9IHtcXG5mcy9leHQ0L3N1cGVyLmMtMTI2LVxcdC5wYXJzZV9wYXJhbVxcdD0gZXh0NF9wYXJzZV9wYXJhbSxcXG5mcy9leHQ0L3N1cGVyLmM6MTI3OlxcdC5nZXRfdHJlZVxcdD0gZXh0NF9nZXRfdHJlZSxcXG5mcy9leHQ0L3N1cGVyLmMtMTI4LVxcdC5yZWNvbmZpZ3VyZVxcdD0gZXh0NF9yZWNvbmZpZ3VyZSxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01ODI3PXN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01ODc2LVxcbmZzL2V4dDQvc3VwZXIuYzo1ODc3OnN0YXRpYyBpbnQgZXh0NF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvZXh0NC9zdXBlci5jLTU4Nzgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1Nzo0Mi4zMzA5MTgyNDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTMwMzg0NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGV4dDQgRmlsZSBTeXN0ZW0gSW5pdGlhbGl6YXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGV4dDQgY29kZSBhZ2Fpbi4gTGV0J3Mgc2VlLi4uIGBleHQ0X2dldF90cmVlYC4uLiBTdGF0aWMsIGh1aD8gT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBNYWtlcyBzZW5zZSBmb3IgaW50ZXJuYWwgdXNlIHdpdGhpbiB0aGUgbW9kdWxlLCB0eXBpY2FsbHkuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIGdldHRpbmcgdGhlIGZpbGVzeXN0ZW0gdHJlZSBzdHJ1Y3R1cmUgc29tZWhvdy4gTm93LCBsZXQgbWUgc2VlLi4uIHdoYXQncyB0aGUgcm9sZSBvZiBgZXh0NF9pbml0X2ZzX2NvbnRleHRgIGluIGFsbCBvZiB0aGlzPyBUaGlzIGZ1bmN0aW9uIHNvdW5kcyBsaWtlIGl0J3Mgd2hlcmUgdGhlIGZpbGUgc3lzdGVtIGNvbnRleHQgaXMgaW5pdGlhbGl6ZWQuIElzIGl0IGFsc28gc3RhdGljPyBJcyBpdCBsaW5rZWQgdG8gdGhlIHByZXZpb3VzIGZ1bmN0aW9uPyBIb3cgZG9lcyB0aGUgaW5pdGlhbGlzYXRpb24gcHJvY2VzcyBsaW5rIHdpdGggdGhlIGV4dHJhY3Rpb24gb2YgdGhlIGZpbGVzeXN0ZW0gbWV0YWRhdGE/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmlsZXN5c3RlbSB0cmVlIGludGVyYWN0cyB3aXRoIHRoZSBmaWxlIHN5c3RlbSBjb250ZXh0LiBUaGlua2luZyB0aGF0IEkgY2FuIHByb2JhYmx5IHdvcmsgb3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgZXh0NF9nZXRfdHJlZWAgYW5kIGBleHQ0X2luaXRfZnNfY29udGV4dGAgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ1LjI2MTMwNTAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjgyMjU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X2luaXRfZnNfY29udGV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9zdXBlci5jPTk0PXN0YXRpYyB2b2lkIGV4dDRfZmNfZnJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpO1xcbmZzL2V4dDQvc3VwZXIuYzo5NTpzdGF0aWMgaW50IGV4dDRfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XFxuZnMvZXh0NC9zdXBlci5jLTk2LXN0YXRpYyB2b2lkIGV4dDRfa2lsbF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMzQ9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGV4dDJfZnNfdHlwZSA9IHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xMzYtXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJleHQyXFxcIixcXG5mcy9leHQ0L3N1cGVyLmM6MTM3OlxcdC5pbml0X2ZzX2NvbnRleHRcXHQ9IGV4dDRfaW5pdF9mc19jb250ZXh0LFxcbmZzL2V4dDQvc3VwZXIuYy0xMzgtXFx0LnBhcmFtZXRlcnNcXHRcXHQ9IGV4dDRfcGFyYW1fc3BlY3MsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MTUwPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBleHQzX2ZzX3R5cGUgPSB7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMTUyLVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiZXh0M1xcXCIsXFxuZnMvZXh0NC9zdXBlci5jOjE1MzpcXHQuaW5pdF9mc19jb250ZXh0XFx0PSBleHQ0X2luaXRfZnNfY29udGV4dCxcXG5mcy9leHQ0L3N1cGVyLmMtMTU0LVxcdC5wYXJhbWV0ZXJzXFx0XFx0PSBleHQ0X3BhcmFtX3NwZWNzLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTIwMzY9c3RhdGljIHZvaWQgZXh0NF9mY19mcmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0yMDUwLVxcbmZzL2V4dDQvc3VwZXIuYzoyMDUxOmludCBleHQ0X2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvZXh0NC9zdXBlci5jLTIwNTIte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTc1MjU9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGV4dDRfZnNfdHlwZSA9IHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy03NTI3LVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiZXh0NFxcXCIsXFxuZnMvZXh0NC9zdXBlci5jOjc1Mjg6XFx0LmluaXRfZnNfY29udGV4dFxcdD0gZXh0NF9pbml0X2ZzX2NvbnRleHQsXFxuZnMvZXh0NC9zdXBlci5jLTc1MjktXFx0LnBhcmFtZXRlcnNcXHRcXHQ9IGV4dDRfcGFyYW1fc3BlY3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ1LjMyODEzNjk2OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE2OTUyNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZXh0NCBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGV4dDRfaW5pdF9mc19jb250ZXh0YCBpc24ndCBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBCdXQgd2FpdCwgaXQncyBub3QgdGhlIG1vdW50IGZ1bmN0aW9uIGl0c2VsZjsgaXQncyBqdXN0IHNldHRpbmcgdXAgdGhlIGNvbnRleHQsIGdvdCBpdC4gVGhlIHJlYWwgbW91bnRpbmcgb3BlcmF0aW9uIGhhcHBlbnMgdGhyb3VnaCBgZXh0NF9nZXRfdHJlZWAsIGludm9rZWQgdGhyb3VnaCB0aGUgVkZTIGBnZXRfdHJlZWAgb3BlcmF0aW9uLlxuXG5Ob3csIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEJvdGggYGV4dDRfZmlsbF9zdXBlcmAgYW5kIGBfX2V4dDRfZmlsbF9zdXBlcmAgYXJlIHN0YXRpYywgc28gdGhleSAqY291bGQqIHBvdGVudGlhbGx5IGJlIGlubGluZWQsIG9yIG5vdC4uLiBIb3dldmVyLCBgZXh0NF9maWxsX3N1cGVyYCBpcyBiZWluZyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBnZXRfdHJlZV9iZGV2YDogYGdldF90cmVlX2JkZXYoZmMsIGV4dDRfZmlsbF9zdXBlcik7YC4gQmVjYXVzZSBvZiB0aGlzIHVzYWdlLCBgZXh0NF9maWxsX3N1cGVyYCBjYW5ub3QgYmUgaW5saW5lZCBzaW5jZSBpdCBoYXMgaXRzIG93biBhZGRyZXNzIHdoaWNoIGlzIGJlaW5nIHN0b3JlZC4gVGhpcyBtZWFucyBgZXh0NF9maWxsX3N1cGVyYCBsb29rcyB0byBiZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5MZXQgbWUgdGFrZSBhIGxvb2sgYXQgYEVYVDRfRlNgIGluIGBmcy9leHQ0L0tjb25maWdgIHRvIHNlZSB0aGUgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ5LjY0NTA5MTU4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwNTgyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVYVDRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTQ1LVxcbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcXG5mcy9leHQ0L0tjb25maWctNDctXFx0Ym9vbCBcXFwiRXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy01NS1cXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcXG5mcy9leHQ0L0tjb25maWctNTctXFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ5LjcxMTE1NDkwNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQwMTA3NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEVYVDQgRmlsZXN5c3RlbSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgRVhUNF9GU2AuIE15IGZvY3VzIGlzIHplcm9lZCBpbiBvbiB0aGUgYGV4dDRfZmlsbF9zdXBlcmAgZnVuY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGBFWFQ0X0ZTYCBpcyB0aGUgb25seSBvbmUgcmVxdWlyZWQsIHdoaWNoIGlzIGdyZWF0LlxuXG5UaGUgcmF0aW9uYWxlIGlzIGNsZWFyLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBidWcgZml4IHNwZWNpZmljYWxseSB3aXRoaW4gYF9fZXh0NF9maWxsX3N1cGVyYC4gSXQgY29uY2VybnMgdGhlIGluY29ycmVjdCB1c2Ugb2YgYGV4dDRfZ2V0X3Jlc3VpZGAgd2hlcmUgYGV4dDRfZ2V0X3Jlc2dpZGAgc2hvdWxkIGhhdmUgYmVlbiB1c2VkIHRvIGluaXRpYWxpemUgYHNiaS1cdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gdG8gaG93IHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6ZXMsIHdoaWNoIG1lYW5zIGl04oCZcyBhYnNvbHV0ZWx5IHByaW1lIHRlcnJpdG9yeSBmb3IgZnV6emluZy4gV2UndmUgZ290IGEgdGFuZ2libGUgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGl0c2VsZiwgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZpbmRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy5cblxuQWxyaWdodCwgdGltZSB0byBwcmVwYXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LiBMZXQncyBnZXQgdGhlIG5lY2Vzc2FyeSBlbGVtZW50cyBzZXQgdXAgYW5kIGdldCB0aGlzIG1vdmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYwNCwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6NTQuMzUxMjY0NTc1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY1MTE5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVxcdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX2V4dDRfZmlsbF9zdXBlcmAgd2hlcmUgYGV4dDRfZ2V0X3Jlc3VpZGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgZXh0NF9nZXRfcmVzZ2lkYCB0byBpbml0aWFsaXplIGBzYmktXFx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow4kstc[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 23:25:56 +0000 UTC FinishedAt: 2026-07-27 23:57:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "97e211ad1a34a5a979558a037619b9e633ca8620", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "97e211ad1a34a5a979558a037619b9e633ca8620", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "EXT4_FS" ], "series_id": "d6ce22c8-15de-4f9d-a958-bfea35389d71" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ext4_fill_super" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0VYVDRfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtleHQ0X2ZpbGxfc3VwZXImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBidWcgaW4gYF9fZXh0NF9maWxsX3N1cGVyYCB3aGVyZSBgZXh0NF9nZXRfcmVzdWlkYCB3YXMgaW5jb3JyZWN0bHkgdXNlZCBpbnN0ZWFkIG9mIGBleHQ0X2dldF9yZXNnaWRgIHRvIGluaXRpYWxpemUgYHNiaS1cdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkZTJhODRmMTFmOGFhNmExYjNiZGUyM2U4MGM5OTFiOGY5ZTIxYmUyXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMjM6NTc6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvZXh0NC9zdXBlci5jIGIvZnMvZXh0NC9zdXBlci5jXG5pbmRleCA2YzE4YjVhZGZmY2EzMi4uYTE4NzExMmNhZmFmZGUgMTAwNjQ0XG4tLS0gYS9mcy9leHQ0L3N1cGVyLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL2V4dDQvc3VwZXIuY1xuQEAgLTUzODAsNyAmIzQzOzUzODAsNyBAQCBzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdGV4dDRfc2V0X2RlZl9vcHRzKHNiLCBlcyk7XG4gXG4gXHRzYmktXHUwMDNlc19yZXN1aWQgPSBtYWtlX2t1aWQoXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcbi1cdHNiaS1cdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc3VpZChlcykpO1xuJiM0MztcdHNiaS1cdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc2dpZChlcykpO1xuIFx0c2JpLVx1MDAzZXNfY29tbWl0X2ludGVydmFsID0gSkJEMl9ERUZBVUxUX01BWF9DT01NSVRfQUdFICogSFo7XG4gXHRzYmktXHUwMDNlc19taW5fYmF0Y2hfdGltZSA9IEVYVDRfREVGX01JTl9CQVRDSF9USU1FO1xuIFx0c2JpLVx1MDAzZXNfbWF4X2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NQVhfQkFUQ0hfVElNRTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGRlMmE4NGYxMWY4YWE2YTFiM2JkZTIzZTgwYzk5MWI4ZjllMjFiZTIKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgTW9uIEp1bCAyNyAyMzo1NzoyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuYwppbmRleCA2YzE4YjVhZGZmY2EzMi4uYTE4NzExMmNhZmFmZGUgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDQvc3VwZXIuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9leHQ0L3N1cGVyLmMKQEAgLTUzODAsNyAmIzQzOzUzODAsNyBAQCBzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYikKIAlleHQ0X3NldF9kZWZfb3B0cyhzYiwgZXMpOwogCiAJc2JpLSZndDtzX3Jlc3VpZCA9IG1ha2Vfa3VpZCgmYW1wO2luaXRfdXNlcl9ucywgZXh0NF9nZXRfcmVzdWlkKGVzKSk7Ci0Jc2JpLSZndDtzX3Jlc2dpZCA9IG1ha2Vfa2dpZCgmYW1wO2luaXRfdXNlcl9ucywgZXh0NF9nZXRfcmVzdWlkKGVzKSk7CiYjNDM7CXNiaS0mZ3Q7c19yZXNnaWQgPSBtYWtlX2tnaWQoJmFtcDtpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc2dpZChlcykpOwogCXNiaS0mZ3Q7c19jb21taXRfaW50ZXJ2YWwgPSBKQkQyX0RFRkFVTFRfTUFYX0NPTU1JVF9BR0UgKiBIWjsKIAlzYmktJmd0O3NfbWluX2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NSU5fQkFUQ0hfVElNRTsKIAlzYmktJmd0O3NfbWF4X2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NQVhfQkFUQ0hfVElNRTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE1MQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE3MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYW4gRXh0NCBCdWcgRml4KioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggYWRkcmVzc2VzIGEgYnVnIHdpdGhpbiB0aGUgYF9fZXh0NF9maWxsX3N1cGVyYCBmdW5jdGlvbiwgd2hpY2ggcmVzaWRlcyBpbiBgZnMvZXh0NC9zdXBlci5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBpcyBzd2l0Y2hpbmcgYSBjYWxsIHRvIGBleHQ0X2dldF9yZXN1aWQoZXMpYCB0byBgZXh0NF9nZXRfcmVzZ2lkKGVzKWAuIFNlZW1zIGxpa2UgYSBzaW1wbGUgdHlwbyBvciBvdmVyc2lnaHQsIGJ1dCB0aGlzIGZ1bmRhbWVudGFsbHkgYWx0ZXJzIGhvdyB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemVz4oCUc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyByZXNvdXJjZSBncm91cCBvd25lcnNoaXAuIFRoaXMgZGVmaW5pdGVseSB3YXJyYW50cyB0aG9yb3VnaCBmdXp6aW5nOyBhIHN1YnRsZSBjaGFuZ2UgbGlrZSB0aGlzIGNhbiBzb21ldGltZXMgZXhwb3NlIHVuZXhwZWN0ZWQgZWRnZSBjYXNlcy4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgZGV0YWlscyBmb3IgYSBwcm9wZXIgYXNzZXNzbWVudC4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGNsZWFybHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gVGltZSB0byBjaGVjayBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBBaGEsIGBFWFQ0X0ZTYCDigJMgdGhhdCYjMzk7cyB0aGUgb25lLiAKCk5vdywgSSYjMzk7bGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19leHQ0X2ZpbGxfc3VwZXJgIGlzIGluZGVlZCB0aGUgdGFyZ2V0IGFuZCB0aGF0IGBFWFQ0X0ZTYCBpcyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTt2ZSBnb3QgYWxsIHRoZSBwaWVjZXMgb2YgdGhlIHB1enpsZSByaWdodC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfX2V4dDRfZmlsbF9zdXBlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9leHQ0L3N1cGVyLmM9NTM0Mj1zdGF0aWMgYm9vbCBleHQ0X2lzX3N0cmlwZV9pbmNvbXBhdGlibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBzdHJpcGUpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTUzNDgtXG5mcy9leHQ0L3N1cGVyLmM6NTM0OTpzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbmZzL2V4dDQvc3VwZXIuYy01MzUwLXtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NTgyNz1zdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4NDYtXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcdHJldCA9IF9fZXh0NF9maWxsX3N1cGVyKGZjLCBzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTg0OC1cdGlmIChyZXQgXHUwMDNjIDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjgxNgoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkV4YW1pbmluZyB0aGUgZXh0NCBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBfX2V4dDRfZmlsbF9zdXBlcmAgZnVuY3Rpb24uIFRoZSBmaXJzdCB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0JiMzOTtzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcXVlc3Rpb246IHdoYXQmIzM5O3MgdGhlIG5vbi1zdGF0aWMgY2FsbGVyIHRoYXQmIzM5O3MgYWN0dWFsbHkgKnVzaW5nKiBpdD8gSXMgaXQgYGV4dDRfZmlsbF9zdXBlcmAgaXRzZWxmLCBvciBpcyBpdCBgZXh0NF9nZXRfdHJlZWA/IE15IGd1dCBzYXlzIGl0JiMzOTtzIHByb2JhYmx5IGBleHQ0X2ZpbGxfc3VwZXJgIGFjdGluZyBhcyB0aGUgcHVibGljLWZhY2luZyBlbnRyeSBwb2ludCwgYW5kIGBfX2V4dDRfZmlsbF9zdXBlcmAgaGFuZGxlcyB0aGUgaW50ZXJuYWwgZGV0YWlscywgYnV0IGxldCYjMzk7cyBub3QgYXNzdW1lIGFueXRoaW5nLiBUaGUgYmVzdCBtb3ZlIGlzIHRvIGRyaWxsIGRvd24gYW5kIGNvbmZpcm0uIExldCBtZSBqdXN0IHF1aWNrbHkgdHJhY2UgdGhlIHVzYWdlIG9mIGBleHQ0X2ZpbGxfc3VwZXJgIHRvIHNlZSBleGFjdGx5IGhvdyBhbmQgd2hlcmUgYF9fZXh0NF9maWxsX3N1cGVyYCBnZXRzIGludm9rZWQuIFRpbWUgdG8gZGl2ZSBpbnRvIHRoZSBjb2RlLi4uIEkmIzM5O2xsIGNoZWNrIGBleHQ0X2ZpbGxfc3VwZXJgIGZpcnN0LCBzZWUgd2hhdCB0aGF0IHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZXh0NF9maWxsX3N1cGVyJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz01MzQyPXN0YXRpYyBib29sIGV4dDRfaXNfc3RyaXBlX2luY29tcGF0aWJsZShzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCB1bnNpZ25lZCBsb25nIHN0cmlwZSlcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTM0OC1cbmZzL2V4dDQvc3VwZXIuYzo1MzQ5OnN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxuZnMvZXh0NC9zdXBlci5jLTUzNTAte1xuLS1cbmZzL2V4dDQvc3VwZXIuYz01NzY2PWZhaWxlZF9tb3VudDg6IF9fbWF5YmVfdW51c2VkXG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4MjYtXG5mcy9leHQ0L3N1cGVyLmM6NTgyNzpzdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9leHQ0L3N1cGVyLmMtNTgyOC17XG4tLVxuZnMvZXh0NC9zdXBlci5jLTU4NDYtXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcdHJldCA9IF9fZXh0NF9maWxsX3N1cGVyKGZjLCBzYik7XG5mcy9leHQ0L3N1cGVyLmMtNTg0OC1cdGlmIChyZXQgXHUwMDNjIDApXG4tLVxuZnMvZXh0NC9zdXBlci5jPTU4Nzc9c3RhdGljIGludCBleHQ0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2V4dDQvc3VwZXIuYy01ODc4LXtcbmZzL2V4dDQvc3VwZXIuYzo1ODc5Olx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIGV4dDRfZmlsbF9zdXBlcik7XG5mcy9leHQ0L3N1cGVyLmMtNTg4MC19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ5NQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipEaWdnaW5nIGludG8gZXh0NCYjMzk7cyBTdXBlcmJsb2NrIE1vdW50aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCBob3cgdGhlIGV4dDQgZmlsZXN5c3RlbSBnZXRzIG1vdW50ZWQuIEkgc2VlIGBleHQ0X2ZpbGxfc3VwZXJgIGFuZCBJIHJlY2FsbCBpdCYjMzk7cyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCYjMzk7cyBub3QgdGhlIG1haW4gZW50cnkgcG9pbnQgdGhvdWdoLCByaWdodD8gTXkgYnJhaW4gaW1tZWRpYXRlbHkganVtcHMgdG8gdGhlIG5vbi1zdGF0aWMgZnVuY3Rpb24sIGBleHQ0X2dldF90cmVlYC4gQnV0IHdhaXQgYSBtaW51dGUuLi4gaXMgYGV4dDRfZ2V0X3RyZWVgICphbHNvKiBzdGF0aWM/IFRoYXQgZG9lc24mIzM5O3Qgc2VlbSByaWdodC4gSXQmIzM5O3MgdGltZSB0byBjb25maXJtLiBMZXQmIzM5O3MgZGlnIGRlZXBlciBhbmQgdmVyaWZ5IHRoYXQgYXNzdW1wdGlvbi4gR290dGEgbWFrZSBzdXJlIEkmIzM5O20gbm90IG1pc3Npbmcgc29tZXRoaW5nIGZ1bmRhbWVudGFsIGFib3V0IHRoZSBhcmNoaXRlY3R1cmUgaGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtleHQ0X2dldF90cmVlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz05MT1zdGF0aWMgaW50IGV4dDRfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSk7XG5mcy9leHQ0L3N1cGVyLmM6OTI6c3RhdGljIGludCBleHQ0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG5mcy9leHQ0L3N1cGVyLmMtOTMtc3RhdGljIGludCBleHQ0X3JlY29uZmlndXJlKHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG4tLVxuZnMvZXh0NC9zdXBlci5jPTEyNT1zdGF0aWMgY29uc3Qgc3RydWN0IGZzX2NvbnRleHRfb3BlcmF0aW9ucyBleHQ0X2NvbnRleHRfb3BzID0ge1xuZnMvZXh0NC9zdXBlci5jLTEyNi1cdC5wYXJzZV9wYXJhbVx0PSBleHQ0X3BhcnNlX3BhcmFtLFxuZnMvZXh0NC9zdXBlci5jOjEyNzpcdC5nZXRfdHJlZVx0PSBleHQ0X2dldF90cmVlLFxuZnMvZXh0NC9zdXBlci5jLTEyOC1cdC5yZWNvbmZpZ3VyZVx0PSBleHQ0X3JlY29uZmlndXJlLFxuLS1cbmZzL2V4dDQvc3VwZXIuYz01ODI3PXN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcbi0tXG5mcy9leHQ0L3N1cGVyLmMtNTg3Ni1cbmZzL2V4dDQvc3VwZXIuYzo1ODc3OnN0YXRpYyBpbnQgZXh0NF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXG5mcy9leHQ0L3N1cGVyLmMtNTg3OC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDA1MgoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGV4dDQgRmlsZSBTeXN0ZW0gSW5pdGlhbGl6YXRpb24qKgoKUmlnaHQsIHNvIEkmIzM5O20gZGlnZ2luZyBpbnRvIHRoaXMgZXh0NCBjb2RlIGFnYWluLiBMZXQmIzM5O3Mgc2VlLi4uIGBleHQ0X2dldF90cmVlYC4uLiBTdGF0aWMsIGh1aD8gT2theSwgdGhhdCYjMzk7cyBpbnRlcmVzdGluZy4gTWFrZXMgc2Vuc2UgZm9yIGludGVybmFsIHVzZSB3aXRoaW4gdGhlIG1vZHVsZSwgdHlwaWNhbGx5LiBJdCYjMzk7cyBsaWtlbHkgaW52b2x2ZWQgaW4gZ2V0dGluZyB0aGUgZmlsZXN5c3RlbSB0cmVlIHN0cnVjdHVyZSBzb21laG93LiBOb3csIGxldCBtZSBzZWUuLi4gd2hhdCYjMzk7cyB0aGUgcm9sZSBvZiBgZXh0NF9pbml0X2ZzX2NvbnRleHRgIGluIGFsbCBvZiB0aGlzPyBUaGlzIGZ1bmN0aW9uIHNvdW5kcyBsaWtlIGl0JiMzOTtzIHdoZXJlIHRoZSBmaWxlIHN5c3RlbSBjb250ZXh0IGlzIGluaXRpYWxpemVkLiBJcyBpdCBhbHNvIHN0YXRpYz8gSXMgaXQgbGlua2VkIHRvIHRoZSBwcmV2aW91cyBmdW5jdGlvbj8gSG93IGRvZXMgdGhlIGluaXRpYWxpc2F0aW9uIHByb2Nlc3MgbGluayB3aXRoIHRoZSBleHRyYWN0aW9uIG9mIHRoZSBmaWxlc3lzdGVtIG1ldGFkYXRhPyBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGZpbGVzeXN0ZW0gdHJlZSBpbnRlcmFjdHMgd2l0aCB0aGUgZmlsZSBzeXN0ZW0gY29udGV4dC4gVGhpbmtpbmcgdGhhdCBJIGNhbiBwcm9iYWJseSB3b3JrIG91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYGV4dDRfZ2V0X3RyZWVgIGFuZCBgZXh0NF9pbml0X2ZzX2NvbnRleHRgIHRvIHVuZGVyc3RhbmQgdGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2V4dDRfaW5pdF9mc19jb250ZXh0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9zdXBlci5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvc3VwZXIuYz05ND1zdGF0aWMgdm9pZCBleHQ0X2ZjX2ZyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKTtcbmZzL2V4dDQvc3VwZXIuYzo5NTpzdGF0aWMgaW50IGV4dDRfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XG5mcy9leHQ0L3N1cGVyLmMtOTYtc3RhdGljIHZvaWQgZXh0NF9raWxsX3NiKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpO1xuLS1cbmZzL2V4dDQvc3VwZXIuYz0xMzQ9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGV4dDJfZnNfdHlwZSA9IHtcbi0tXG5mcy9leHQ0L3N1cGVyLmMtMTM2LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O2V4dDJcJiMzNDssXG5mcy9leHQ0L3N1cGVyLmM6MTM3Olx0LmluaXRfZnNfY29udGV4dFx0PSBleHQ0X2luaXRfZnNfY29udGV4dCxcbmZzL2V4dDQvc3VwZXIuYy0xMzgtXHQucGFyYW1ldGVyc1x0XHQ9IGV4dDRfcGFyYW1fc3BlY3MsXG4tLVxuZnMvZXh0NC9zdXBlci5jPTE1MD1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXh0M19mc190eXBlID0ge1xuLS1cbmZzL2V4dDQvc3VwZXIuYy0xNTItXHQubmFtZVx0XHRcdD0gXCYjMzQ7ZXh0M1wmIzM0OyxcbmZzL2V4dDQvc3VwZXIuYzoxNTM6XHQuaW5pdF9mc19jb250ZXh0XHQ9IGV4dDRfaW5pdF9mc19jb250ZXh0LFxuZnMvZXh0NC9zdXBlci5jLTE1NC1cdC5wYXJhbWV0ZXJzXHRcdD0gZXh0NF9wYXJhbV9zcGVjcyxcbi0tXG5mcy9leHQ0L3N1cGVyLmM9MjAzNj1zdGF0aWMgdm9pZCBleHQ0X2ZjX2ZyZWUoc3RydWN0IGZzX2NvbnRleHQgKmZjKVxuLS1cbmZzL2V4dDQvc3VwZXIuYy0yMDUwLVxuZnMvZXh0NC9zdXBlci5jOjIwNTE6aW50IGV4dDRfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYylcbmZzL2V4dDQvc3VwZXIuYy0yMDUyLXtcbi0tXG5mcy9leHQ0L3N1cGVyLmM9NzUyNT1zdGF0aWMgc3RydWN0IGZpbGVfc3lzdGVtX3R5cGUgZXh0NF9mc190eXBlID0ge1xuLS1cbmZzL2V4dDQvc3VwZXIuYy03NTI3LVx0Lm5hbWVcdFx0XHQ9IFwmIzM0O2V4dDRcJiMzNDssXG5mcy9leHQ0L3N1cGVyLmM6NzUyODpcdC5pbml0X2ZzX2NvbnRleHRcdD0gZXh0NF9pbml0X2ZzX2NvbnRleHQsXG5mcy9leHQ0L3N1cGVyLmMtNzUyOS1cdC5wYXJhbWV0ZXJzXHRcdD0gZXh0NF9wYXJhbV9zcGVjcyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMjM6NTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDg3NAoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDIyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGV4dDQgRmlsZXN5c3RlbSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGV4dDRfaW5pdF9mc19jb250ZXh0YCBpc24mIzM5O3Qgc3RhdGljLCB3aGljaCBtZWFucyBpdCBjYW4gYmUgY2FsbGVkIGZyb20gb3V0c2lkZSB0aGUgZmlsZS4gQnV0IHdhaXQsIGl0JiMzOTtzIG5vdCB0aGUgbW91bnQgZnVuY3Rpb24gaXRzZWxmOyBpdCYjMzk7cyBqdXN0IHNldHRpbmcgdXAgdGhlIGNvbnRleHQsIGdvdCBpdC4gVGhlIHJlYWwgbW91bnRpbmcgb3BlcmF0aW9uIGhhcHBlbnMgdGhyb3VnaCBgZXh0NF9nZXRfdHJlZWAsIGludm9rZWQgdGhyb3VnaCB0aGUgVkZTIGBnZXRfdHJlZWAgb3BlcmF0aW9uLgoKTm93LCB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBCb3RoIGBleHQ0X2ZpbGxfc3VwZXJgIGFuZCBgX19leHQ0X2ZpbGxfc3VwZXJgIGFyZSBzdGF0aWMsIHNvIHRoZXkgKmNvdWxkKiBwb3RlbnRpYWxseSBiZSBpbmxpbmVkLCBvciBub3QuLi4gSG93ZXZlciwgYGV4dDRfZmlsbF9zdXBlcmAgaXMgYmVpbmcgcGFzc2VkIGFzIGEgZnVuY3Rpb24gcG9pbnRlciB0byBgZ2V0X3RyZWVfYmRldmA6IGBnZXRfdHJlZV9iZGV2KGZjLCBleHQ0X2ZpbGxfc3VwZXIpO2AuIEJlY2F1c2Ugb2YgdGhpcyB1c2FnZSwgYGV4dDRfZmlsbF9zdXBlcmAgY2Fubm90IGJlIGlubGluZWQgc2luY2UgaXQgaGFzIGl0cyBvd24gYWRkcmVzcyB3aGljaCBpcyBiZWluZyBzdG9yZWQuIFRoaXMgbWVhbnMgYGV4dDRfZmlsbF9zdXBlcmAgbG9va3MgdG8gYmUgYSBnb29kIHRhcmdldCBmb3IgZnVydGhlciBhbmFseXNpcy4KCkxldCBtZSB0YWtlIGEgbG9vayBhdCBgRVhUNF9GU2AgaW4gYGZzL2V4dDQvS2NvbmZpZ2AgdG8gc2VlIHRoZSBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBFWFQ0X0ZTJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZnMvZXh0NC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2ZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuZnMvZXh0NC9LY29uZmlnOjI6Y29uZmlnIEVYVDRfRlNcbmZzL2V4dDQvS2NvbmZpZy0zLVx0dHJpc3RhdGUgXCYjMzQ7VGhlIEV4dGVuZGVkIDQgKGV4dDQpIGZpbGVzeXN0ZW1cJiMzNDtcbi0tXG5mcy9leHQ0L0tjb25maWc9MzU9Y29uZmlnIEVYVDRfVVNFX0ZPUl9FWFQyXG4tLVxuZnMvZXh0NC9LY29uZmlnLTQ1LVxuZnMvZXh0NC9LY29uZmlnOjQ2OmNvbmZpZyBFWFQ0X0ZTX1BPU0lYX0FDTFxuZnMvZXh0NC9LY29uZmlnLTQ3LVx0Ym9vbCBcJiMzNDtFeHQ0IFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG4tLVxuZnMvZXh0NC9LY29uZmlnLTU1LVxuZnMvZXh0NC9LY29uZmlnOjU2OmNvbmZpZyBFWFQ0X0ZTX1NFQ1VSSVRZXG5mcy9leHQ0L0tjb25maWctNTctXHRib29sIFwmIzM0O0V4dDQgU2VjdXJpdHkgTGFiZWxzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDIzOjU3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU2MDQKCQkJCQkJCW91dHB1dDogMTE0CgkJCQkJCQl0aG91Z2h0czogMTI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEVYVDQgRmlsZXN5c3RlbSBJbml0aWFsaXphdGlvbioqCgpPa2F5LCBzbyB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBoZXJlIGlzIGRlZmluaXRlbHkgYEVYVDRfRlNgLiBNeSBmb2N1cyBpcyB6ZXJvZWQgaW4gb24gdGhlIGBleHQ0X2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZW4mIzM5O3QgbWlzc2VkIGFueSBvdGhlciBwb3RlbnRpYWxseSByZWxldmFudCBjb25maWd1cmF0aW9ucywgYnV0IGl0IGxvb2tzIGxpa2UgYEVYVDRfRlNgIGlzIHRoZSBvbmx5IG9uZSByZXF1aXJlZCwgd2hpY2ggaXMgZ3JlYXQuCgpUaGUgcmF0aW9uYWxlIGlzIGNsZWFyLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYnVnIGZpeCBzcGVjaWZpY2FsbHkgd2l0aGluIGBfX2V4dDRfZmlsbF9zdXBlcmAuIEl0IGNvbmNlcm5zIHRoZSBpbmNvcnJlY3QgdXNlIG9mIGBleHQ0X2dldF9yZXN1aWRgIHdoZXJlIGBleHQ0X2dldF9yZXNnaWRgIHNob3VsZCBoYXZlIGJlZW4gdXNlZCB0byBpbml0aWFsaXplIGBzYmktJmd0O3NfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgYWx0ZXJhdGlvbiB0byBob3cgdGhlIGV4dDQgZmlsZXN5c3RlbSBpbml0aWFsaXplcywgd2hpY2ggbWVhbnMgaXTigJlzIGFic29sdXRlbHkgcHJpbWUgdGVycml0b3J5IGZvciBmdXp6aW5nLiBXZSYjMzk7dmUgZ290IGEgdGFuZ2libGUgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGl0c2VsZiwgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZpbmRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy4KCkFscmlnaHQsIHRpbWUgdG8gcHJlcGFyZSB0aGUgZnV6emluZyBlbnZpcm9ubWVudC4gTGV0JiMzOTtzIGdldCB0aGUgbmVjZXNzYXJ5IGVsZW1lbnRzIHNldCB1cCBhbmQgZ2V0IHRoaXMgbW92aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAyMzo1NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7RVhUNF9GUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2V4dDRfZmlsbF9zdXBlciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjMwLjMyMTQ3MDYzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjQxMTYzMTk0MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX2V4dDRfZmlsbF9zdXBlcmAgd2hlcmUgYGV4dDRfZ2V0X3Jlc3VpZGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgZXh0NF9nZXRfcmVzZ2lkYCB0byBpbml0aWFsaXplIGBzYmktXFx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzAuMzIxNDc1OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg5MTYzNTk4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZGUyYTg0ZjExZjhhYTZhMWIzYmRlMjNlODBjOTkxYjhmOWUyMWJlMlxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMzo1NzoyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9mcy9leHQ0L3N1cGVyLmMgYi9mcy9leHQ0L3N1cGVyLmNcXG5pbmRleCA2YzE4YjVhZGZmY2EzMi4uYTE4NzExMmNhZmFmZGUgMTAwNjQ0XFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXFxuKysrIGIvZnMvZXh0NC9zdXBlci5jXFxuQEAgLTUzODAsNyArNTM4MCw3IEBAIHN0YXRpYyBpbnQgX19leHQ0X2ZpbGxfc3VwZXIoc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKVxcbiBcXHRleHQ0X3NldF9kZWZfb3B0cyhzYiwgZXMpO1xcbiBcXG4gXFx0c2JpLVxcdTAwM2VzX3Jlc3VpZCA9IG1ha2Vfa3VpZChcXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcXG4tXFx0c2JpLVxcdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcXG4rXFx0c2JpLVxcdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXNnaWQoZXMpKTtcXG4gXFx0c2JpLVxcdTAwM2VzX2NvbW1pdF9pbnRlcnZhbCA9IEpCRDJfREVGQVVMVF9NQVhfQ09NTUlUX0FHRSAqIEhaO1xcbiBcXHRzYmktXFx1MDAzZXNfbWluX2JhdGNoX3RpbWUgPSBFWFQ0X0RFRl9NSU5fQkFUQ0hfVElNRTtcXG4gXFx0c2JpLVxcdTAwM2VzX21heF9iYXRjaF90aW1lID0gRVhUNF9ERUZfTUFYX0JBVENIX1RJTUU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjMwLjkxMTQ0Nzg0OFoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjIzNTI2MzMyNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVxcdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGRlMmE4NGYxMWY4YWE2YTFiM2JkZTIzZTgwYzk5MWI4ZjllMjFiZTJcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgTW9uIEp1bCAyNyAyMzo1NzoyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2ZzL2V4dDQvc3VwZXIuYyBiL2ZzL2V4dDQvc3VwZXIuY1xuaW5kZXggNmMxOGI1YWRmZmNhMzIuLmExODcxMTJjYWZhZmRlIDEwMDY0NFxuLS0tIGEvZnMvZXh0NC9zdXBlci5jXG4rKysgYi9mcy9leHQ0L3N1cGVyLmNcbkBAIC01MzgwLDcgKzUzODAsNyBAQCBzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcbiBcdGV4dDRfc2V0X2RlZl9vcHRzKHNiLCBlcyk7XG4gXG4gXHRzYmktXHUwMDNlc19yZXN1aWQgPSBtYWtlX2t1aWQoXHUwMDI2aW5pdF91c2VyX25zLCBleHQ0X2dldF9yZXN1aWQoZXMpKTtcbi1cdHNiaS1cdTAwM2VzX3Jlc2dpZCA9IG1ha2Vfa2dpZChcdTAwMjZpbml0X3VzZXJfbnMsIGV4dDRfZ2V0X3Jlc3VpZChlcykpO1xuK1x0c2JpLVx1MDAzZXNfcmVzZ2lkID0gbWFrZV9rZ2lkKFx1MDAyNmluaXRfdXNlcl9ucywgZXh0NF9nZXRfcmVzZ2lkKGVzKSk7XG4gXHRzYmktXHUwMDNlc19jb21taXRfaW50ZXJ2YWwgPSBKQkQyX0RFRkFVTFRfTUFYX0NPTU1JVF9BR0UgKiBIWjtcbiBcdHNiaS1cdTAwM2VzX21pbl9iYXRjaF90aW1lID0gRVhUNF9ERUZfTUlOX0JBVENIX1RJTUU7XG4gXHRzYmktXHUwMDNlc19tYXhfYmF0Y2hfdGltZSA9IEVYVDRfREVGX01BWF9CQVRDSF9USU1FO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzAuOTExNDQ5NTY4WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3NDg2MTM3MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYW4gRXh0NCBCdWcgRml4KipcblxuT2theSwgc28gdGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBidWcgd2l0aGluIHRoZSBgX19leHQ0X2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLCB3aGljaCByZXNpZGVzIGluIGBmcy9leHQ0L3N1cGVyLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIGlzIHN3aXRjaGluZyBhIGNhbGwgdG8gYGV4dDRfZ2V0X3Jlc3VpZChlcylgIHRvIGBleHQ0X2dldF9yZXNnaWQoZXMpYC4gU2VlbXMgbGlrZSBhIHNpbXBsZSB0eXBvIG9yIG92ZXJzaWdodCwgYnV0IHRoaXMgZnVuZGFtZW50YWxseSBhbHRlcnMgaG93IHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6ZXPigJRzcGVjaWZpY2FsbHkgcmVnYXJkaW5nIHJlc291cmNlIGdyb3VwIG93bmVyc2hpcC4gVGhpcyBkZWZpbml0ZWx5IHdhcnJhbnRzIHRob3JvdWdoIGZ1enppbmc7IGEgc3VidGxlIGNoYW5nZSBsaWtlIHRoaXMgY2FuIHNvbWV0aW1lcyBleHBvc2UgdW5leHBlY3RlZCBlZGdlIGNhc2VzLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgZGV0YWlscyBmb3IgYSBwcm9wZXIgYXNzZXNzbWVudC4gVGhlIGZ1bmN0aW9uIGluIHF1ZXN0aW9uIGlzIGNsZWFybHkgYF9fZXh0NF9maWxsX3N1cGVyYC4gVGltZSB0byBjaGVjayBmb3IgdGhlIHJlbGV2YW50IGNvbmZpZyBvcHRpb25zLiBBaGEsIGBFWFQ0X0ZTYCDigJMgdGhhdCdzIHRoZSBvbmUuIFxuXG5Ob3csIEknbGwgbmVlZCB0byB2ZXJpZnkgdGhhdCBgX19leHQ0X2ZpbGxfc3VwZXJgIGlzIGluZGVlZCB0aGUgdGFyZ2V0IGFuZCB0aGF0IGBFWFQ0X0ZTYCBpcyB0aGUgY29ycmVjdCBjb25maWd1cmF0aW9uIG9wdGlvbi4gR290dGEgbWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbGwgdGhlIHBpZWNlcyBvZiB0aGUgcHV6emxlIHJpZ2h0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTUxLCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzUuMDg2MzEzNzk4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYyMzM3NTU5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fZXh0NF9maWxsX3N1cGVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL2V4dDQvc3VwZXIuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9leHQ0L3N1cGVyLmM9NTM0Mj1zdGF0aWMgYm9vbCBleHQ0X2lzX3N0cmlwZV9pbmNvbXBhdGlibGUoc3RydWN0IHN1cGVyX2Jsb2NrICpzYiwgdW5zaWduZWQgbG9uZyBzdHJpcGUpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTM0OC1cXG5mcy9leHQ0L3N1cGVyLmM6NTM0OTpzdGF0aWMgaW50IF9fZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBmc19jb250ZXh0ICpmYywgc3RydWN0IHN1cGVyX2Jsb2NrICpzYilcXG5mcy9leHQ0L3N1cGVyLmMtNTM1MC17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9NTgyNz1zdGF0aWMgaW50IGV4dDRfZmlsbF9zdXBlcihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiLCBzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTg0Ni1cXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcXHRyZXQgPSBfX2V4dDRfZmlsbF9zdXBlcihmYywgc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01ODQ4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1NzozNS4xNDg2NTgzMTdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMzk0ODg5Nzc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkV4YW1pbmluZyB0aGUgZXh0NCBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBgX19leHQ0X2ZpbGxfc3VwZXJgIGZ1bmN0aW9uLiBUaGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBpdCdzIGRlY2xhcmVkIGBzdGF0aWNgLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGEgcXVlc3Rpb246IHdoYXQncyB0aGUgbm9uLXN0YXRpYyBjYWxsZXIgdGhhdCdzIGFjdHVhbGx5ICp1c2luZyogaXQ/IElzIGl0IGBleHQ0X2ZpbGxfc3VwZXJgIGl0c2VsZiwgb3IgaXMgaXQgYGV4dDRfZ2V0X3RyZWVgPyBNeSBndXQgc2F5cyBpdCdzIHByb2JhYmx5IGBleHQ0X2ZpbGxfc3VwZXJgIGFjdGluZyBhcyB0aGUgcHVibGljLWZhY2luZyBlbnRyeSBwb2ludCwgYW5kIGBfX2V4dDRfZmlsbF9zdXBlcmAgaGFuZGxlcyB0aGUgaW50ZXJuYWwgZGV0YWlscywgYnV0IGxldCdzIG5vdCBhc3N1bWUgYW55dGhpbmcuIFRoZSBiZXN0IG1vdmUgaXMgdG8gZHJpbGwgZG93biBhbmQgY29uZmlybS4gTGV0IG1lIGp1c3QgcXVpY2tseSB0cmFjZSB0aGUgdXNhZ2Ugb2YgYGV4dDRfZmlsbF9zdXBlcmAgdG8gc2VlIGV4YWN0bHkgaG93IGFuZCB3aGVyZSBgX19leHQ0X2ZpbGxfc3VwZXJgIGdldHMgaW52b2tlZC4gVGltZSB0byBkaXZlIGludG8gdGhlIGNvZGUuLi4gSSdsbCBjaGVjayBgZXh0NF9maWxsX3N1cGVyYCBmaXJzdCwgc2VlIHdoYXQgdGhhdCByZXZlYWxzLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODE2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6MzguNTQzNTUwNzM0WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5NDA1NDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfZmlsbF9zdXBlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9zdXBlci5jPTUzNDI9c3RhdGljIGJvb2wgZXh0NF9pc19zdHJpcGVfaW5jb21wYXRpYmxlKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHVuc2lnbmVkIGxvbmcgc3RyaXBlKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jLTUzNDgtXFxuZnMvZXh0NC9zdXBlci5jOjUzNDk6c3RhdGljIGludCBfX2V4dDRfZmlsbF9zdXBlcihzdHJ1Y3QgZnNfY29udGV4dCAqZmMsIHN0cnVjdCBzdXBlcl9ibG9jayAqc2IpXFxuZnMvZXh0NC9zdXBlci5jLTUzNTAte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTU3NjY9ZmFpbGVkX21vdW50ODogX19tYXliZV91bnVzZWRcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01ODI2LVxcbmZzL2V4dDQvc3VwZXIuYzo1ODI3OnN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9leHQ0L3N1cGVyLmMtNTgyOC17XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtNTg0Ni1cXG5mcy9leHQ0L3N1cGVyLmM6NTg0NzpcXHRyZXQgPSBfX2V4dDRfZmlsbF9zdXBlcihmYywgc2IpO1xcbmZzL2V4dDQvc3VwZXIuYy01ODQ4LVxcdGlmIChyZXQgXFx1MDAzYyAwKVxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTU4Nzc9c3RhdGljIGludCBleHQ0X2dldF90cmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG5mcy9leHQ0L3N1cGVyLmMtNTg3OC17XFxuZnMvZXh0NC9zdXBlci5jOjU4Nzk6XFx0cmV0dXJuIGdldF90cmVlX2JkZXYoZmMsIGV4dDRfZmlsbF9zdXBlcik7XFxuZnMvZXh0NC9zdXBlci5jLTU4ODAtfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1NzozOC42MDI5NjgxMTNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUzODA3MDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGlnZ2luZyBpbnRvIGV4dDQncyBTdXBlcmJsb2NrIE1vdW50aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgaG93IHRoZSBleHQ0IGZpbGVzeXN0ZW0gZ2V0cyBtb3VudGVkLiBJIHNlZSBgZXh0NF9maWxsX3N1cGVyYCBhbmQgSSByZWNhbGwgaXQncyBhIHN0YXRpYyBmdW5jdGlvbi4gVGhhdCdzIG5vdCB0aGUgbWFpbiBlbnRyeSBwb2ludCB0aG91Z2gsIHJpZ2h0PyBNeSBicmFpbiBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGUgbm9uLXN0YXRpYyBmdW5jdGlvbiwgYGV4dDRfZ2V0X3RyZWVgLiBCdXQgd2FpdCBhIG1pbnV0ZS4uLiBpcyBgZXh0NF9nZXRfdHJlZWAgKmFsc28qIHN0YXRpYz8gVGhhdCBkb2Vzbid0IHNlZW0gcmlnaHQuIEl0J3MgdGltZSB0byBjb25maXJtLiBMZXQncyBkaWcgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdCBhc3N1bXB0aW9uLiBHb3R0YSBtYWtlIHN1cmUgSSdtIG5vdCBtaXNzaW5nIHNvbWV0aGluZyBmdW5kYW1lbnRhbCBhYm91dCB0aGUgYXJjaGl0ZWN0dXJlIGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTUsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1Nzo0MS44NTY3NzcwNTNaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDc0MTM1MzMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImV4dDRfZ2V0X3RyZWVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9zdXBlci5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvc3VwZXIuYz05MT1zdGF0aWMgaW50IGV4dDRfcGFyc2VfcGFyYW0oc3RydWN0IGZzX2NvbnRleHQgKmZjLCBzdHJ1Y3QgZnNfcGFyYW1ldGVyICpwYXJhbSk7XFxuZnMvZXh0NC9zdXBlci5jOjkyOnN0YXRpYyBpbnQgZXh0NF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpO1xcbmZzL2V4dDQvc3VwZXIuYy05My1zdGF0aWMgaW50IGV4dDRfcmVjb25maWd1cmUoc3RydWN0IGZzX2NvbnRleHQgKmZjKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMjU9c3RhdGljIGNvbnN0IHN0cnVjdCBmc19jb250ZXh0X29wZXJhdGlvbnMgZXh0NF9jb250ZXh0X29wcyA9IHtcXG5mcy9leHQ0L3N1cGVyLmMtMTI2LVxcdC5wYXJzZV9wYXJhbVxcdD0gZXh0NF9wYXJzZV9wYXJhbSxcXG5mcy9leHQ0L3N1cGVyLmM6MTI3OlxcdC5nZXRfdHJlZVxcdD0gZXh0NF9nZXRfdHJlZSxcXG5mcy9leHQ0L3N1cGVyLmMtMTI4LVxcdC5yZWNvbmZpZ3VyZVxcdD0gZXh0NF9yZWNvbmZpZ3VyZSxcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz01ODI3PXN0YXRpYyBpbnQgZXh0NF9maWxsX3N1cGVyKHN0cnVjdCBzdXBlcl9ibG9jayAqc2IsIHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy01ODc2LVxcbmZzL2V4dDQvc3VwZXIuYzo1ODc3OnN0YXRpYyBpbnQgZXh0NF9nZXRfdHJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvZXh0NC9zdXBlci5jLTU4Nzgte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QyMzo1Nzo0Mi4zMzA5MTgyNDNaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyOTMwMzg0NTA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGV4dDQgRmlsZSBTeXN0ZW0gSW5pdGlhbGl6YXRpb24qKlxuXG5SaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGV4dDQgY29kZSBhZ2Fpbi4gTGV0J3Mgc2VlLi4uIGBleHQ0X2dldF90cmVlYC4uLiBTdGF0aWMsIGh1aD8gT2theSwgdGhhdCdzIGludGVyZXN0aW5nLiBNYWtlcyBzZW5zZSBmb3IgaW50ZXJuYWwgdXNlIHdpdGhpbiB0aGUgbW9kdWxlLCB0eXBpY2FsbHkuIEl0J3MgbGlrZWx5IGludm9sdmVkIGluIGdldHRpbmcgdGhlIGZpbGVzeXN0ZW0gdHJlZSBzdHJ1Y3R1cmUgc29tZWhvdy4gTm93LCBsZXQgbWUgc2VlLi4uIHdoYXQncyB0aGUgcm9sZSBvZiBgZXh0NF9pbml0X2ZzX2NvbnRleHRgIGluIGFsbCBvZiB0aGlzPyBUaGlzIGZ1bmN0aW9uIHNvdW5kcyBsaWtlIGl0J3Mgd2hlcmUgdGhlIGZpbGUgc3lzdGVtIGNvbnRleHQgaXMgaW5pdGlhbGl6ZWQuIElzIGl0IGFsc28gc3RhdGljPyBJcyBpdCBsaW5rZWQgdG8gdGhlIHByZXZpb3VzIGZ1bmN0aW9uPyBIb3cgZG9lcyB0aGUgaW5pdGlhbGlzYXRpb24gcHJvY2VzcyBsaW5rIHdpdGggdGhlIGV4dHJhY3Rpb24gb2YgdGhlIGZpbGVzeXN0ZW0gbWV0YWRhdGE/IEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZmlsZXN5c3RlbSB0cmVlIGludGVyYWN0cyB3aXRoIHRoZSBmaWxlIHN5c3RlbSBjb250ZXh0LiBUaGlua2luZyB0aGF0IEkgY2FuIHByb2JhYmx5IHdvcmsgb3V0IHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgZXh0NF9nZXRfdHJlZWAgYW5kIGBleHQ0X2luaXRfZnNfY29udGV4dGAgdG8gdW5kZXJzdGFuZCB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2Vzcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NDA1MiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ1LjI2MTMwNTAyWiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjgyMjU0OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJleHQ0X2luaXRfZnNfY29udGV4dFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJmcy9leHQ0L3N1cGVyLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZnMvZXh0NC9zdXBlci5jPTk0PXN0YXRpYyB2b2lkIGV4dDRfZmNfZnJlZShzdHJ1Y3QgZnNfY29udGV4dCAqZmMpO1xcbmZzL2V4dDQvc3VwZXIuYzo5NTpzdGF0aWMgaW50IGV4dDRfaW5pdF9mc19jb250ZXh0KHN0cnVjdCBmc19jb250ZXh0ICpmYyk7XFxuZnMvZXh0NC9zdXBlci5jLTk2LXN0YXRpYyB2b2lkIGV4dDRfa2lsbF9zYihzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiKTtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYz0xMzQ9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGV4dDJfZnNfdHlwZSA9IHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0xMzYtXFx0Lm5hbWVcXHRcXHRcXHQ9IFxcXCJleHQyXFxcIixcXG5mcy9leHQ0L3N1cGVyLmM6MTM3OlxcdC5pbml0X2ZzX2NvbnRleHRcXHQ9IGV4dDRfaW5pdF9mc19jb250ZXh0LFxcbmZzL2V4dDQvc3VwZXIuYy0xMzgtXFx0LnBhcmFtZXRlcnNcXHRcXHQ9IGV4dDRfcGFyYW1fc3BlY3MsXFxuLS1cXG5mcy9leHQ0L3N1cGVyLmM9MTUwPXN0YXRpYyBzdHJ1Y3QgZmlsZV9zeXN0ZW1fdHlwZSBleHQzX2ZzX3R5cGUgPSB7XFxuLS1cXG5mcy9leHQ0L3N1cGVyLmMtMTUyLVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiZXh0M1xcXCIsXFxuZnMvZXh0NC9zdXBlci5jOjE1MzpcXHQuaW5pdF9mc19jb250ZXh0XFx0PSBleHQ0X2luaXRfZnNfY29udGV4dCxcXG5mcy9leHQ0L3N1cGVyLmMtMTU0LVxcdC5wYXJhbWV0ZXJzXFx0XFx0PSBleHQ0X3BhcmFtX3NwZWNzLFxcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTIwMzY9c3RhdGljIHZvaWQgZXh0NF9mY19mcmVlKHN0cnVjdCBmc19jb250ZXh0ICpmYylcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy0yMDUwLVxcbmZzL2V4dDQvc3VwZXIuYzoyMDUxOmludCBleHQ0X2luaXRfZnNfY29udGV4dChzdHJ1Y3QgZnNfY29udGV4dCAqZmMpXFxuZnMvZXh0NC9zdXBlci5jLTIwNTIte1xcbi0tXFxuZnMvZXh0NC9zdXBlci5jPTc1MjU9c3RhdGljIHN0cnVjdCBmaWxlX3N5c3RlbV90eXBlIGV4dDRfZnNfdHlwZSA9IHtcXG4tLVxcbmZzL2V4dDQvc3VwZXIuYy03NTI3LVxcdC5uYW1lXFx0XFx0XFx0PSBcXFwiZXh0NFxcXCIsXFxuZnMvZXh0NC9zdXBlci5jOjc1Mjg6XFx0LmluaXRfZnNfY29udGV4dFxcdD0gZXh0NF9pbml0X2ZzX2NvbnRleHQsXFxuZnMvZXh0NC9zdXBlci5jLTc1MjktXFx0LnBhcmFtZXRlcnNcXHRcXHQ9IGV4dDRfcGFyYW1fc3BlY3MsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ1LjMyODEzNjk2OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE2OTUyNTU4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgZXh0NCBGaWxlc3lzdGVtIEluaXRpYWxpemF0aW9uKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBGaXJzdCwgYGV4dDRfaW5pdF9mc19jb250ZXh0YCBpc24ndCBzdGF0aWMsIHdoaWNoIG1lYW5zIGl0IGNhbiBiZSBjYWxsZWQgZnJvbSBvdXRzaWRlIHRoZSBmaWxlLiBCdXQgd2FpdCwgaXQncyBub3QgdGhlIG1vdW50IGZ1bmN0aW9uIGl0c2VsZjsgaXQncyBqdXN0IHNldHRpbmcgdXAgdGhlIGNvbnRleHQsIGdvdCBpdC4gVGhlIHJlYWwgbW91bnRpbmcgb3BlcmF0aW9uIGhhcHBlbnMgdGhyb3VnaCBgZXh0NF9nZXRfdHJlZWAsIGludm9rZWQgdGhyb3VnaCB0aGUgVkZTIGBnZXRfdHJlZWAgb3BlcmF0aW9uLlxuXG5Ob3csIHRoaW5ncyBnZXQgaW50ZXJlc3RpbmcuIEJvdGggYGV4dDRfZmlsbF9zdXBlcmAgYW5kIGBfX2V4dDRfZmlsbF9zdXBlcmAgYXJlIHN0YXRpYywgc28gdGhleSAqY291bGQqIHBvdGVudGlhbGx5IGJlIGlubGluZWQsIG9yIG5vdC4uLiBIb3dldmVyLCBgZXh0NF9maWxsX3N1cGVyYCBpcyBiZWluZyBwYXNzZWQgYXMgYSBmdW5jdGlvbiBwb2ludGVyIHRvIGBnZXRfdHJlZV9iZGV2YDogYGdldF90cmVlX2JkZXYoZmMsIGV4dDRfZmlsbF9zdXBlcik7YC4gQmVjYXVzZSBvZiB0aGlzIHVzYWdlLCBgZXh0NF9maWxsX3N1cGVyYCBjYW5ub3QgYmUgaW5saW5lZCBzaW5jZSBpdCBoYXMgaXRzIG93biBhZGRyZXNzIHdoaWNoIGlzIGJlaW5nIHN0b3JlZC4gVGhpcyBtZWFucyBgZXh0NF9maWxsX3N1cGVyYCBsb29rcyB0byBiZSBhIGdvb2QgdGFyZ2V0IGZvciBmdXJ0aGVyIGFuYWx5c2lzLlxuXG5MZXQgbWUgdGFrZSBhIGxvb2sgYXQgYEVYVDRfRlNgIGluIGBmcy9leHQ0L0tjb25maWdgIHRvIHNlZSB0aGUgZmlsZXN5c3RlbSBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0ODc0LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ5LjY0NTA5MTU4NloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYwNTgyODksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEVYVDRfRlNcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvZXh0NC9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL2V4dDQvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbmZzL2V4dDQvS2NvbmZpZzoyOmNvbmZpZyBFWFQ0X0ZTXFxuZnMvZXh0NC9LY29uZmlnLTMtXFx0dHJpc3RhdGUgXFxcIlRoZSBFeHRlbmRlZCA0IChleHQ0KSBmaWxlc3lzdGVtXFxcIlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnPTM1PWNvbmZpZyBFWFQ0X1VTRV9GT1JfRVhUMlxcbi0tXFxuZnMvZXh0NC9LY29uZmlnLTQ1LVxcbmZzL2V4dDQvS2NvbmZpZzo0Njpjb25maWcgRVhUNF9GU19QT1NJWF9BQ0xcXG5mcy9leHQ0L0tjb25maWctNDctXFx0Ym9vbCBcXFwiRXh0NCBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1xcXCJcXG4tLVxcbmZzL2V4dDQvS2NvbmZpZy01NS1cXG5mcy9leHQ0L0tjb25maWc6NTY6Y29uZmlnIEVYVDRfRlNfU0VDVVJJVFlcXG5mcy9leHQ0L0tjb25maWctNTctXFx0Ym9vbCBcXFwiRXh0NCBTZWN1cml0eSBMYWJlbHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDIzOjU3OjQ5LjcxMTE1NDkwNVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQwMTA3NDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgZm9yIEVYVDQgRmlsZXN5c3RlbSBJbml0aWFsaXphdGlvbioqXG5cbk9rYXksIHNvIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9uIGhlcmUgaXMgZGVmaW5pdGVseSBgRVhUNF9GU2AuIE15IGZvY3VzIGlzIHplcm9lZCBpbiBvbiB0aGUgYGV4dDRfZmlsbF9zdXBlcmAgZnVuY3Rpb24uIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlbid0IG1pc3NlZCBhbnkgb3RoZXIgcG90ZW50aWFsbHkgcmVsZXZhbnQgY29uZmlndXJhdGlvbnMsIGJ1dCBpdCBsb29rcyBsaWtlIGBFWFQ0X0ZTYCBpcyB0aGUgb25seSBvbmUgcmVxdWlyZWQsIHdoaWNoIGlzIGdyZWF0LlxuXG5UaGUgcmF0aW9uYWxlIGlzIGNsZWFyLiBXZSdyZSBkZWFsaW5nIHdpdGggYSBidWcgZml4IHNwZWNpZmljYWxseSB3aXRoaW4gYF9fZXh0NF9maWxsX3N1cGVyYC4gSXQgY29uY2VybnMgdGhlIGluY29ycmVjdCB1c2Ugb2YgYGV4dDRfZ2V0X3Jlc3VpZGAgd2hlcmUgYGV4dDRfZ2V0X3Jlc2dpZGAgc2hvdWxkIGhhdmUgYmVlbiB1c2VkIHRvIGluaXRpYWxpemUgYHNiaS1cdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGFsdGVyYXRpb24gdG8gaG93IHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6ZXMsIHdoaWNoIG1lYW5zIGl04oCZcyBhYnNvbHV0ZWx5IHByaW1lIHRlcnJpdG9yeSBmb3IgZnV6emluZy4gV2UndmUgZ290IGEgdGFuZ2libGUgY2hhbmdlIGluIHRoZSBpbml0aWFsaXphdGlvbiBwYXRoIGl0c2VsZiwgbWFraW5nIGl0IGEgZ29vZCB0YXJnZXQgZm9yIGZpbmRpbmcgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdGllcyBvciByZWdyZXNzaW9ucy5cblxuQWxyaWdodCwgdGltZSB0byBwcmVwYXJlIHRoZSBmdXp6aW5nIGVudmlyb25tZW50LiBMZXQncyBnZXQgdGhlIG5lY2Vzc2FyeSBlbGVtZW50cyBzZXQgdXAgYW5kIGdldCB0aGlzIG1vdmluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTYwNCwiT3V0cHV0VG9rZW5zIjoxMTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMjM6NTc6NTQuMzUxMjY0NTc1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODY1MTE5NDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkVYVDRfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJleHQ0X2ZpbGxfc3VwZXJcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGJ1ZyBpbiBgX19leHQ0X2ZpbGxfc3VwZXJgIHdoZXJlIGBleHQ0X2dldF9yZXN1aWRgIHdhcyBpbmNvcnJlY3RseSB1c2VkIGluc3RlYWQgb2YgYGV4dDRfZ2V0X3Jlc2dpZGAgdG8gaW5pdGlhbGl6ZSBgc2JpLVxcdTAwM2VzX3Jlc2dpZGAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgZXh0NCBmaWxlc3lzdGVtIGluaXRpYWxpemF0aW9uIHBhdGggYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiRVhUNF9GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImV4dDRfZmlsbF9zdXBlclwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgYnVnIGluIGBfX2V4dDRfZmlsbF9zdXBlcmAgd2hlcmUgYGV4dDRfZ2V0X3Jlc3VpZGAgd2FzIGluY29ycmVjdGx5IHVzZWQgaW5zdGVhZCBvZiBgZXh0NF9nZXRfcmVzZ2lkYCB0byBpbml0aWFsaXplIGBzYmktXFx1MDAzZXNfcmVzZ2lkYC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBleHQ0IGZpbGVzeXN0ZW0gaW5pdGlhbGl6YXRpb24gcGF0aCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflow4kstc[1] Phase: Succeeded StartedAt: 2026-07-27 23:58:05 +0000 UTC FinishedAt: 2026-07-27 23:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 23:58:05 +0000 UTC FinishedAt: 2026-07-27 23:58:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2] Phase: Succeeded StartedAt: 2026-07-27 23:58:05 +0000 UTC FinishedAt: 2026-07-28 04:22:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-27 23:58:05 +0000 UTC FinishedAt: 2026-07-28 04:22:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-27 23:58:05 +0000 UTC FinishedAt: 2026-07-27 23:58:15 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-27 23:58:05 +0000 UTC FinishedAt: 2026-07-27 23:58:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow4kstc/series-workflow4kstc-convert-artifact-1143978354/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-27 23:58:15 +0000 UTC FinishedAt: 2026-07-28 00:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-27 23:58:15 +0000 UTC FinishedAt: 2026-07-28 00:30:56 +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:*da51e10b-f5fd-4a87-b427-b80cf6874ee0,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-workflow4kstc/series-workflow4kstc-convert-artifact-1143978354/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": "93069ecb-73fb-46ce-9393-f8d34191cf98", "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-workflow4kstc/series-workflow4kstc-build-action-3542171888/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-27 23:58:15 +0000 UTC FinishedAt: 2026-07-28 00:30:46 +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:*da51e10b-f5fd-4a87-b427-b80cf6874ee0,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-workflow4kstc/series-workflow4kstc-convert-artifact-1143978354/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": "93069ecb-73fb-46ce-9393-f8d34191cf98", "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-workflow4kstc/series-workflow4kstc-build-action-3542171888/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-28 00:30:56 +0000 UTC FinishedAt: 2026-07-28 00:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-28 00:30:56 +0000 UTC FinishedAt: 2026-07-28 00:30:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-28 00:30:56 +0000 UTC FinishedAt: 2026-07-28 00:31:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-28 00:30:56 +0000 UTC FinishedAt: 2026-07-28 00:31:02 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflow4kstc/series-workflow4kstc-convert-artifact-436459149/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-28 00:31:06 +0000 UTC FinishedAt: 2026-07-28 00:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-28 00:31:06 +0000 UTC FinishedAt: 2026-07-28 00:32:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*93069ecb-73fb-46ce-9393-f8d34191cf98,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-workflow4kstc/series-workflow4kstc-build-action-3542171888/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-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-28 00:32:55 +0000 UTC FinishedAt: 2026-07-28 00:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-28 00:32:55 +0000 UTC FinishedAt: 2026-07-28 00:32:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-28 00:32:55 +0000 UTC FinishedAt: 2026-07-28 01:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-28 00:32:55 +0000 UTC FinishedAt: 2026-07-28 01:17:10 +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:*da51e10b-f5fd-4a87-b427-b80cf6874ee0,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-workflow4kstc/series-workflow4kstc-convert-artifact-436459149/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": "26b2bd5f-6da4-4890-96ab-5cdbf2f64a5a", "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-workflow4kstc/series-workflow4kstc-build-action-2889114729/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-28 00:32:55 +0000 UTC FinishedAt: 2026-07-28 01:17:00 +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:*da51e10b-f5fd-4a87-b427-b80cf6874ee0,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-workflow4kstc/series-workflow4kstc-convert-artifact-436459149/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": "26b2bd5f-6da4-4890-96ab-5cdbf2f64a5a", "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-workflow4kstc/series-workflow4kstc-build-action-2889114729/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-28 01:17:10 +0000 UTC FinishedAt: 2026-07-28 01:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-28 01:17:10 +0000 UTC FinishedAt: 2026-07-28 01:17:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-28 01:17:10 +0000 UTC FinishedAt: 2026-07-28 01:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-28 01:17:10 +0000 UTC FinishedAt: 2026-07-28 01:19:13 +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:*26b2bd5f-6da4-4890-96ab-5cdbf2f64a5a,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-workflow4kstc/series-workflow4kstc-build-action-2889114729/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-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 04:22:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 04:22:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*93069ecb-73fb-46ce-9393-f8d34191cf98,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26b2bd5f-6da4-4890-96ab-5cdbf2f64a5a,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-workflow4kstc/series-workflow4kstc-build-action-3542171888/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-workflow4kstc/series-workflow4kstc-build-action-2889114729/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 01:19:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 01:19:28 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow4kstc/series-workflow4kstc-convert-artifact-3461561202/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 01:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 01:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-28 01:19:23 +0000 UTC FinishedAt: 2026-07-28 01:19:23 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-28 01:19:33 +0000 UTC FinishedAt: 2026-07-28 04:22:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflow4kstc[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ext4_fill_super"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97e211ad1a34a5a979558a037619b9e633ca8620","config_name":"upstream-apparmor-kasan.config","enable_configs":["EXT4_FS"],"series_id":"d6ce22c8-15de-4f9d-a958-bfea35389d71","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-28 01:19:33 +0000 UTC FinishedAt: 2026-07-28 04:22:36 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*93069ecb-73fb-46ce-9393-f8d34191cf98,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*26b2bd5f-6da4-4890-96ab-5cdbf2f64a5a,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-workflow4kstc/series-workflow4kstc-build-action-3542171888/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-workflow4kstc/series-workflow4kstc-build-action-2889114729/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-workflow4kstc/series-workflow4kstc-convert-artifact-3461561202/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,}