Name: series-workflow49sxk Phase: Succeeded StartedAt: 2026-07-23 02:26:01 +0000 UTC FinishedAt: 2026-07-23 06:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[0] Phase: Succeeded StartedAt: 2026-07-23 02:26:01 +0000 UTC FinishedAt: 2026-07-23 02:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[0].run-triage Phase: Succeeded StartedAt: 2026-07-23 02:26:01 +0000 UTC FinishedAt: 2026-07-23 02:47:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU" ], "series_id": "e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fou_create", "fou_nl_add_doit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmb3VfY3JlYXRlJiMzNDssCiAgICAmIzM0O2ZvdV9ubF9hZGRfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgZm91X2NyZWF0ZWAgYnkgdXNpbmcgYGtmcmVlX3JjdWAgYW5kIHJlb3JkZXJpbmcgdGhlIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGT1UgKEZvbyBvdmVyIFVEUCkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZDZjZTI0ZDczZjZjZTFlZmUzMjdmYzMxMjFjMGY5MmI1MThhM2M0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDI6NDc6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZm91X2NvcmUuYyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbmluZGV4IDg2NWJkNzIwNTEyMmQyLi5hYjA5ZGZjZGVjYmQ1OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ZvdV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbkBAIC02MjksOSAmIzQzOzYyOSw5IEBAIHN0YXRpYyBpbnQgZm91X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmb3VfY2ZnICpjZmcsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdGtmcmVlKGZvdSk7XG4gXHRpZiAoc29jaylcbiBcdFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc29jay1cdTAwM2Vzayk7XG4mIzQzO1x0a2ZyZWVfcmN1KGZvdSwgcmN1KTtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm91X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtmb3VfbmxfYWRkX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYGZvdV9jcmVhdGVgIGJ5IHVzaW5nIGBrZnJlZV9yY3VgIGFuZCByZW9yZGVyaW5nIHRoZSBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRk9VIChGb28gb3ZlciBVRFApIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzZDZjZTI0ZDczZjZjZTFlZmUzMjdmYzMxMjFjMGY5MmI1MThhM2M0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMDI6NDc6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuYwppbmRleCA4NjViZDcyMDUxMjJkMi4uYWIwOWRmY2RlY2JkNTkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZvdV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZm91X2NvcmUuYwpAQCAtNjI5LDkgJiM0Mzs2MjksOSBAQCBzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLAogCXJldHVybiAwOwogCiBlcnJvcjoKLQlrZnJlZShmb3UpOwogCWlmIChzb2NrKQogCQl1ZHBfdHVubmVsX3NvY2tfcmVsZWFzZShzb2NrLSZndDtzayk7CiYjNDM7CWtmcmVlX3JjdShmb3UsIHJjdSk7CiAKIAlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBOZXR3b3JrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvaXB2NC9mb3VfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSByZWZpbmluZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYGZvdV9jcmVhdGVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhleSYjMzk7cmUgbW9kaWZ5aW5nIHRoZSBlcnJvciBwYXRoLiYjMzQ7IEkgbm90aWNlIHRoZSBjaGFuZ2U6IGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHN3YXBwaW5nIHRoZSBvcmRlciBvZiBmcmVlcyBpbiB0aGUgYGVycm9yOmAgbGFiZWwuIEl0IHVzZWQgdG8gZnJlZSBgZm91YCBkaXJlY3RseS4gTm93LCB0aGVyZSYjMzk7cyBhIGNvbmRpdGlvbmFsIHJlbGVhc2Ugb2YgdGhlIHNvY2tldCwgdGhlbiBgZm91YCBpcyBmcmVlZCB1c2luZyBga2ZyZWVfcmN1YC4KCldhaXQgYSBtaW51dGUsIGBmb3VfY3JlYXRlYCAqa3phbGxvYyYjMzk7cyogYGZvdWAuIFNvLCB0aGV5JiMzOTtyZSBpbml0aWFsaXppbmcgdGhlIG1lbW9yeSBhdCBhbGxvY2F0aW9uLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSBmcmVlaW5nIHN0cmF0ZWd5LiBga2ZyZWVfcmN1YCBpbXBsaWVzIGEgbmVlZCBmb3IgYSBncmFjZSBwZXJpb2QsIGxpa2VseSBkdWUgdG8gUkNVLXByb3RlY3RlZCBkYXRhLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gTGV0IG1lIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhlIGNvbnRleHQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIGF0IGBmb3VfY3JlYXRlYCBpdHNlbGYsIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLiBJJiMzOTtsbCBnbyBjaGVjayB0aGF0IGZ1bmN0aW9uIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3VfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9mb3VfY29yZS5jPTU1OT1zdGF0aWMgdm9pZCBmb3VfcmVsZWFzZShzdHJ1Y3QgZm91ICpmb3UpXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy01NjUtXG5uZXQvaXB2NC9mb3VfY29yZS5jOjU2NjpzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxubmV0L2lwdjQvZm91X2NvcmUuYy01NjctXHRcdCAgICAgIHN0cnVjdCBzb2NrZXQgKipzb2NrcClcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTc1MT1pbnQgZm91X25sX2FkZF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy03NjAtXG5uZXQvaXB2NC9mb3VfY29yZS5jOjc2MTpcdHJldHVybiBmb3VfY3JlYXRlKG5ldCwgXHUwMDI2Y2ZnLCBOVUxMKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNzYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGBmb3VfY3JlYXRlYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGZvdV9jcmVhdGVgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGxpdmVzIHdpdGhpbiBgbmV0L2lwdjQvZm91X2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCB0aGlzIGlzIHdoZXJlIHRoZSAqbWFnaWMqIGhhcHBlbnMgZm9yIGNyZWF0aW5nIGEgRk9VIChVRFAvSVB2NCBlbmNhcHN1bGF0aW9uKSB0dW5uZWwgaW5zdGFuY2UuJiMzNDsgSSB3YW50IHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIHRoZSBjb3JlIGxvZ2ljIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCwgaG93IHRoZSBzb2NrZXQgb3B0aW9ucyBhcmUgaGFuZGxlZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgc2VjdGlvbiB0aGF0IGRlYWxzIHdpdGggYWxsb2NhdGluZyBhbmQgbGlua2luZyB0aGUgRk9VIGRldmljZSB0byB0aGUgYXNzb2NpYXRlZCBuZXQgbmFtZXNwYWNlLiBJIGV4cGVjdCB0byBiZSB0cmFjaW5nIGNhbGxzIGludG8gdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYXMgd2VsbCwgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIHJlc291cmNlIGFsbG9jYXRpb24gZmFpbHVyZXMgb3IgY29uZmxpY3RpbmcgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgbG9ja2luZyBtZWNoYW5pc21zIGFyZSBpbiBwbGF5LCB0b28sIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHRocmVhZC1zYWZlIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJhY2UgY29uZGl0aW9ucy4gRmluYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaW50ZXJhY3Rpb24gd2l0aCBhbnkgb3RoZXIga2VybmVsIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZvdV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjY6XHRzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxuIDU2NzpcdFx0XHQgICAgICBzdHJ1Y3Qgc29ja2V0ICoqc29ja3ApXG4gNTY4Olx0e1xuIDU2OTpcdFx0c3RydWN0IHNvY2tldCAqc29jayA9IE5VTEw7XG4gNTcwOlx0XHRzdHJ1Y3QgZm91ICpmb3UgPSBOVUxMO1xuIDU3MTpcdFx0c3RydWN0IHNvY2sgKnNrO1xuIDU3MjpcdFx0c3RydWN0IHVkcF90dW5uZWxfc29ja19jZmcgdHVubmVsX2NmZztcbiA1NzM6XHRcdGludCBlcnI7XG4gNTc0Olx0XG4gNTc1Olx0XHQvKiBPcGVuIFVEUCBzb2NrZXQgKi9cbiA1NzY6XHRcdGVyciA9IHVkcF9zb2NrX2NyZWF0ZShuZXQsIFx1MDAyNmNmZy1cdTAwM2V1ZHBfY29uZmlnLCBcdTAwMjZzb2NrKTtcbiA1Nzc6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gNTc4Olx0XHRcdGdvdG8gZXJyb3I7XG4gNTc5Olx0XG4gNTgwOlx0XHQvKiBBbGxvY2F0ZSBGT1UgcG9ydCBzdHJ1Y3R1cmUgKi9cbiA1ODE6XHRcdGZvdSA9IGt6YWxsb2Nfb2JqKCpmb3UpO1xuIDU4MjpcdFx0aWYgKCFmb3UpIHtcbiA1ODM6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA1ODQ6XHRcdFx0Z290byBlcnJvcjtcbiA1ODU6XHRcdH1cbiA1ODY6XHRcbiA1ODc6XHRcdHNrID0gc29jay1cdTAwM2VzaztcbiA1ODg6XHRcbiA1ODk6XHRcdGZvdS1cdTAwM2Vwb3J0ID0gY2ZnLVx1MDAzZXVkcF9jb25maWcubG9jYWxfdWRwX3BvcnQ7XG4gNTkwOlx0XHRmb3UtXHUwMDNlZmFtaWx5ID0gY2ZnLVx1MDAzZXVkcF9jb25maWcuZmFtaWx5O1xuIDU5MTpcdFx0Zm91LVx1MDAzZWZsYWdzID0gY2ZnLVx1MDAzZWZsYWdzO1xuIDU5MjpcdFx0Zm91LVx1MDAzZXR5cGUgPSBjZmctXHUwMDNldHlwZTtcbiA1OTM6XHRcdGZvdS1cdTAwM2VzayA9IHNrO1xuIDU5NDpcdFxuIDU5NTpcdFx0bWVtc2V0KFx1MDAyNnR1bm5lbF9jZmcsIDAsIHNpemVvZih0dW5uZWxfY2ZnKSk7XG4gNTk2Olx0XHR0dW5uZWxfY2ZnLmVuY2FwX3R5cGUgPSAxO1xuIDU5NzpcdFx0dHVubmVsX2NmZy5za191c2VyX2RhdGEgPSBmb3U7XG4gNTk4Olx0XHR0dW5uZWxfY2ZnLmVuY2FwX2Rlc3Ryb3kgPSBOVUxMO1xuIDU5OTpcdFxuIDYwMDpcdFx0LyogSW5pdGlhbCBmb3IgZm91IHR5cGUgKi9cbiA2MDE6XHRcdHN3aXRjaCAoY2ZnLVx1MDAzZXR5cGUpIHtcbiA2MDI6XHRcdGNhc2UgRk9VX0VOQ0FQX0RJUkVDVDpcbiA2MDM6XHRcdFx0dHVubmVsX2NmZy5lbmNhcF9yY3YgPSBmb3VfdWRwX3JlY3Y7XG4gNjA0Olx0XHRcdHR1bm5lbF9jZmcuZ3JvX3JlY2VpdmUgPSBmb3VfZ3JvX3JlY2VpdmU7XG4gNjA1Olx0XHRcdHR1bm5lbF9jZmcuZ3JvX2NvbXBsZXRlID0gZm91X2dyb19jb21wbGV0ZTtcbiA2MDY6XHRcdFx0Zm91LVx1MDAzZXByb3RvY29sID0gY2ZnLVx1MDAzZXByb3RvY29sO1xuIDYwNzpcdFx0XHRicmVhaztcbiA2MDg6XHRcdGNhc2UgRk9VX0VOQ0FQX0dVRTpcbiA2MDk6XHRcdFx0dHVubmVsX2NmZy5lbmNhcF9yY3YgPSBndWVfdWRwX3JlY3Y7XG4gNjEwOlx0XHRcdHR1bm5lbF9jZmcuZ3JvX3JlY2VpdmUgPSBndWVfZ3JvX3JlY2VpdmU7XG4gNjExOlx0XHRcdHR1bm5lbF9jZmcuZ3JvX2NvbXBsZXRlID0gZ3VlX2dyb19jb21wbGV0ZTtcbiA2MTI6XHRcdFx0YnJlYWs7XG4gNjEzOlx0XHRkZWZhdWx0OlxuIDYxNDpcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIDYxNTpcdFx0XHRnb3RvIGVycm9yO1xuIDYxNjpcdFx0fVxuIDYxNzpcdFxuIDYxODpcdFx0c2V0dXBfdWRwX3R1bm5lbF9zb2NrKG5ldCwgc2ssIFx1MDAyNnR1bm5lbF9jZmcpO1xuIDYxOTpcdFxuIDYyMDpcdFx0c2stXHUwMDNlc2tfYWxsb2NhdGlvbiA9IEdGUF9BVE9NSUM7XG4gNjIxOlx0XG4gNjIyOlx0XHRlcnIgPSBmb3VfYWRkX3RvX3BvcnRfbGlzdChuZXQsIGZvdSwgY2ZnKTtcbiA2MjM6XHRcdGlmIChlcnIpXG4gNjI0Olx0XHRcdGdvdG8gZXJyb3I7XG4gNjI1Olx0XG4gNjI2Olx0XHRpZiAoc29ja3ApXG4gNjI3Olx0XHRcdCpzb2NrcCA9IHNvY2s7XG4gNjI4Olx0XG4gNjI5Olx0XHRyZXR1cm4gMDtcbiA2MzA6XHRcbiA2MzE6XHRlcnJvcjpcbiA2MzI6XHRcdGlmIChzb2NrKVxuIDYzMzpcdFx0XHR1ZHBfdHVubmVsX3NvY2tfcmVsZWFzZShzb2NrLVx1MDAzZXNrKTtcbiA2MzQ6XHRcdGtmcmVlX3JjdShmb3UsIHJjdSk7XG4gNjM1Olx0XG4gNjM2Olx0XHRyZXR1cm4gZXJyO1xuIDYzNzpcdH1cbiA2Mzg6XHRcbiA2Mzk6XHRzdGF0aWMgaW50IGZvdV9kZXN0cm95KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZvdV9jZmcgKmNmZylcbiA2NDA6XHR7XG4gNjQxOlx0XHRzdHJ1Y3QgZm91X25ldCAqZm4gPSBuZXRfZ2VuZXJpYyhuZXQsIGZvdV9uZXRfaWQpO1xuIDY0MjpcdFx0aW50IGVyciA9IC1FSU5WQUw7XG4gNjQzOlx0XHRzdHJ1Y3QgZm91ICpmb3U7XG4gNjQ0Olx0XG4gNjQ1Olx0XHRtdXRleF9sb2NrKFx1MDAyNmZuLVx1MDAzZWZvdV9sb2NrKTtcbiA2NDY6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoZm91LCBcdTAwMjZmbi1cdTAwM2Vmb3VfbGlzdCwgbGlzdCkge1xuIDY0NzpcdFx0XHRpZiAoZm91X2NmZ19jbXAoZm91LCBjZmcpKSB7XG4gNjQ4Olx0XHRcdFx0Zm91X3JlbGVhc2UoZm91KTtcbiA2NDk6XHRcdFx0XHRlcnIgPSAwO1xuIDY1MDpcdFx0XHRcdGJyZWFrO1xuIDY1MTpcdFx0XHR9XG4gNjUyOlx0XHR9XG4gNjUzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2Zm4tXHUwMDNlZm91X2xvY2spO1xuIDY1NDpcdFxuIDY1NTpcdFx0cmV0dXJuIGVycjtcbiA2NTY6XHR9XG4gNjU3Olx0XG4gNjU4Olx0c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBmb3VfbmxfZmFtaWx5O1xuIDY1OTpcdFxuIDY2MDpcdHN0YXRpYyBpbnQgcGFyc2VfbmxfY29uZmlnKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gNjYxOlx0XHRcdFx0ICAgc3RydWN0IGZvdV9jZmcgKmNmZylcbiA2NjI6XHR7XG4gNjYzOlx0XHRib29sIGhhc19sb2NhbCA9IGZhbHNlLCBoYXNfcGVlciA9IGZhbHNlO1xuIDY2NDpcdFx0c3RydWN0IG5sYXR0ciAqYXR0cjtcbiA2NjU6XHRcdGludCBpZmluZGV4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgY2hhbmdlIGZyb20gYGtmcmVlKGZvdSlgIHRvIGBrZnJlZV9yY3UoZm91LCByY3UpYC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnIOKAkyBhIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIG9yIGEgc2ltaWxhciBtZW1vcnkgc2FmZXR5IGlzc3VlIGlzIGJlaW5nIGFkZHJlc3NlZCBoZXJlLiBUaGUgY29udGV4dCBpcyBgZm91X2NyZWF0ZWAsIHNwZWNpZmljYWxseSBpbiB0aGUgZXJyb3IgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBlcnJvciBwYXRoIGZ1bGx5LiBUaGUgcGF0Y2ggbWVudGlvbnMgdHdvIHRyaWdnZXJzOiBmYWlsdXJlIG9mIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgb3IgYW4gaW52YWxpZCBgY2ZnLSZndDt0eXBlYC4KCldhaXQgYSBtaW51dGUsIGlmIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgZmFpbHMsIGBzZXR1cF91ZHBfdHVubmVsX3NvY2tgIGhhcyBhbHJlYWR5IGJlZW4gaW52b2tlZC4gQW5kIHRoYXQgZnVuY3Rpb24sIGNydWNpYWxseSwgc2V0cyBgc2stJmd0O3NrX3VzZXJfZGF0YSA9IGZvdWAuIFRoaXMgbWVhbnMgYGZvdWAgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc29ja2V0LiBUaGVuLCBgdWRwX3R1bm5lbF9zb2NrX3JlbGVhc2VgIGlzIGNhbGxlZCwgcG90ZW50aWFsbHkgYWZ0ZXIgdGhhdCBlcnJvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGRvZXMgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCAob3Igc29tZXRoaW5nIGl0IGNhbGxzLCBsaWtlIGBza19kZXN0cnVjdGApIHRvdWNoIGBza191c2VyX2RhdGFgPyBUaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcywgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCBpcyBjbG9zaW5nIHRoZSBzb2NrZXQsIHdoaWNoIG1lYW5zIHRoZXJlIGNvdWxkIGJlIFJDVSByZWFkZXJzIGFjY2Vzc2luZyBgc2tfdXNlcl9kYXRhYCAod2hpY2ggaXMgYGZvdWApLiBUaGF04oCZcyBpdCEgVGhlIG5lZWQgZm9yIGBrZnJlZV9yY3VgIGlzIG5vdyBvYnZpb3VzLiBXZSBuZWVkIHRvIGRlbGF5IHRoZSBmcmVlaW5nIG9mIGBmb3VgIHVudGlsIGFsbCBSQ1UgcmVhZGVycyBhcmUgZG9uZSB3aXRoIGl0LgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nIHNlZW0gdG8gYmUgYGZvdV9jcmVhdGVgLCBgZm91X2FkZF90b19wb3J0X2xpc3RgLCBhbmQgYGZvdV9ubF9hZGRfZG9pdGAuIEkmIzM5O2xsIGFsc28gd2FudCB0byBtYWtlIHN1cmUgdGhlIGBORVRfRk9VYCBjb25maWcgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIGBmb3VfY29yZS5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm91X2NvcmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0yNj1ncmUteSA6PSBncmVfZGVtdXgub1xubmV0L2lwdjQvTWFrZWZpbGU6Mjc6Zm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTI4LW9iai0kKENPTkZJR19ORVRfRk9VKSAmIzQzOz0gZm91Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDM3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBpc3N1ZSBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBgQ09ORklHX05FVF9GT1VgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IOKAkyBJIHNob3VsZCBiZSBsb29raW5nIGF0IGBmb3VfbmxfYWRkX2RvaXRgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhY3Rpb24gaXMgbGlrZWx5IGhhcHBlbmluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzLCB3aGF0IGRhdGEgaXQgb3BlcmF0ZXMgb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBzb21lIHNwZWNpZmljIG51YW5jZXMgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgRk9VIChVRFAgdHVubmVsKSBoYW5kbGluZy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvdV9ubF9hZGRfZG9pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZvdV9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X2NvcmUuYz02NjA9c3RhdGljIGludCBwYXJzZV9ubF9jb25maWcoc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jLTc1MC1cbm5ldC9pcHY0L2ZvdV9jb3JlLmM6NzUxOmludCBmb3VfbmxfYWRkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNzUyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBmb3VfbmxfYWRkX2RvaXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGlzIGBmb3VfbmxfYWRkX2RvaXRgIGZ1bmN0aW9uLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGlzIGl0IHN0YXRpYz8gTGV0JiMzOTtzIGNsYXJpZnksIGl0JiMzOTtzIGRlZmluZWQgYXMgYGludCBmb3VfbmxfYWRkX2RvaXRgIC0gbm8gYHN0YXRpY2Aga2V5d29yZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgbm90IGxvY2FsIHRvIGEgc3BlY2lmaWMgZmlsZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB3aGV0aGVyIGl0JiMzOTtzIGV4cG9ydGVkIG9yIHVzZWQgd2l0aGluIGBmb3VfbmwuY2AgaXRzZWxmLgoKQWxyaWdodCwgbGV0IG1lIGNvbnN1bHQgdGhlIE1ha2VmaWxlLiBBaCwgaXQgc2hvd3MgdGhhdCBgZm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9gLiBHaXZlbiB0aGF0IGl0IGluY2x1ZGVzIGBmb3Vfbmwub2AsIGFuZCBpc24mIzM5O3Qgc3RhdGljLCBpdCYjMzk7cyB2ZXJ5IGxpa2VseSB0aGF0IGBmb3VfbmxfYWRkX2RvaXRgIGlzIGRlZmluZWQgaW4gYGZvdV9jb3JlLmNgIGJ1dCBjYWxsZWQgZnJvbSB3aXRoaW4gYGZvdV9ubC5jYC4KClRvIGNvbmZpcm0gdGhpcyBoeXBvdGhlc2lzLCBJIHNob3VsZCByZWFsbHkganVzdCBnbyBhaGVhZCBhbmQgZXhhbWluZSB0aGUgY29udGVudHMgb2YgYGZvdV9ubC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm91X25sX2FkZF9kb2l0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X25sLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X25sLmM9MzA9Y29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGZvdV9ubF9vcHNbM10gPSB7XG4tLVxubmV0L2lwdjQvZm91X25sLmMtMzMtXHRcdC52YWxpZGF0ZVx0PSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvaXB2NC9mb3VfbmwuYzozNDpcdFx0LmRvaXRcdFx0PSBmb3VfbmxfYWRkX2RvaXQsXG5uZXQvaXB2NC9mb3VfbmwuYy0zNS1cdFx0LmZsYWdzXHRcdD0gR0VOTF9BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTEwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRm9jdXNpbmcgSW4qKgoKUmlnaHQsIHRoYXQgc2VlbXMgYWJvdXQgcmlnaHQuICpmb3VcX25sXF9hZGRcX2RvaXQqIC0geWVzLCB0aGF0IGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIGNlbnRlciBteSBhdHRlbnRpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgYSBrZXkgZm9jdXMgc3ltYm9sLiBBbmQgKmZvdVxfY3JlYXRlKiB0b28sIEnigJlkIGFncmVlIHdpdGggdGhhdC4gQm90aCB0aGVzZSBzZWVtIGxpa2UgcGl2b3RhbCBwb2ludHMgaW4gdGhlIHByb2Nlc3MuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4gSSBzaG91bGQgZG91YmxlIGNoZWNrICpmb3VcX2FkZFxfdG9cX3BvcnRcX2xpc3QqIHRvby4gTWFraW5nIHN1cmUgdGhpcyBwYXJ0aWN1bGFyIHByb2Nlc3MgaXMgdW5kZXJzdG9vZCB3aWxsIGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3VfYWRkX3RvX3BvcnRfbGlzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZvdV9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X2NvcmUuYz01MDk9c3RhdGljIGJvb2wgZm91X2NmZ19jbXAoc3RydWN0IGZvdSAqZm91LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnKVxuLS1cbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTM4LVxubmV0L2lwdjQvZm91X2NvcmUuYzo1Mzk6c3RhdGljIGludCBmb3VfYWRkX3RvX3BvcnRfbGlzdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmb3UgKmZvdSxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTQwLVx0XHRcdFx0c3RydWN0IGZvdV9jZmcgKmNmZylcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTU2Nj1zdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxuLS1cbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNjIxLVxubmV0L2lwdjQvZm91X2NvcmUuYzo2MjI6XHRlcnIgPSBmb3VfYWRkX3RvX3BvcnRfbGlzdChuZXQsIGZvdSwgY2ZnKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNjIzLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2NQoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBGT1UgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBgZm91X2FkZF90b19wb3J0X2xpc3RgIGZ1bmN0aW9uIGlzIHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHNjb3BpbmcuIExldCYjMzk7cyBicmVhayBkb3duIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgaGVyZS4KCkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIG1hcmtlZCBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBUaGUgcHJpbWFyeSBmdW5jdGlvbnMgdGFyZ2V0ZWQgZm9yIGZ1enppbmcgYXJlIGBmb3VfY3JlYXRlYCBhbmQgYGZvdV9ubF9hZGRfZG9pdGAuIFdlJiMzOTtyZSBlbmFibGluZyB0aGlzIHdpdGggYE5FVF9GT1VgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBmb2N1cy4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgYGZvdV9jcmVhdGVgLiBJdCYjMzk7cyBhY2hpZXZpbmcgdGhpcyB3aXRoIGEgY29tYmluYXRpb24gb2YgYGtmcmVlX3JjdWAgYW5kIHNvbWUgY2xlYW51cCByZW9yZGVyaW5nLiBUaGlzIGluZGljYXRlcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBmdW5kYW1lbnRhbCBGb28gb3ZlciBVRFAgKEZPVSkgaW1wbGVtZW50YXRpb24uIFdl4oCZcmUgZml4aW5nIGEgbWVtb3J5IHNhZmV0eSBpc3N1ZSBpbiBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIEZPVSBsb2dpYy4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX0ZPVWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUsIGFuZCBpdCBhcHBlYXJzIHRoYXQmIzM5O3MgdGhlIGNhc2UuIFRoYXQgY29uZmlybXMgdGhlIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0ZPVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZvdV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Zm91X25sX2FkZF9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0ZPVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZvdV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Zm91X25sX2FkZF9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjAxLjk5MDA5NDE2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NDQ4MjEwOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9GT1VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmb3VfY3JlYXRlXCIsXG4gICAgXCJmb3VfbmxfYWRkX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgZm91X2NyZWF0ZWAgYnkgdXNpbmcgYGtmcmVlX3JjdWAgYW5kIHJlb3JkZXJpbmcgdGhlIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGT1UgKEZvbyBvdmVyIFVEUCkgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjAxLjk5MDEwMjI2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU2NzIzMjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2Q2Y2UyNGQ3M2Y2Y2UxZWZlMzI3ZmMzMTIxYzBmOTJiNTE4YTNjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMjo0NzowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xcbmluZGV4IDg2NWJkNzIwNTEyMmQyLi5hYjA5ZGZjZGVjYmQ1OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXFxuKysrIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xcbkBAIC02MjksOSArNjI5LDkgQEAgc3RhdGljIGludCBmb3VfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZvdV9jZmcgKmNmZyxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvcjpcXG4tXFx0a2ZyZWUoZm91KTtcXG4gXFx0aWYgKHNvY2spXFxuIFxcdFxcdHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNvY2stXFx1MDAzZXNrKTtcXG4rXFx0a2ZyZWVfcmN1KGZvdSwgcmN1KTtcXG4gXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MDIuNjQ3Nzc0ODk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg3OTA1MTc2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvdV9jcmVhdGVcIixcbiAgICBcImZvdV9ubF9hZGRfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZDZjZTI0ZDczZjZjZTFlZmUzMjdmYzMxMjFjMGY5MmI1MThhM2M0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDI6NDc6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xuaW5kZXggODY1YmQ3MjA1MTIyZDIuLmFiMDlkZmNkZWNiZDU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZm91X2NvcmUuY1xuKysrIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xuQEAgLTYyOSw5ICs2MjksOSBAQCBzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyb3I6XG4tXHRrZnJlZShmb3UpO1xuIFx0aWYgKHNvY2spXG4gXHRcdHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNvY2stXHUwMDNlc2spO1xuK1x0a2ZyZWVfcmN1KGZvdSwgcmN1KTtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MDIuNjQ3Nzc3MDU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxNTgyNTU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L2ZvdV9jb3JlLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHJlZmluaW5nIHRoZSBlcnJvciBoYW5kbGluZyBpbiBgZm91X2NyZWF0ZWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGV5J3JlIG1vZGlmeWluZyB0aGUgZXJyb3IgcGF0aC5cIiBJIG5vdGljZSB0aGUgY2hhbmdlOiBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZnJlZXMgaW4gdGhlIGBlcnJvcjpgIGxhYmVsLiBJdCB1c2VkIHRvIGZyZWUgYGZvdWAgZGlyZWN0bHkuIE5vdywgdGhlcmUncyBhIGNvbmRpdGlvbmFsIHJlbGVhc2Ugb2YgdGhlIHNvY2tldCwgdGhlbiBgZm91YCBpcyBmcmVlZCB1c2luZyBga2ZyZWVfcmN1YC5cblxuV2FpdCBhIG1pbnV0ZSwgYGZvdV9jcmVhdGVgICpremFsbG9jJ3MqIGBmb3VgLiBTbywgdGhleSdyZSBpbml0aWFsaXppbmcgdGhlIG1lbW9yeSBhdCBhbGxvY2F0aW9uLiBUaGF0J3MgZ29vZCBwcmFjdGljZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkndmUgY2hhbmdlZCB0aGUgZnJlZWluZyBzdHJhdGVneS4gYGtmcmVlX3JjdWAgaW1wbGllcyBhIG5lZWQgZm9yIGEgZ3JhY2UgcGVyaW9kLCBsaWtlbHkgZHVlIHRvIFJDVS1wcm90ZWN0ZWQgZGF0YS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIExldCBtZSBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBjb250ZXh0LiBJJ2xsIHRha2UgYSBxdWljayBsb29rIGF0IGBmb3VfY3JlYXRlYCBpdHNlbGYsIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEknbGwgZ28gY2hlY2sgdGhhdCBmdW5jdGlvbiBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzowNi42NjM2MDY0NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NTIwMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvdV9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvZm91X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jPTU1OT1zdGF0aWMgdm9pZCBmb3VfcmVsZWFzZShzdHJ1Y3QgZm91ICpmb3UpXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTU2NS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjU2NjpzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTY3LVxcdFxcdCAgICAgIHN0cnVjdCBzb2NrZXQgKipzb2NrcClcXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM9NzUxPWludCBmb3VfbmxfYWRkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNzYwLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM6NzYxOlxcdHJldHVybiBmb3VfY3JlYXRlKG5ldCwgXFx1MDAyNmNmZywgTlVMTCk7XFxubmV0L2lwdjQvZm91X2NvcmUuYy03NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzowNi44MTAxMzIxMzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgzMDg4MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGZvdV9jcmVhdGVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGZvdV9jcmVhdGVgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGxpdmVzIHdpdGhpbiBgbmV0L2lwdjQvZm91X2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCB0aGlzIGlzIHdoZXJlIHRoZSAqbWFnaWMqIGhhcHBlbnMgZm9yIGNyZWF0aW5nIGEgRk9VIChVRFAvSVB2NCBlbmNhcHN1bGF0aW9uKSB0dW5uZWwgaW5zdGFuY2UuXCIgSSB3YW50IHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIHRoZSBjb3JlIGxvZ2ljIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCwgaG93IHRoZSBzb2NrZXQgb3B0aW9ucyBhcmUgaGFuZGxlZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgc2VjdGlvbiB0aGF0IGRlYWxzIHdpdGggYWxsb2NhdGluZyBhbmQgbGlua2luZyB0aGUgRk9VIGRldmljZSB0byB0aGUgYXNzb2NpYXRlZCBuZXQgbmFtZXNwYWNlLiBJIGV4cGVjdCB0byBiZSB0cmFjaW5nIGNhbGxzIGludG8gdGhlIG5ldHdvcmsgc3RhY2suIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyBwYXRocyBhcyB3ZWxsLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gcmVzb3VyY2UgYWxsb2NhdGlvbiBmYWlsdXJlcyBvciBjb25mbGljdGluZyBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgaW4gcGxheSwgdG9vLCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aHJlYWQtc2FmZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJhY2UgY29uZGl0aW9ucy4gRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBpbnRlcmFjdGlvbiB3aXRoIGFueSBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBzdWJzeXN0ZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MTAuMzkzMjIyNTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvZm91X2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NjYsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTY2OlxcdHN0YXRpYyBpbnQgZm91X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmb3VfY2ZnICpjZmcsXFxuIDU2NzpcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc29ja2V0ICoqc29ja3ApXFxuIDU2ODpcXHR7XFxuIDU2OTpcXHRcXHRzdHJ1Y3Qgc29ja2V0ICpzb2NrID0gTlVMTDtcXG4gNTcwOlxcdFxcdHN0cnVjdCBmb3UgKmZvdSA9IE5VTEw7XFxuIDU3MTpcXHRcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIDU3MjpcXHRcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9zb2NrX2NmZyB0dW5uZWxfY2ZnO1xcbiA1NzM6XFx0XFx0aW50IGVycjtcXG4gNTc0OlxcdFxcbiA1NzU6XFx0XFx0LyogT3BlbiBVRFAgc29ja2V0ICovXFxuIDU3NjpcXHRcXHRlcnIgPSB1ZHBfc29ja19jcmVhdGUobmV0LCBcXHUwMDI2Y2ZnLVxcdTAwM2V1ZHBfY29uZmlnLCBcXHUwMDI2c29jayk7XFxuIDU3NzpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gNTc4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDU3OTpcXHRcXG4gNTgwOlxcdFxcdC8qIEFsbG9jYXRlIEZPVSBwb3J0IHN0cnVjdHVyZSAqL1xcbiA1ODE6XFx0XFx0Zm91ID0ga3phbGxvY19vYmooKmZvdSk7XFxuIDU4MjpcXHRcXHRpZiAoIWZvdSkge1xcbiA1ODM6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gNTg0OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDU4NTpcXHRcXHR9XFxuIDU4NjpcXHRcXG4gNTg3OlxcdFxcdHNrID0gc29jay1cXHUwMDNlc2s7XFxuIDU4ODpcXHRcXG4gNTg5OlxcdFxcdGZvdS1cXHUwMDNlcG9ydCA9IGNmZy1cXHUwMDNldWRwX2NvbmZpZy5sb2NhbF91ZHBfcG9ydDtcXG4gNTkwOlxcdFxcdGZvdS1cXHUwMDNlZmFtaWx5ID0gY2ZnLVxcdTAwM2V1ZHBfY29uZmlnLmZhbWlseTtcXG4gNTkxOlxcdFxcdGZvdS1cXHUwMDNlZmxhZ3MgPSBjZmctXFx1MDAzZWZsYWdzO1xcbiA1OTI6XFx0XFx0Zm91LVxcdTAwM2V0eXBlID0gY2ZnLVxcdTAwM2V0eXBlO1xcbiA1OTM6XFx0XFx0Zm91LVxcdTAwM2VzayA9IHNrO1xcbiA1OTQ6XFx0XFxuIDU5NTpcXHRcXHRtZW1zZXQoXFx1MDAyNnR1bm5lbF9jZmcsIDAsIHNpemVvZih0dW5uZWxfY2ZnKSk7XFxuIDU5NjpcXHRcXHR0dW5uZWxfY2ZnLmVuY2FwX3R5cGUgPSAxO1xcbiA1OTc6XFx0XFx0dHVubmVsX2NmZy5za191c2VyX2RhdGEgPSBmb3U7XFxuIDU5ODpcXHRcXHR0dW5uZWxfY2ZnLmVuY2FwX2Rlc3Ryb3kgPSBOVUxMO1xcbiA1OTk6XFx0XFxuIDYwMDpcXHRcXHQvKiBJbml0aWFsIGZvciBmb3UgdHlwZSAqL1xcbiA2MDE6XFx0XFx0c3dpdGNoIChjZmctXFx1MDAzZXR5cGUpIHtcXG4gNjAyOlxcdFxcdGNhc2UgRk9VX0VOQ0FQX0RJUkVDVDpcXG4gNjAzOlxcdFxcdFxcdHR1bm5lbF9jZmcuZW5jYXBfcmN2ID0gZm91X3VkcF9yZWN2O1xcbiA2MDQ6XFx0XFx0XFx0dHVubmVsX2NmZy5ncm9fcmVjZWl2ZSA9IGZvdV9ncm9fcmVjZWl2ZTtcXG4gNjA1OlxcdFxcdFxcdHR1bm5lbF9jZmcuZ3JvX2NvbXBsZXRlID0gZm91X2dyb19jb21wbGV0ZTtcXG4gNjA2OlxcdFxcdFxcdGZvdS1cXHUwMDNlcHJvdG9jb2wgPSBjZmctXFx1MDAzZXByb3RvY29sO1xcbiA2MDc6XFx0XFx0XFx0YnJlYWs7XFxuIDYwODpcXHRcXHRjYXNlIEZPVV9FTkNBUF9HVUU6XFxuIDYwOTpcXHRcXHRcXHR0dW5uZWxfY2ZnLmVuY2FwX3JjdiA9IGd1ZV91ZHBfcmVjdjtcXG4gNjEwOlxcdFxcdFxcdHR1bm5lbF9jZmcuZ3JvX3JlY2VpdmUgPSBndWVfZ3JvX3JlY2VpdmU7XFxuIDYxMTpcXHRcXHRcXHR0dW5uZWxfY2ZnLmdyb19jb21wbGV0ZSA9IGd1ZV9ncm9fY29tcGxldGU7XFxuIDYxMjpcXHRcXHRcXHRicmVhaztcXG4gNjEzOlxcdFxcdGRlZmF1bHQ6XFxuIDYxNDpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiA2MTU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNjE2OlxcdFxcdH1cXG4gNjE3OlxcdFxcbiA2MTg6XFx0XFx0c2V0dXBfdWRwX3R1bm5lbF9zb2NrKG5ldCwgc2ssIFxcdTAwMjZ0dW5uZWxfY2ZnKTtcXG4gNjE5OlxcdFxcbiA2MjA6XFx0XFx0c2stXFx1MDAzZXNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDO1xcbiA2MjE6XFx0XFxuIDYyMjpcXHRcXHRlcnIgPSBmb3VfYWRkX3RvX3BvcnRfbGlzdChuZXQsIGZvdSwgY2ZnKTtcXG4gNjIzOlxcdFxcdGlmIChlcnIpXFxuIDYyNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA2MjU6XFx0XFxuIDYyNjpcXHRcXHRpZiAoc29ja3ApXFxuIDYyNzpcXHRcXHRcXHQqc29ja3AgPSBzb2NrO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRyZXR1cm4gMDtcXG4gNjMwOlxcdFxcbiA2MzE6XFx0ZXJyb3I6XFxuIDYzMjpcXHRcXHRpZiAoc29jaylcXG4gNjMzOlxcdFxcdFxcdHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNvY2stXFx1MDAzZXNrKTtcXG4gNjM0OlxcdFxcdGtmcmVlX3JjdShmb3UsIHJjdSk7XFxuIDYzNTpcXHRcXG4gNjM2OlxcdFxcdHJldHVybiBlcnI7XFxuIDYzNzpcXHR9XFxuIDYzODpcXHRcXG4gNjM5OlxcdHN0YXRpYyBpbnQgZm91X2Rlc3Ryb3koc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnKVxcbiA2NDA6XFx0e1xcbiA2NDE6XFx0XFx0c3RydWN0IGZvdV9uZXQgKmZuID0gbmV0X2dlbmVyaWMobmV0LCBmb3VfbmV0X2lkKTtcXG4gNjQyOlxcdFxcdGludCBlcnIgPSAtRUlOVkFMO1xcbiA2NDM6XFx0XFx0c3RydWN0IGZvdSAqZm91O1xcbiA2NDQ6XFx0XFxuIDY0NTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZmbi1cXHUwMDNlZm91X2xvY2spO1xcbiA2NDY6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmb3UsIFxcdTAwMjZmbi1cXHUwMDNlZm91X2xpc3QsIGxpc3QpIHtcXG4gNjQ3OlxcdFxcdFxcdGlmIChmb3VfY2ZnX2NtcChmb3UsIGNmZykpIHtcXG4gNjQ4OlxcdFxcdFxcdFxcdGZvdV9yZWxlYXNlKGZvdSk7XFxuIDY0OTpcXHRcXHRcXHRcXHRlcnIgPSAwO1xcbiA2NTA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDY1MTpcXHRcXHRcXHR9XFxuIDY1MjpcXHRcXHR9XFxuIDY1MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmZuLVxcdTAwM2Vmb3VfbG9jayk7XFxuIDY1NDpcXHRcXG4gNjU1OlxcdFxcdHJldHVybiBlcnI7XFxuIDY1NjpcXHR9XFxuIDY1NzpcXHRcXG4gNjU4OlxcdHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZm91X25sX2ZhbWlseTtcXG4gNjU5OlxcdFxcbiA2NjA6XFx0c3RhdGljIGludCBwYXJzZV9ubF9jb25maWcoc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4gNjYxOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBmb3VfY2ZnICpjZmcpXFxuIDY2MjpcXHR7XFxuIDY2MzpcXHRcXHRib29sIGhhc19sb2NhbCA9IGZhbHNlLCBoYXNfcGVlciA9IGZhbHNlO1xcbiA2NjQ6XFx0XFx0c3RydWN0IG5sYXR0ciAqYXR0cjtcXG4gNjY1OlxcdFxcdGludCBpZmluZGV4O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzoxMC4zOTMzOTM5NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDIzMTY2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSBhIGNoYW5nZSBmcm9tIGBrZnJlZShmb3UpYCB0byBga2ZyZWVfcmN1KGZvdSwgcmN1KWAuIFRoYXQncyBhIHJlZCBmbGFnIOKAkyBhIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIG9yIGEgc2ltaWxhciBtZW1vcnkgc2FmZXR5IGlzc3VlIGlzIGJlaW5nIGFkZHJlc3NlZCBoZXJlLiBUaGUgY29udGV4dCBpcyBgZm91X2NyZWF0ZWAsIHNwZWNpZmljYWxseSBpbiB0aGUgZXJyb3IgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBlcnJvciBwYXRoIGZ1bGx5LiBUaGUgcGF0Y2ggbWVudGlvbnMgdHdvIHRyaWdnZXJzOiBmYWlsdXJlIG9mIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgb3IgYW4gaW52YWxpZCBgY2ZnLVx1MDAzZXR5cGVgLlxuXG5XYWl0IGEgbWludXRlLCBpZiBgZm91X2FkZF90b19wb3J0X2xpc3RgIGZhaWxzLCBgc2V0dXBfdWRwX3R1bm5lbF9zb2NrYCBoYXMgYWxyZWFkeSBiZWVuIGludm9rZWQuIEFuZCB0aGF0IGZ1bmN0aW9uLCBjcnVjaWFsbHksIHNldHMgYHNrLVx1MDAzZXNrX3VzZXJfZGF0YSA9IGZvdWAuIFRoaXMgbWVhbnMgYGZvdWAgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc29ja2V0LiBUaGVuLCBgdWRwX3R1bm5lbF9zb2NrX3JlbGVhc2VgIGlzIGNhbGxlZCwgcG90ZW50aWFsbHkgYWZ0ZXIgdGhhdCBlcnJvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGRvZXMgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCAob3Igc29tZXRoaW5nIGl0IGNhbGxzLCBsaWtlIGBza19kZXN0cnVjdGApIHRvdWNoIGBza191c2VyX2RhdGFgPyBUaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcywgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCBpcyBjbG9zaW5nIHRoZSBzb2NrZXQsIHdoaWNoIG1lYW5zIHRoZXJlIGNvdWxkIGJlIFJDVSByZWFkZXJzIGFjY2Vzc2luZyBgc2tfdXNlcl9kYXRhYCAod2hpY2ggaXMgYGZvdWApLiBUaGF04oCZcyBpdCEgVGhlIG5lZWQgZm9yIGBrZnJlZV9yY3VgIGlzIG5vdyBvYnZpb3VzLiBXZSBuZWVkIHRvIGRlbGF5IHRoZSBmcmVlaW5nIG9mIGBmb3VgIHVudGlsIGFsbCBSQ1UgcmVhZGVycyBhcmUgZG9uZSB3aXRoIGl0LlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgZHVyaW5nIGZ1enppbmcgc2VlbSB0byBiZSBgZm91X2NyZWF0ZWAsIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAsIGFuZCBgZm91X25sX2FkZF9kb2l0YC4gSSdsbCBhbHNvIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBgTkVUX0ZPVWAgY29uZmlnIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGZvciBgZm91X2NvcmUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTkwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MTYuMDk1NzEzMzkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDk1Mjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb3VfY29yZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT0yNj1ncmUteSA6PSBncmVfZGVtdXgub1xcbm5ldC9pcHY0L01ha2VmaWxlOjI3OmZvdS15IDo9IGZvdV9jb3JlLm8gZm91X25sLm8gZm91X2JwZi5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMjgtb2JqLSQoQ09ORklHX05FVF9GT1UpICs9IGZvdS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjE2LjI0MDY3MTQ2MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3OTM4MTU3MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBpc3N1ZSBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBgQ09ORklHX05FVF9GT1VgLiBSaWdodCwgdGhhdCdzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkg4oCTIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYGZvdV9ubF9hZGRfZG9pdGAuIFRoYXQncyB3aGVyZSB0aGUgYWN0aW9uIGlzIGxpa2VseSBoYXBwZW5pbmcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzLCB3aGF0IGRhdGEgaXQgb3BlcmF0ZXMgb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBzb21lIHNwZWNpZmljIG51YW5jZXMgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgRk9VIChVRFAgdHVubmVsKSBoYW5kbGluZy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjE5LjAzNDQ5MDAwMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNDczMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvdV9ubF9hZGRfZG9pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZvdV9jb3JlLmM9NjYwPXN0YXRpYyBpbnQgcGFyc2VfbmxfY29uZmlnKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTc1MC1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjc1MTppbnQgZm91X25sX2FkZF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L2lwdjQvZm91X2NvcmUuYy03NTIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzoxOS4xOTY5NzUwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTI2OTgxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGZvdV9ubF9hZGRfZG9pdGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGlzIGBmb3VfbmxfYWRkX2RvaXRgIGZ1bmN0aW9uLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGlzIGl0IHN0YXRpYz8gTGV0J3MgY2xhcmlmeSwgaXQncyBkZWZpbmVkIGFzIGBpbnQgZm91X25sX2FkZF9kb2l0YCAtIG5vIGBzdGF0aWNgIGtleXdvcmQsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGxvY2FsIHRvIGEgc3BlY2lmaWMgZmlsZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB3aGV0aGVyIGl0J3MgZXhwb3J0ZWQgb3IgdXNlZCB3aXRoaW4gYGZvdV9ubC5jYCBpdHNlbGYuXG5cbkFscmlnaHQsIGxldCBtZSBjb25zdWx0IHRoZSBNYWtlZmlsZS4gQWgsIGl0IHNob3dzIHRoYXQgYGZvdS15IDo9IGZvdV9jb3JlLm8gZm91X25sLm8gZm91X2JwZi5vYC4gR2l2ZW4gdGhhdCBpdCBpbmNsdWRlcyBgZm91X25sLm9gLCBhbmQgaXNuJ3Qgc3RhdGljLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgYGZvdV9ubF9hZGRfZG9pdGAgaXMgZGVmaW5lZCBpbiBgZm91X2NvcmUuY2AgYnV0IGNhbGxlZCBmcm9tIHdpdGhpbiBgZm91X25sLmNgLlxuXG5UbyBjb25maXJtIHRoaXMgaHlwb3RoZXNpcywgSSBzaG91bGQgcmVhbGx5IGp1c3QgZ28gYWhlYWQgYW5kIGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGBmb3VfbmwuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNzIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjMuMTIzOTU5MTc5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI2NzQ5MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm91X25sX2FkZF9kb2l0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ZvdV9ubC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZvdV9ubC5jPTMwPWNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBmb3Vfbmxfb3BzWzNdID0ge1xcbi0tXFxubmV0L2lwdjQvZm91X25sLmMtMzMtXFx0XFx0LnZhbGlkYXRlXFx0PSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxubmV0L2lwdjQvZm91X25sLmM6MzQ6XFx0XFx0LmRvaXRcXHRcXHQ9IGZvdV9ubF9hZGRfZG9pdCxcXG5uZXQvaXB2NC9mb3VfbmwuYy0zNS1cXHRcXHQuZmxhZ3NcXHRcXHQ9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjMuMjk2NjM5NjU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTY0ODY5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkZvY3VzaW5nIEluKipcblxuUmlnaHQsIHRoYXQgc2VlbXMgYWJvdXQgcmlnaHQuICpmb3VcXF9ubFxcX2FkZFxcX2RvaXQqIC0geWVzLCB0aGF0IGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIGNlbnRlciBteSBhdHRlbnRpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgYSBrZXkgZm9jdXMgc3ltYm9sLiBBbmQgKmZvdVxcX2NyZWF0ZSogdG9vLCBJ4oCZZCBhZ3JlZSB3aXRoIHRoYXQuIEJvdGggdGhlc2Ugc2VlbSBsaWtlIHBpdm90YWwgcG9pbnRzIGluIHRoZSBwcm9jZXNzLlxuXG5Ob3csIGxldCdzIGp1c3QgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgKmZvdVxcX2FkZFxcX3RvXFxfcG9ydFxcX2xpc3QqIHRvby4gTWFraW5nIHN1cmUgdGhpcyBwYXJ0aWN1bGFyIHByb2Nlc3MgaXMgdW5kZXJzdG9vZCB3aWxsIGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTEwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjYuNTkzMTI5MTAxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI1MTQ3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm91X2FkZF90b19wb3J0X2xpc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvZm91X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jPTUwOT1zdGF0aWMgYm9vbCBmb3VfY2ZnX2NtcChzdHJ1Y3QgZm91ICpmb3UsIHN0cnVjdCBmb3VfY2ZnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTUzOC1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjUzOTpzdGF0aWMgaW50IGZvdV9hZGRfdG9fcG9ydF9saXN0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZvdSAqZm91LFxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTQwLVxcdFxcdFxcdFxcdHN0cnVjdCBmb3VfY2ZnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jPTU2Nj1zdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxcbi0tXFxubmV0L2lwdjQvZm91X2NvcmUuYy02MjEtXFxubmV0L2lwdjQvZm91X2NvcmUuYzo2MjI6XFx0ZXJyID0gZm91X2FkZF90b19wb3J0X2xpc3QobmV0LCBmb3UsIGNmZyk7XFxubmV0L2lwdjQvZm91X2NvcmUuYy02MjMtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjYuNzY1NjQ5NDI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTA1OTQ3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBGT1UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgZnVuY3Rpb24gaXMgc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3Igc2NvcGluZy4gTGV0J3MgYnJlYWsgZG93biB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQgaGVyZS5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgbWFya2VkIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0YXJnZXRlZCBmb3IgZnV6emluZyBhcmUgYGZvdV9jcmVhdGVgIGFuZCBgZm91X25sX2FkZF9kb2l0YC4gV2UncmUgZW5hYmxpbmcgdGhpcyB3aXRoIGBORVRfRk9VYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBnaXZlbiB0aGUgZm9jdXMuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgYGZvdV9jcmVhdGVgLiBJdCdzIGFjaGlldmluZyB0aGlzIHdpdGggYSBjb21iaW5hdGlvbiBvZiBga2ZyZWVfcmN1YCBhbmQgc29tZSBjbGVhbnVwIHJlb3JkZXJpbmcuIFRoaXMgaW5kaWNhdGVzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIGZ1bmRhbWVudGFsIEZvbyBvdmVyIFVEUCAoRk9VKSBpbXBsZW1lbnRhdGlvbi4gV2XigJlyZSBmaXhpbmcgYSBtZW1vcnkgc2FmZXR5IGlzc3VlIGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgRk9VIGxvZ2ljLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX0ZPVWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUsIGFuZCBpdCBhcHBlYXJzIHRoYXQncyB0aGUgY2FzZS4gVGhhdCBjb25maXJtcyB0aGUgc2NvcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNjUsIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjMxLjE1NjI0NzI0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjA0MDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvdV9jcmVhdGVcIixcbiAgICBcImZvdV9ubF9hZGRfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZm91X2NyZWF0ZVwiLFxuICAgIFwiZm91X25sX2FkZF9kb2l0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYGZvdV9jcmVhdGVgIGJ5IHVzaW5nIGBrZnJlZV9yY3VgIGFuZCByZW9yZGVyaW5nIHRoZSBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRk9VIChGb28gb3ZlciBVRFApIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-23 02:26:01 +0000 UTC FinishedAt: 2026-07-23 02:47:32 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git", "commit_hash": "f43ee0c0730d6191629b5ee1ceae27b1ebfdc047", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NET_FOU" ], "series_id": "e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "fou_create", "fou_nl_add_doit" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05FVF9GT1UmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtmb3VfY3JlYXRlJiMzNDssCiAgICAmIzM0O2ZvdV9ubF9hZGRfZG9pdCYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgZm91X2NyZWF0ZWAgYnkgdXNpbmcgYGtmcmVlX3JjdWAgYW5kIHJlb3JkZXJpbmcgdGhlIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGT1UgKEZvbyBvdmVyIFVEUCkgbG9naWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAzZDZjZTI0ZDczZjZjZTFlZmUzMjdmYzMxMjFjMGY5MmI1MThhM2M0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDI6NDc6MDAgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjQvZm91X2NvcmUuYyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbmluZGV4IDg2NWJkNzIwNTEyMmQyLi5hYjA5ZGZjZGVjYmQ1OSAxMDA2NDRcbi0tLSBhL25ldC9pcHY0L2ZvdV9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9pcHY0L2ZvdV9jb3JlLmNcbkBAIC02MjksOSAmIzQzOzYyOSw5IEBAIHN0YXRpYyBpbnQgZm91X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmb3VfY2ZnICpjZmcsXG4gXHRyZXR1cm4gMDtcbiBcbiBlcnJvcjpcbi1cdGtmcmVlKGZvdSk7XG4gXHRpZiAoc29jaylcbiBcdFx0dWRwX3R1bm5lbF9zb2NrX3JlbGVhc2Uoc29jay1cdTAwM2Vzayk7XG4mIzQzO1x0a2ZyZWVfcmN1KGZvdSwgcmN1KTtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtORVRfRk9VJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Zm91X2NyZWF0ZSYjMzQ7LAogICAgJiMzNDtmb3VfbmxfYWRkX2RvaXQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYGZvdV9jcmVhdGVgIGJ5IHVzaW5nIGBrZnJlZV9yY3VgIGFuZCByZW9yZGVyaW5nIHRoZSBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRk9VIChGb28gb3ZlciBVRFApIGxvZ2ljLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAzZDZjZTI0ZDczZjZjZTFlZmUzMjdmYzMxMjFjMGY5MmI1MThhM2M0CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFRodSBKdWwgMjMgMDI6NDc6MDAgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuYwppbmRleCA4NjViZDcyMDUxMjJkMi4uYWIwOWRmY2RlY2JkNTkgMTAwNjQ0Ci0tLSBhL25ldC9pcHY0L2ZvdV9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjQvZm91X2NvcmUuYwpAQCAtNjI5LDkgJiM0Mzs2MjksOSBAQCBzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLAogCXJldHVybiAwOwogCiBlcnJvcjoKLQlrZnJlZShmb3UpOwogCWlmIChzb2NrKQogCQl1ZHBfdHVubmVsX3NvY2tfcmVsZWFzZShzb2NrLSZndDtzayk7CiYjNDM7CWtmcmVlX3JjdShmb3UsIHJjdSk7CiAKIAlyZXR1cm4gZXJyOwogfQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODc0CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTI0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlY2VudCBOZXR3b3JrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvaXB2NC9mb3VfY29yZS5jYC4gU3BlY2lmaWNhbGx5LCBpdCBzZWVtcyB0byBiZSByZWZpbmluZyB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gYGZvdV9jcmVhdGVgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtBaCwgdGhleSYjMzk7cmUgbW9kaWZ5aW5nIHRoZSBlcnJvciBwYXRoLiYjMzQ7IEkgbm90aWNlIHRoZSBjaGFuZ2U6IGl0IGFwcGVhcnMgdGhlIHBhdGNoIGlzIHN3YXBwaW5nIHRoZSBvcmRlciBvZiBmcmVlcyBpbiB0aGUgYGVycm9yOmAgbGFiZWwuIEl0IHVzZWQgdG8gZnJlZSBgZm91YCBkaXJlY3RseS4gTm93LCB0aGVyZSYjMzk7cyBhIGNvbmRpdGlvbmFsIHJlbGVhc2Ugb2YgdGhlIHNvY2tldCwgdGhlbiBgZm91YCBpcyBmcmVlZCB1c2luZyBga2ZyZWVfcmN1YC4KCldhaXQgYSBtaW51dGUsIGBmb3VfY3JlYXRlYCAqa3phbGxvYyYjMzk7cyogYGZvdWAuIFNvLCB0aGV5JiMzOTtyZSBpbml0aWFsaXppbmcgdGhlIG1lbW9yeSBhdCBhbGxvY2F0aW9uLiBUaGF0JiMzOTtzIGdvb2QgcHJhY3RpY2UuIEkgd2FudCB0byB1bmRlcnN0YW5kIHdoeSB0aGV5JiMzOTt2ZSBjaGFuZ2VkIHRoZSBmcmVlaW5nIHN0cmF0ZWd5LiBga2ZyZWVfcmN1YCBpbXBsaWVzIGEgbmVlZCBmb3IgYSBncmFjZSBwZXJpb2QsIGxpa2VseSBkdWUgdG8gUkNVLXByb3RlY3RlZCBkYXRhLiBJIG5lZWQgdG8gZGlnIGRlZXBlci4gTGV0IG1lIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb2YgdGhlIGNvbnRleHQuIEkmIzM5O2xsIHRha2UgYSBxdWljayBsb29rIGF0IGBmb3VfY3JlYXRlYCBpdHNlbGYsIHNlZSB3aGF0JiMzOTtzIGdvaW5nIG9uIHRoZXJlLiBJJiMzOTtsbCBnbyBjaGVjayB0aGF0IGZ1bmN0aW9uIG91dC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3VfY3JlYXRlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X2NvcmUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9mb3VfY29yZS5jPTU1OT1zdGF0aWMgdm9pZCBmb3VfcmVsZWFzZShzdHJ1Y3QgZm91ICpmb3UpXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy01NjUtXG5uZXQvaXB2NC9mb3VfY29yZS5jOjU2NjpzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxubmV0L2lwdjQvZm91X2NvcmUuYy01NjctXHRcdCAgICAgIHN0cnVjdCBzb2NrZXQgKipzb2NrcClcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTc1MT1pbnQgZm91X25sX2FkZF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXG4tLVxubmV0L2lwdjQvZm91X2NvcmUuYy03NjAtXG5uZXQvaXB2NC9mb3VfY29yZS5jOjc2MTpcdHJldHVybiBmb3VfY3JlYXRlKG5ldCwgXHUwMDI2Y2ZnLCBOVUxMKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNzYyLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDk2CgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKkRpdmluZyBpbnRvIGBmb3VfY3JlYXRlYCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYGZvdV9jcmVhdGVgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGxpdmVzIHdpdGhpbiBgbmV0L2lwdjQvZm91X2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCAmIzM0O1JpZ2h0LCB0aGlzIGlzIHdoZXJlIHRoZSAqbWFnaWMqIGhhcHBlbnMgZm9yIGNyZWF0aW5nIGEgRk9VIChVRFAvSVB2NCBlbmNhcHN1bGF0aW9uKSB0dW5uZWwgaW5zdGFuY2UuJiMzNDsgSSB3YW50IHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIHRoZSBjb3JlIGxvZ2ljIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCwgaG93IHRoZSBzb2NrZXQgb3B0aW9ucyBhcmUgaGFuZGxlZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgc2VjdGlvbiB0aGF0IGRlYWxzIHdpdGggYWxsb2NhdGluZyBhbmQgbGlua2luZyB0aGUgRk9VIGRldmljZSB0byB0aGUgYXNzb2NpYXRlZCBuZXQgbmFtZXNwYWNlLiBJIGV4cGVjdCB0byBiZSB0cmFjaW5nIGNhbGxzIGludG8gdGhlIG5ldHdvcmsgc3RhY2suIEkmIzM5O2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZXJyb3IgaGFuZGxpbmcgcGF0aHMgYXMgd2VsbCwgZXNwZWNpYWxseSBhbnl0aGluZyByZWxhdGVkIHRvIHJlc291cmNlIGFsbG9jYXRpb24gZmFpbHVyZXMgb3IgY29uZmxpY3RpbmcgY29uZmlndXJhdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gd2FudCB0byB1bmRlcnN0YW5kIHdoYXQgbG9ja2luZyBtZWNoYW5pc21zIGFyZSBpbiBwbGF5LCB0b28sIHRvIG1ha2Ugc3VyZSB0aGlzIGlzIHRocmVhZC1zYWZlIGFuZCBkb2VzbiYjMzk7dCBpbnRyb2R1Y2UgYW55IHJhY2UgY29uZGl0aW9ucy4gRmluYWxseSwgSSYjMzk7bGwgYmUgbG9va2luZyBmb3IgaW50ZXJhY3Rpb24gd2l0aCBhbnkgb3RoZXIga2VybmVsIG1vZHVsZXMgb3Igc3Vic3lzdGVtcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZvdV9jb3JlLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA1NjYsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA1NjY6XHRzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxuIDU2NzpcdFx0XHQgICAgICBzdHJ1Y3Qgc29ja2V0ICoqc29ja3ApXG4gNTY4Olx0e1xuIDU2OTpcdFx0c3RydWN0IHNvY2tldCAqc29jayA9IE5VTEw7XG4gNTcwOlx0XHRzdHJ1Y3QgZm91ICpmb3UgPSBOVUxMO1xuIDU3MTpcdFx0c3RydWN0IHNvY2sgKnNrO1xuIDU3MjpcdFx0c3RydWN0IHVkcF90dW5uZWxfc29ja19jZmcgdHVubmVsX2NmZztcbiA1NzM6XHRcdGludCBlcnI7XG4gNTc0Olx0XG4gNTc1Olx0XHQvKiBPcGVuIFVEUCBzb2NrZXQgKi9cbiA1NzY6XHRcdGVyciA9IHVkcF9zb2NrX2NyZWF0ZShuZXQsIFx1MDAyNmNmZy1cdTAwM2V1ZHBfY29uZmlnLCBcdTAwMjZzb2NrKTtcbiA1Nzc6XHRcdGlmIChlcnIgXHUwMDNjIDApXG4gNTc4Olx0XHRcdGdvdG8gZXJyb3I7XG4gNTc5Olx0XG4gNTgwOlx0XHQvKiBBbGxvY2F0ZSBGT1UgcG9ydCBzdHJ1Y3R1cmUgKi9cbiA1ODE6XHRcdGZvdSA9IGt6YWxsb2Nfb2JqKCpmb3UpO1xuIDU4MjpcdFx0aWYgKCFmb3UpIHtcbiA1ODM6XHRcdFx0ZXJyID0gLUVOT01FTTtcbiA1ODQ6XHRcdFx0Z290byBlcnJvcjtcbiA1ODU6XHRcdH1cbiA1ODY6XHRcbiA1ODc6XHRcdHNrID0gc29jay1cdTAwM2VzaztcbiA1ODg6XHRcbiA1ODk6XHRcdGZvdS1cdTAwM2Vwb3J0ID0gY2ZnLVx1MDAzZXVkcF9jb25maWcubG9jYWxfdWRwX3BvcnQ7XG4gNTkwOlx0XHRmb3UtXHUwMDNlZmFtaWx5ID0gY2ZnLVx1MDAzZXVkcF9jb25maWcuZmFtaWx5O1xuIDU5MTpcdFx0Zm91LVx1MDAzZWZsYWdzID0gY2ZnLVx1MDAzZWZsYWdzO1xuIDU5MjpcdFx0Zm91LVx1MDAzZXR5cGUgPSBjZmctXHUwMDNldHlwZTtcbiA1OTM6XHRcdGZvdS1cdTAwM2VzayA9IHNrO1xuIDU5NDpcdFxuIDU5NTpcdFx0bWVtc2V0KFx1MDAyNnR1bm5lbF9jZmcsIDAsIHNpemVvZih0dW5uZWxfY2ZnKSk7XG4gNTk2Olx0XHR0dW5uZWxfY2ZnLmVuY2FwX3R5cGUgPSAxO1xuIDU5NzpcdFx0dHVubmVsX2NmZy5za191c2VyX2RhdGEgPSBmb3U7XG4gNTk4Olx0XHR0dW5uZWxfY2ZnLmVuY2FwX2Rlc3Ryb3kgPSBOVUxMO1xuIDU5OTpcdFxuIDYwMDpcdFx0LyogSW5pdGlhbCBmb3IgZm91IHR5cGUgKi9cbiA2MDE6XHRcdHN3aXRjaCAoY2ZnLVx1MDAzZXR5cGUpIHtcbiA2MDI6XHRcdGNhc2UgRk9VX0VOQ0FQX0RJUkVDVDpcbiA2MDM6XHRcdFx0dHVubmVsX2NmZy5lbmNhcF9yY3YgPSBmb3VfdWRwX3JlY3Y7XG4gNjA0Olx0XHRcdHR1bm5lbF9jZmcuZ3JvX3JlY2VpdmUgPSBmb3VfZ3JvX3JlY2VpdmU7XG4gNjA1Olx0XHRcdHR1bm5lbF9jZmcuZ3JvX2NvbXBsZXRlID0gZm91X2dyb19jb21wbGV0ZTtcbiA2MDY6XHRcdFx0Zm91LVx1MDAzZXByb3RvY29sID0gY2ZnLVx1MDAzZXByb3RvY29sO1xuIDYwNzpcdFx0XHRicmVhaztcbiA2MDg6XHRcdGNhc2UgRk9VX0VOQ0FQX0dVRTpcbiA2MDk6XHRcdFx0dHVubmVsX2NmZy5lbmNhcF9yY3YgPSBndWVfdWRwX3JlY3Y7XG4gNjEwOlx0XHRcdHR1bm5lbF9jZmcuZ3JvX3JlY2VpdmUgPSBndWVfZ3JvX3JlY2VpdmU7XG4gNjExOlx0XHRcdHR1bm5lbF9jZmcuZ3JvX2NvbXBsZXRlID0gZ3VlX2dyb19jb21wbGV0ZTtcbiA2MTI6XHRcdFx0YnJlYWs7XG4gNjEzOlx0XHRkZWZhdWx0OlxuIDYxNDpcdFx0XHRlcnIgPSAtRUlOVkFMO1xuIDYxNTpcdFx0XHRnb3RvIGVycm9yO1xuIDYxNjpcdFx0fVxuIDYxNzpcdFxuIDYxODpcdFx0c2V0dXBfdWRwX3R1bm5lbF9zb2NrKG5ldCwgc2ssIFx1MDAyNnR1bm5lbF9jZmcpO1xuIDYxOTpcdFxuIDYyMDpcdFx0c2stXHUwMDNlc2tfYWxsb2NhdGlvbiA9IEdGUF9BVE9NSUM7XG4gNjIxOlx0XG4gNjIyOlx0XHRlcnIgPSBmb3VfYWRkX3RvX3BvcnRfbGlzdChuZXQsIGZvdSwgY2ZnKTtcbiA2MjM6XHRcdGlmIChlcnIpXG4gNjI0Olx0XHRcdGdvdG8gZXJyb3I7XG4gNjI1Olx0XG4gNjI2Olx0XHRpZiAoc29ja3ApXG4gNjI3Olx0XHRcdCpzb2NrcCA9IHNvY2s7XG4gNjI4Olx0XG4gNjI5Olx0XHRyZXR1cm4gMDtcbiA2MzA6XHRcbiA2MzE6XHRlcnJvcjpcbiA2MzI6XHRcdGlmIChzb2NrKVxuIDYzMzpcdFx0XHR1ZHBfdHVubmVsX3NvY2tfcmVsZWFzZShzb2NrLVx1MDAzZXNrKTtcbiA2MzQ6XHRcdGtmcmVlX3JjdShmb3UsIHJjdSk7XG4gNjM1Olx0XG4gNjM2Olx0XHRyZXR1cm4gZXJyO1xuIDYzNzpcdH1cbiA2Mzg6XHRcbiA2Mzk6XHRzdGF0aWMgaW50IGZvdV9kZXN0cm95KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZvdV9jZmcgKmNmZylcbiA2NDA6XHR7XG4gNjQxOlx0XHRzdHJ1Y3QgZm91X25ldCAqZm4gPSBuZXRfZ2VuZXJpYyhuZXQsIGZvdV9uZXRfaWQpO1xuIDY0MjpcdFx0aW50IGVyciA9IC1FSU5WQUw7XG4gNjQzOlx0XHRzdHJ1Y3QgZm91ICpmb3U7XG4gNjQ0Olx0XG4gNjQ1Olx0XHRtdXRleF9sb2NrKFx1MDAyNmZuLVx1MDAzZWZvdV9sb2NrKTtcbiA2NDY6XHRcdGxpc3RfZm9yX2VhY2hfZW50cnkoZm91LCBcdTAwMjZmbi1cdTAwM2Vmb3VfbGlzdCwgbGlzdCkge1xuIDY0NzpcdFx0XHRpZiAoZm91X2NmZ19jbXAoZm91LCBjZmcpKSB7XG4gNjQ4Olx0XHRcdFx0Zm91X3JlbGVhc2UoZm91KTtcbiA2NDk6XHRcdFx0XHRlcnIgPSAwO1xuIDY1MDpcdFx0XHRcdGJyZWFrO1xuIDY1MTpcdFx0XHR9XG4gNjUyOlx0XHR9XG4gNjUzOlx0XHRtdXRleF91bmxvY2soXHUwMDI2Zm4tXHUwMDNlZm91X2xvY2spO1xuIDY1NDpcdFxuIDY1NTpcdFx0cmV0dXJuIGVycjtcbiA2NTY6XHR9XG4gNjU3Olx0XG4gNjU4Olx0c3RhdGljIHN0cnVjdCBnZW5sX2ZhbWlseSBmb3VfbmxfZmFtaWx5O1xuIDY1OTpcdFxuIDY2MDpcdHN0YXRpYyBpbnQgcGFyc2VfbmxfY29uZmlnKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXG4gNjYxOlx0XHRcdFx0ICAgc3RydWN0IGZvdV9jZmcgKmNmZylcbiA2NjI6XHR7XG4gNjYzOlx0XHRib29sIGhhc19sb2NhbCA9IGZhbHNlLCBoYXNfcGVlciA9IGZhbHNlO1xuIDY2NDpcdFx0c3RydWN0IG5sYXR0ciAqYXR0cjtcbiA2NjU6XHRcdGludCBpZmluZGV4O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQxOTAKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAzMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBBIERlZXAgRGl2ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgY2hhbmdlIGZyb20gYGtmcmVlKGZvdSlgIHRvIGBrZnJlZV9yY3UoZm91LCByY3UpYC4gVGhhdCYjMzk7cyBhIHJlZCBmbGFnIOKAkyBhIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIG9yIGEgc2ltaWxhciBtZW1vcnkgc2FmZXR5IGlzc3VlIGlzIGJlaW5nIGFkZHJlc3NlZCBoZXJlLiBUaGUgY29udGV4dCBpcyBgZm91X2NyZWF0ZWAsIHNwZWNpZmljYWxseSBpbiB0aGUgZXJyb3IgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBlcnJvciBwYXRoIGZ1bGx5LiBUaGUgcGF0Y2ggbWVudGlvbnMgdHdvIHRyaWdnZXJzOiBmYWlsdXJlIG9mIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgb3IgYW4gaW52YWxpZCBgY2ZnLSZndDt0eXBlYC4KCldhaXQgYSBtaW51dGUsIGlmIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgZmFpbHMsIGBzZXR1cF91ZHBfdHVubmVsX3NvY2tgIGhhcyBhbHJlYWR5IGJlZW4gaW52b2tlZC4gQW5kIHRoYXQgZnVuY3Rpb24sIGNydWNpYWxseSwgc2V0cyBgc2stJmd0O3NrX3VzZXJfZGF0YSA9IGZvdWAuIFRoaXMgbWVhbnMgYGZvdWAgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc29ja2V0LiBUaGVuLCBgdWRwX3R1bm5lbF9zb2NrX3JlbGVhc2VgIGlzIGNhbGxlZCwgcG90ZW50aWFsbHkgYWZ0ZXIgdGhhdCBlcnJvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGRvZXMgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCAob3Igc29tZXRoaW5nIGl0IGNhbGxzLCBsaWtlIGBza19kZXN0cnVjdGApIHRvdWNoIGBza191c2VyX2RhdGFgPyBUaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcywgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCBpcyBjbG9zaW5nIHRoZSBzb2NrZXQsIHdoaWNoIG1lYW5zIHRoZXJlIGNvdWxkIGJlIFJDVSByZWFkZXJzIGFjY2Vzc2luZyBgc2tfdXNlcl9kYXRhYCAod2hpY2ggaXMgYGZvdWApLiBUaGF04oCZcyBpdCEgVGhlIG5lZWQgZm9yIGBrZnJlZV9yY3VgIGlzIG5vdyBvYnZpb3VzLiBXZSBuZWVkIHRvIGRlbGF5IHRoZSBmcmVlaW5nIG9mIGBmb3VgIHVudGlsIGFsbCBSQ1UgcmVhZGVycyBhcmUgZG9uZSB3aXRoIGl0LgoKVGhpcyBpcyBkZWZpbml0ZWx5IGEgZnVuY3Rpb25hbCBjaGFuZ2UgYW5kIGFic29sdXRlbHkgd29ydGggZnV6emluZy4gVGhlIGtleSBmdW5jdGlvbnMgdG8gdGFyZ2V0IGR1cmluZyBmdXp6aW5nIHNlZW0gdG8gYmUgYGZvdV9jcmVhdGVgLCBgZm91X2FkZF90b19wb3J0X2xpc3RgLCBhbmQgYGZvdV9ubF9hZGRfZG9pdGAuIEkmIzM5O2xsIGFsc28gd2FudCB0byBtYWtlIHN1cmUgdGhlIGBORVRfRk9VYCBjb25maWcgaXMgZW5hYmxlZC4gSSBzaG91bGQgcHJvYmFibHkgY2hlY2sgdGhlIEtjb25maWcgZm9yIGBmb3VfY29yZS5jYCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciByZWxldmFudCBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm91X2NvcmUubyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9NYWtlZmlsZT0yNj1ncmUteSA6PSBncmVfZGVtdXgub1xubmV0L2lwdjQvTWFrZWZpbGU6Mjc6Zm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9cbm5ldC9pcHY0L01ha2VmaWxlLTI4LW9iai0kKENPTkZJR19ORVRfRk9VKSAmIzQzOz0gZm91Lm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MDM3CgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIGlzc3VlOgoKKipBbmFseXppbmcgdGhlIENvbmZpZ3VyYXRpb24gYW5kIEZ1bmN0aW9uKioKCk9rYXksIHNvIHRoZSBpc3N1ZSBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBgQ09ORklHX05FVF9GT1VgLiBSaWdodCwgdGhhdCYjMzk7cyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24uIE5vdywgdGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgaW50byB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IOKAkyBJIHNob3VsZCBiZSBsb29raW5nIGF0IGBmb3VfbmxfYWRkX2RvaXRgLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSBhY3Rpb24gaXMgbGlrZWx5IGhhcHBlbmluZy4gSSYjMzk7bGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzLCB3aGF0IGRhdGEgaXQgb3BlcmF0ZXMgb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBzb21lIHNwZWNpZmljIG51YW5jZXMgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgRk9VIChVRFAgdHVubmVsKSBoYW5kbGluZy4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBjb2RlIHJldmVhbHMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIzIDAyOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZvdV9ubF9hZGRfZG9pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZvdV9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X2NvcmUuYz02NjA9c3RhdGljIGludCBwYXJzZV9ubF9jb25maWcoc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jLTc1MC1cbm5ldC9pcHY0L2ZvdV9jb3JlLmM6NzUxOmludCBmb3VfbmxfYWRkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNzUyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTM3MgoJCQkJCQkJb3V0cHV0OiAzOAoJCQkJCQkJdGhvdWdodHM6IDEyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIGBmb3VfbmxfYWRkX2RvaXRgIEZ1bmN0aW9uKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoYXQmIzM5O3MgZ29pbmcgb24gd2l0aCB0aGlzIGBmb3VfbmxfYWRkX2RvaXRgIGZ1bmN0aW9uLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGlzIGl0IHN0YXRpYz8gTGV0JiMzOTtzIGNsYXJpZnksIGl0JiMzOTtzIGRlZmluZWQgYXMgYGludCBmb3VfbmxfYWRkX2RvaXRgIC0gbm8gYHN0YXRpY2Aga2V5d29yZCwgd2hpY2ggbWVhbnMgaXQmIzM5O3Mgbm90IGxvY2FsIHRvIGEgc3BlY2lmaWMgZmlsZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB3aGV0aGVyIGl0JiMzOTtzIGV4cG9ydGVkIG9yIHVzZWQgd2l0aGluIGBmb3VfbmwuY2AgaXRzZWxmLgoKQWxyaWdodCwgbGV0IG1lIGNvbnN1bHQgdGhlIE1ha2VmaWxlLiBBaCwgaXQgc2hvd3MgdGhhdCBgZm91LXkgOj0gZm91X2NvcmUubyBmb3VfbmwubyBmb3VfYnBmLm9gLiBHaXZlbiB0aGF0IGl0IGluY2x1ZGVzIGBmb3Vfbmwub2AsIGFuZCBpc24mIzM5O3Qgc3RhdGljLCBpdCYjMzk7cyB2ZXJ5IGxpa2VseSB0aGF0IGBmb3VfbmxfYWRkX2RvaXRgIGlzIGRlZmluZWQgaW4gYGZvdV9jb3JlLmNgIGJ1dCBjYWxsZWQgZnJvbSB3aXRoaW4gYGZvdV9ubC5jYC4KClRvIGNvbmZpcm0gdGhpcyBoeXBvdGhlc2lzLCBJIHNob3VsZCByZWFsbHkganVzdCBnbyBhaGVhZCBhbmQgZXhhbWluZSB0aGUgY29udGVudHMgb2YgYGZvdV9ubC5jYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm91X25sX2FkZF9kb2l0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X25sLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X25sLmM9MzA9Y29uc3Qgc3RydWN0IGdlbmxfc21hbGxfb3BzIGZvdV9ubF9vcHNbM10gPSB7XG4tLVxubmV0L2lwdjQvZm91X25sLmMtMzMtXHRcdC52YWxpZGF0ZVx0PSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXG5uZXQvaXB2NC9mb3VfbmwuYzozNDpcdFx0LmRvaXRcdFx0PSBmb3VfbmxfYWRkX2RvaXQsXG5uZXQvaXB2NC9mb3VfbmwuYy0zNS1cdFx0LmZsYWdzXHRcdD0gR0VOTF9BRE1JTl9QRVJNLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1OTEwCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogNDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRm9jdXNpbmcgSW4qKgoKUmlnaHQsIHRoYXQgc2VlbXMgYWJvdXQgcmlnaHQuICpmb3VcX25sXF9hZGRcX2RvaXQqIC0geWVzLCB0aGF0IGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIGNlbnRlciBteSBhdHRlbnRpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgYSBrZXkgZm9jdXMgc3ltYm9sLiBBbmQgKmZvdVxfY3JlYXRlKiB0b28sIEnigJlkIGFncmVlIHdpdGggdGhhdC4gQm90aCB0aGVzZSBzZWVtIGxpa2UgcGl2b3RhbCBwb2ludHMgaW4gdGhlIHByb2Nlc3MuCgpOb3csIGxldCYjMzk7cyBqdXN0IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZy4gSSBzaG91bGQgZG91YmxlIGNoZWNrICpmb3VcX2FkZFxfdG9cX3BvcnRcX2xpc3QqIHRvby4gTWFraW5nIHN1cmUgdGhpcyBwYXJ0aWN1bGFyIHByb2Nlc3MgaXMgdW5kZXJzdG9vZCB3aWxsIGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmb3VfYWRkX3RvX3BvcnRfbGlzdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9pcHY0L2ZvdV9jb3JlLmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjQvZm91X2NvcmUuYz01MDk9c3RhdGljIGJvb2wgZm91X2NmZ19jbXAoc3RydWN0IGZvdSAqZm91LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnKVxuLS1cbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTM4LVxubmV0L2lwdjQvZm91X2NvcmUuYzo1Mzk6c3RhdGljIGludCBmb3VfYWRkX3RvX3BvcnRfbGlzdChzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmb3UgKmZvdSxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTQwLVx0XHRcdFx0c3RydWN0IGZvdV9jZmcgKmNmZylcbi0tXG5uZXQvaXB2NC9mb3VfY29yZS5jPTU2Nj1zdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxuLS1cbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNjIxLVxubmV0L2lwdjQvZm91X2NvcmUuYzo2MjI6XHRlcnIgPSBmb3VfYWRkX3RvX3BvcnRfbGlzdChuZXQsIGZvdSwgY2ZnKTtcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNjIzLVx0aWYgKGVycilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjMgMDI6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjM2NQoJCQkJCQkJb3V0cHV0OiAxMDUKCQkJCQkJCXRob3VnaHRzOiAxMzYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgVGhpcyBGT1UgUGF0Y2gqKgoKT2theSwgc28gdGhpcyBgZm91X2FkZF90b19wb3J0X2xpc3RgIGZ1bmN0aW9uIGlzIHN0YXRpYywgd2hpY2ggaXMgZ29vZCB0byBrZWVwIGluIG1pbmQgZm9yIHNjb3BpbmcuIExldCYjMzk7cyBicmVhayBkb3duIHdoYXQgd2UmIzM5O3JlIGxvb2tpbmcgYXQgaGVyZS4KCkVzc2VudGlhbGx5LCB0aGlzIHBhdGNoIGlzIG1hcmtlZCBhcyBgV29ydGhGdXp6aW5nOiB0cnVlYCwgd2hpY2ggaW1tZWRpYXRlbHkgcGlxdWVzIG15IGludGVyZXN0LiBUaGUgcHJpbWFyeSBmdW5jdGlvbnMgdGFyZ2V0ZWQgZm9yIGZ1enppbmcgYXJlIGBmb3VfY3JlYXRlYCBhbmQgYGZvdV9ubF9hZGRfZG9pdGAuIFdlJiMzOTtyZSBlbmFibGluZyB0aGlzIHdpdGggYE5FVF9GT1VgLCB3aGljaCBtYWtlcyBwZXJmZWN0IHNlbnNlIGdpdmVuIHRoZSBmb2N1cy4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgYGZvdV9jcmVhdGVgLiBJdCYjMzk7cyBhY2hpZXZpbmcgdGhpcyB3aXRoIGEgY29tYmluYXRpb24gb2YgYGtmcmVlX3JjdWAgYW5kIHNvbWUgY2xlYW51cCByZW9yZGVyaW5nLiBUaGlzIGluZGljYXRlcyBhIGZ1bmN0aW9uYWwgbW9kaWZpY2F0aW9uIHRvIHRoZSBmdW5kYW1lbnRhbCBGb28gb3ZlciBVRFAgKEZPVSkgaW1wbGVtZW50YXRpb24uIFdl4oCZcmUgZml4aW5nIGEgbWVtb3J5IHNhZmV0eSBpc3N1ZSBpbiBhIGNyaXRpY2FsIHBhcnQgb2YgdGhlIEZPVSBsb2dpYy4KCkp1c3QgdG8gYmUgdGhvcm91Z2gsIEkmIzM5O20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX0ZPVWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUsIGFuZCBpdCBhcHBlYXJzIHRoYXQmIzM5O3MgdGhlIGNhc2UuIFRoYXQgY29uZmlybXMgdGhlIHNjb3BlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMyAwMjo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0ZPVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZvdV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Zm91X25sX2FkZF9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TkVUX0ZPVSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2ZvdV9jcmVhdGUmIzM0OywKICAgICYjMzQ7Zm91X25sX2FkZF9kb2l0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjAxLjk5MDA5NDE2MVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI5NDQ4MjEwOTI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5FVF9GT1VcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJmb3VfY3JlYXRlXCIsXG4gICAgXCJmb3VfbmxfYWRkX2RvaXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSBpbiB0aGUgZXJyb3IgcGF0aCBvZiBgZm91X2NyZWF0ZWAgYnkgdXNpbmcgYGtmcmVlX3JjdWAgYW5kIHJlb3JkZXJpbmcgdGhlIGNsZWFudXAuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBGT1UgKEZvbyBvdmVyIFVEUCkgbG9naWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjAxLjk5MDEwMjI2MVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjU2NzIzMjQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgM2Q2Y2UyNGQ3M2Y2Y2UxZWZlMzI3ZmMzMTIxYzBmOTJiNTE4YTNjNFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgVGh1IEp1bCAyMyAwMjo0NzowMCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xcbmluZGV4IDg2NWJkNzIwNTEyMmQyLi5hYjA5ZGZjZGVjYmQ1OSAxMDA2NDRcXG4tLS0gYS9uZXQvaXB2NC9mb3VfY29yZS5jXFxuKysrIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xcbkBAIC02MjksOSArNjI5LDkgQEAgc3RhdGljIGludCBmb3VfY3JlYXRlKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZvdV9jZmcgKmNmZyxcXG4gXFx0cmV0dXJuIDA7XFxuIFxcbiBlcnJvcjpcXG4tXFx0a2ZyZWUoZm91KTtcXG4gXFx0aWYgKHNvY2spXFxuIFxcdFxcdHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNvY2stXFx1MDAzZXNrKTtcXG4rXFx0a2ZyZWVfcmN1KGZvdSwgcmN1KTtcXG4gXFxuIFxcdHJldHVybiBlcnI7XFxuIH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MDIuNjQ3Nzc0ODk0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mjg3OTA1MTc2MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvdV9jcmVhdGVcIixcbiAgICBcImZvdV9ubF9hZGRfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdFxuICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LFxuICAgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCAzZDZjZTI0ZDczZjZjZTFlZmUzMjdmYzMxMjFjMGY5MmI1MThhM2M0XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBKdWwgMjMgMDI6NDc6MDAgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2NC9mb3VfY29yZS5jIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xuaW5kZXggODY1YmQ3MjA1MTIyZDIuLmFiMDlkZmNkZWNiZDU5IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjQvZm91X2NvcmUuY1xuKysrIGIvbmV0L2lwdjQvZm91X2NvcmUuY1xuQEAgLTYyOSw5ICs2MjksOSBAQCBzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxuIFx0cmV0dXJuIDA7XG4gXG4gZXJyb3I6XG4tXHRrZnJlZShmb3UpO1xuIFx0aWYgKHNvY2spXG4gXHRcdHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNvY2stXHUwMDNlc2spO1xuK1x0a2ZyZWVfcmN1KGZvdSwgcmN1KTtcbiBcbiBcdHJldHVybiBlcnI7XG4gfVxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MDIuNjQ3Nzc3MDU0WiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAxNTgyNTU4MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWNlbnQgTmV0d29yayBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggdGhhdCB0d2Vha3MgYG5ldC9pcHY0L2ZvdV9jb3JlLmNgLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGJlIHJlZmluaW5nIHRoZSBlcnJvciBoYW5kbGluZyBpbiBgZm91X2NyZWF0ZWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIkFoLCB0aGV5J3JlIG1vZGlmeWluZyB0aGUgZXJyb3IgcGF0aC5cIiBJIG5vdGljZSB0aGUgY2hhbmdlOiBpdCBhcHBlYXJzIHRoZSBwYXRjaCBpcyBzd2FwcGluZyB0aGUgb3JkZXIgb2YgZnJlZXMgaW4gdGhlIGBlcnJvcjpgIGxhYmVsLiBJdCB1c2VkIHRvIGZyZWUgYGZvdWAgZGlyZWN0bHkuIE5vdywgdGhlcmUncyBhIGNvbmRpdGlvbmFsIHJlbGVhc2Ugb2YgdGhlIHNvY2tldCwgdGhlbiBgZm91YCBpcyBmcmVlZCB1c2luZyBga2ZyZWVfcmN1YC5cblxuV2FpdCBhIG1pbnV0ZSwgYGZvdV9jcmVhdGVgICpremFsbG9jJ3MqIGBmb3VgLiBTbywgdGhleSdyZSBpbml0aWFsaXppbmcgdGhlIG1lbW9yeSBhdCBhbGxvY2F0aW9uLiBUaGF0J3MgZ29vZCBwcmFjdGljZS4gSSB3YW50IHRvIHVuZGVyc3RhbmQgd2h5IHRoZXkndmUgY2hhbmdlZCB0aGUgZnJlZWluZyBzdHJhdGVneS4gYGtmcmVlX3JjdWAgaW1wbGllcyBhIG5lZWQgZm9yIGEgZ3JhY2UgcGVyaW9kLCBsaWtlbHkgZHVlIHRvIFJDVS1wcm90ZWN0ZWQgZGF0YS4gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIExldCBtZSBxdWlja2x5IHJlZnJlc2ggbXkgbWVtb3J5IG9mIHRoZSBjb250ZXh0LiBJJ2xsIHRha2UgYSBxdWljayBsb29rIGF0IGBmb3VfY3JlYXRlYCBpdHNlbGYsIHNlZSB3aGF0J3MgZ29pbmcgb24gdGhlcmUuIEknbGwgZ28gY2hlY2sgdGhhdCBmdW5jdGlvbiBvdXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NzQsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjQsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzowNi42NjM2MDY0NDdaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ2NTIwMjc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvdV9jcmVhdGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvZm91X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jPTU1OT1zdGF0aWMgdm9pZCBmb3VfcmVsZWFzZShzdHJ1Y3QgZm91ICpmb3UpXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTU2NS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjU2NjpzdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTY3LVxcdFxcdCAgICAgIHN0cnVjdCBzb2NrZXQgKipzb2NrcClcXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM9NzUxPWludCBmb3VfbmxfYWRkX2RvaXQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IGdlbmxfaW5mbyAqaW5mbylcXG4tLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNzYwLVxcbm5ldC9pcHY0L2ZvdV9jb3JlLmM6NzYxOlxcdHJldHVybiBmb3VfY3JlYXRlKG5ldCwgXFx1MDAyNmNmZywgTlVMTCk7XFxubmV0L2lwdjQvZm91X2NvcmUuYy03NjItfVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzowNi44MTAxMzIxMzdaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNTgzMDg4MTUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqRGl2aW5nIGludG8gYGZvdV9jcmVhdGVgKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYGZvdV9jcmVhdGVgLCB3aGljaCwgaWYgSSByZW1lbWJlciBjb3JyZWN0bHksIGxpdmVzIHdpdGhpbiBgbmV0L2lwdjQvZm91X2NvcmUuY2AuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIlJpZ2h0LCB0aGlzIGlzIHdoZXJlIHRoZSAqbWFnaWMqIGhhcHBlbnMgZm9yIGNyZWF0aW5nIGEgRk9VIChVRFAvSVB2NCBlbmNhcHN1bGF0aW9uKSB0dW5uZWwgaW5zdGFuY2UuXCIgSSB3YW50IHRvIHF1aWNrbHkgcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIGNyaXRpY2FsIHBhdGgsIHRoZSBjb3JlIGxvZ2ljIGhlcmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBpbml0aWFsaXplZCwgaG93IHRoZSBzb2NrZXQgb3B0aW9ucyBhcmUgaGFuZGxlZCwgYW5kIG1vc3QgaW1wb3J0YW50bHksIHRoZSBpbnRlcmFjdGlvbiB3aXRoIHRoZSB1bmRlcmx5aW5nIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSB3aWxsIGJlIGEgc2VjdGlvbiB0aGF0IGRlYWxzIHdpdGggYWxsb2NhdGluZyBhbmQgbGlua2luZyB0aGUgRk9VIGRldmljZSB0byB0aGUgYXNzb2NpYXRlZCBuZXQgbmFtZXNwYWNlLiBJIGV4cGVjdCB0byBiZSB0cmFjaW5nIGNhbGxzIGludG8gdGhlIG5ldHdvcmsgc3RhY2suIEknbGwgbmVlZCB0byBwYXkgY2xvc2UgYXR0ZW50aW9uIHRvIHRoZSBlcnJvciBoYW5kbGluZyBwYXRocyBhcyB3ZWxsLCBlc3BlY2lhbGx5IGFueXRoaW5nIHJlbGF0ZWQgdG8gcmVzb3VyY2UgYWxsb2NhdGlvbiBmYWlsdXJlcyBvciBjb25mbGljdGluZyBjb25maWd1cmF0aW9ucy4gSSdtIGdvaW5nIHRvIHdhbnQgdG8gdW5kZXJzdGFuZCB3aGF0IGxvY2tpbmcgbWVjaGFuaXNtcyBhcmUgaW4gcGxheSwgdG9vLCB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aHJlYWQtc2FmZSBhbmQgZG9lc24ndCBpbnRyb2R1Y2UgYW55IHJhY2UgY29uZGl0aW9ucy4gRmluYWxseSwgSSdsbCBiZSBsb29raW5nIGZvciBpbnRlcmFjdGlvbiB3aXRoIGFueSBvdGhlciBrZXJuZWwgbW9kdWxlcyBvciBzdWJzeXN0ZW1zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDk2LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MTAuMzkzMjIyNTdaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEwODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L2lwdjQvZm91X2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA1NjYsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNTY2OlxcdHN0YXRpYyBpbnQgZm91X2NyZWF0ZShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBmb3VfY2ZnICpjZmcsXFxuIDU2NzpcXHRcXHRcXHQgICAgICBzdHJ1Y3Qgc29ja2V0ICoqc29ja3ApXFxuIDU2ODpcXHR7XFxuIDU2OTpcXHRcXHRzdHJ1Y3Qgc29ja2V0ICpzb2NrID0gTlVMTDtcXG4gNTcwOlxcdFxcdHN0cnVjdCBmb3UgKmZvdSA9IE5VTEw7XFxuIDU3MTpcXHRcXHRzdHJ1Y3Qgc29jayAqc2s7XFxuIDU3MjpcXHRcXHRzdHJ1Y3QgdWRwX3R1bm5lbF9zb2NrX2NmZyB0dW5uZWxfY2ZnO1xcbiA1NzM6XFx0XFx0aW50IGVycjtcXG4gNTc0OlxcdFxcbiA1NzU6XFx0XFx0LyogT3BlbiBVRFAgc29ja2V0ICovXFxuIDU3NjpcXHRcXHRlcnIgPSB1ZHBfc29ja19jcmVhdGUobmV0LCBcXHUwMDI2Y2ZnLVxcdTAwM2V1ZHBfY29uZmlnLCBcXHUwMDI2c29jayk7XFxuIDU3NzpcXHRcXHRpZiAoZXJyIFxcdTAwM2MgMClcXG4gNTc4OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDU3OTpcXHRcXG4gNTgwOlxcdFxcdC8qIEFsbG9jYXRlIEZPVSBwb3J0IHN0cnVjdHVyZSAqL1xcbiA1ODE6XFx0XFx0Zm91ID0ga3phbGxvY19vYmooKmZvdSk7XFxuIDU4MjpcXHRcXHRpZiAoIWZvdSkge1xcbiA1ODM6XFx0XFx0XFx0ZXJyID0gLUVOT01FTTtcXG4gNTg0OlxcdFxcdFxcdGdvdG8gZXJyb3I7XFxuIDU4NTpcXHRcXHR9XFxuIDU4NjpcXHRcXG4gNTg3OlxcdFxcdHNrID0gc29jay1cXHUwMDNlc2s7XFxuIDU4ODpcXHRcXG4gNTg5OlxcdFxcdGZvdS1cXHUwMDNlcG9ydCA9IGNmZy1cXHUwMDNldWRwX2NvbmZpZy5sb2NhbF91ZHBfcG9ydDtcXG4gNTkwOlxcdFxcdGZvdS1cXHUwMDNlZmFtaWx5ID0gY2ZnLVxcdTAwM2V1ZHBfY29uZmlnLmZhbWlseTtcXG4gNTkxOlxcdFxcdGZvdS1cXHUwMDNlZmxhZ3MgPSBjZmctXFx1MDAzZWZsYWdzO1xcbiA1OTI6XFx0XFx0Zm91LVxcdTAwM2V0eXBlID0gY2ZnLVxcdTAwM2V0eXBlO1xcbiA1OTM6XFx0XFx0Zm91LVxcdTAwM2VzayA9IHNrO1xcbiA1OTQ6XFx0XFxuIDU5NTpcXHRcXHRtZW1zZXQoXFx1MDAyNnR1bm5lbF9jZmcsIDAsIHNpemVvZih0dW5uZWxfY2ZnKSk7XFxuIDU5NjpcXHRcXHR0dW5uZWxfY2ZnLmVuY2FwX3R5cGUgPSAxO1xcbiA1OTc6XFx0XFx0dHVubmVsX2NmZy5za191c2VyX2RhdGEgPSBmb3U7XFxuIDU5ODpcXHRcXHR0dW5uZWxfY2ZnLmVuY2FwX2Rlc3Ryb3kgPSBOVUxMO1xcbiA1OTk6XFx0XFxuIDYwMDpcXHRcXHQvKiBJbml0aWFsIGZvciBmb3UgdHlwZSAqL1xcbiA2MDE6XFx0XFx0c3dpdGNoIChjZmctXFx1MDAzZXR5cGUpIHtcXG4gNjAyOlxcdFxcdGNhc2UgRk9VX0VOQ0FQX0RJUkVDVDpcXG4gNjAzOlxcdFxcdFxcdHR1bm5lbF9jZmcuZW5jYXBfcmN2ID0gZm91X3VkcF9yZWN2O1xcbiA2MDQ6XFx0XFx0XFx0dHVubmVsX2NmZy5ncm9fcmVjZWl2ZSA9IGZvdV9ncm9fcmVjZWl2ZTtcXG4gNjA1OlxcdFxcdFxcdHR1bm5lbF9jZmcuZ3JvX2NvbXBsZXRlID0gZm91X2dyb19jb21wbGV0ZTtcXG4gNjA2OlxcdFxcdFxcdGZvdS1cXHUwMDNlcHJvdG9jb2wgPSBjZmctXFx1MDAzZXByb3RvY29sO1xcbiA2MDc6XFx0XFx0XFx0YnJlYWs7XFxuIDYwODpcXHRcXHRjYXNlIEZPVV9FTkNBUF9HVUU6XFxuIDYwOTpcXHRcXHRcXHR0dW5uZWxfY2ZnLmVuY2FwX3JjdiA9IGd1ZV91ZHBfcmVjdjtcXG4gNjEwOlxcdFxcdFxcdHR1bm5lbF9jZmcuZ3JvX3JlY2VpdmUgPSBndWVfZ3JvX3JlY2VpdmU7XFxuIDYxMTpcXHRcXHRcXHR0dW5uZWxfY2ZnLmdyb19jb21wbGV0ZSA9IGd1ZV9ncm9fY29tcGxldGU7XFxuIDYxMjpcXHRcXHRcXHRicmVhaztcXG4gNjEzOlxcdFxcdGRlZmF1bHQ6XFxuIDYxNDpcXHRcXHRcXHRlcnIgPSAtRUlOVkFMO1xcbiA2MTU6XFx0XFx0XFx0Z290byBlcnJvcjtcXG4gNjE2OlxcdFxcdH1cXG4gNjE3OlxcdFxcbiA2MTg6XFx0XFx0c2V0dXBfdWRwX3R1bm5lbF9zb2NrKG5ldCwgc2ssIFxcdTAwMjZ0dW5uZWxfY2ZnKTtcXG4gNjE5OlxcdFxcbiA2MjA6XFx0XFx0c2stXFx1MDAzZXNrX2FsbG9jYXRpb24gPSBHRlBfQVRPTUlDO1xcbiA2MjE6XFx0XFxuIDYyMjpcXHRcXHRlcnIgPSBmb3VfYWRkX3RvX3BvcnRfbGlzdChuZXQsIGZvdSwgY2ZnKTtcXG4gNjIzOlxcdFxcdGlmIChlcnIpXFxuIDYyNDpcXHRcXHRcXHRnb3RvIGVycm9yO1xcbiA2MjU6XFx0XFxuIDYyNjpcXHRcXHRpZiAoc29ja3ApXFxuIDYyNzpcXHRcXHRcXHQqc29ja3AgPSBzb2NrO1xcbiA2Mjg6XFx0XFxuIDYyOTpcXHRcXHRyZXR1cm4gMDtcXG4gNjMwOlxcdFxcbiA2MzE6XFx0ZXJyb3I6XFxuIDYzMjpcXHRcXHRpZiAoc29jaylcXG4gNjMzOlxcdFxcdFxcdHVkcF90dW5uZWxfc29ja19yZWxlYXNlKHNvY2stXFx1MDAzZXNrKTtcXG4gNjM0OlxcdFxcdGtmcmVlX3JjdShmb3UsIHJjdSk7XFxuIDYzNTpcXHRcXG4gNjM2OlxcdFxcdHJldHVybiBlcnI7XFxuIDYzNzpcXHR9XFxuIDYzODpcXHRcXG4gNjM5OlxcdHN0YXRpYyBpbnQgZm91X2Rlc3Ryb3koc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnKVxcbiA2NDA6XFx0e1xcbiA2NDE6XFx0XFx0c3RydWN0IGZvdV9uZXQgKmZuID0gbmV0X2dlbmVyaWMobmV0LCBmb3VfbmV0X2lkKTtcXG4gNjQyOlxcdFxcdGludCBlcnIgPSAtRUlOVkFMO1xcbiA2NDM6XFx0XFx0c3RydWN0IGZvdSAqZm91O1xcbiA2NDQ6XFx0XFxuIDY0NTpcXHRcXHRtdXRleF9sb2NrKFxcdTAwMjZmbi1cXHUwMDNlZm91X2xvY2spO1xcbiA2NDY6XFx0XFx0bGlzdF9mb3JfZWFjaF9lbnRyeShmb3UsIFxcdTAwMjZmbi1cXHUwMDNlZm91X2xpc3QsIGxpc3QpIHtcXG4gNjQ3OlxcdFxcdFxcdGlmIChmb3VfY2ZnX2NtcChmb3UsIGNmZykpIHtcXG4gNjQ4OlxcdFxcdFxcdFxcdGZvdV9yZWxlYXNlKGZvdSk7XFxuIDY0OTpcXHRcXHRcXHRcXHRlcnIgPSAwO1xcbiA2NTA6XFx0XFx0XFx0XFx0YnJlYWs7XFxuIDY1MTpcXHRcXHRcXHR9XFxuIDY1MjpcXHRcXHR9XFxuIDY1MzpcXHRcXHRtdXRleF91bmxvY2soXFx1MDAyNmZuLVxcdTAwM2Vmb3VfbG9jayk7XFxuIDY1NDpcXHRcXG4gNjU1OlxcdFxcdHJldHVybiBlcnI7XFxuIDY1NjpcXHR9XFxuIDY1NzpcXHRcXG4gNjU4OlxcdHN0YXRpYyBzdHJ1Y3QgZ2VubF9mYW1pbHkgZm91X25sX2ZhbWlseTtcXG4gNjU5OlxcdFxcbiA2NjA6XFx0c3RhdGljIGludCBwYXJzZV9ubF9jb25maWcoc3RydWN0IGdlbmxfaW5mbyAqaW5mbyxcXG4gNjYxOlxcdFxcdFxcdFxcdCAgIHN0cnVjdCBmb3VfY2ZnICpjZmcpXFxuIDY2MjpcXHR7XFxuIDY2MzpcXHRcXHRib29sIGhhc19sb2NhbCA9IGZhbHNlLCBoYXNfcGVlciA9IGZhbHNlO1xcbiA2NjQ6XFx0XFx0c3RydWN0IG5sYXR0ciAqYXR0cjtcXG4gNjY1OlxcdFxcdGludCBpZmluZGV4O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzoxMC4zOTMzOTM5NFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU3MDIzMTY2OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgS2VybmVsIFBhdGNoOiBBIERlZXAgRGl2ZSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5IHNlZSBhIGNoYW5nZSBmcm9tIGBrZnJlZShmb3UpYCB0byBga2ZyZWVfcmN1KGZvdSwgcmN1KWAuIFRoYXQncyBhIHJlZCBmbGFnIOKAkyBhIHBvc3NpYmxlIHVzZS1hZnRlci1mcmVlIG9yIGEgc2ltaWxhciBtZW1vcnkgc2FmZXR5IGlzc3VlIGlzIGJlaW5nIGFkZHJlc3NlZCBoZXJlLiBUaGUgY29udGV4dCBpcyBgZm91X2NyZWF0ZWAsIHNwZWNpZmljYWxseSBpbiB0aGUgZXJyb3IgcGF0aC4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBlcnJvciBwYXRoIGZ1bGx5LiBUaGUgcGF0Y2ggbWVudGlvbnMgdHdvIHRyaWdnZXJzOiBmYWlsdXJlIG9mIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgb3IgYW4gaW52YWxpZCBgY2ZnLVx1MDAzZXR5cGVgLlxuXG5XYWl0IGEgbWludXRlLCBpZiBgZm91X2FkZF90b19wb3J0X2xpc3RgIGZhaWxzLCBgc2V0dXBfdWRwX3R1bm5lbF9zb2NrYCBoYXMgYWxyZWFkeSBiZWVuIGludm9rZWQuIEFuZCB0aGF0IGZ1bmN0aW9uLCBjcnVjaWFsbHksIHNldHMgYHNrLVx1MDAzZXNrX3VzZXJfZGF0YSA9IGZvdWAuIFRoaXMgbWVhbnMgYGZvdWAgaXMgYXNzb2NpYXRlZCB3aXRoIGEgc29ja2V0LiBUaGVuLCBgdWRwX3R1bm5lbF9zb2NrX3JlbGVhc2VgIGlzIGNhbGxlZCwgcG90ZW50aWFsbHkgYWZ0ZXIgdGhhdCBlcnJvci4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGRvZXMgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCAob3Igc29tZXRoaW5nIGl0IGNhbGxzLCBsaWtlIGBza19kZXN0cnVjdGApIHRvdWNoIGBza191c2VyX2RhdGFgPyBUaGUgYW5zd2VyIHNlZW1zIHRvIGJlIHllcywgYHVkcF90dW5uZWxfc29ja19yZWxlYXNlYCBpcyBjbG9zaW5nIHRoZSBzb2NrZXQsIHdoaWNoIG1lYW5zIHRoZXJlIGNvdWxkIGJlIFJDVSByZWFkZXJzIGFjY2Vzc2luZyBgc2tfdXNlcl9kYXRhYCAod2hpY2ggaXMgYGZvdWApLiBUaGF04oCZcyBpdCEgVGhlIG5lZWQgZm9yIGBrZnJlZV9yY3VgIGlzIG5vdyBvYnZpb3VzLiBXZSBuZWVkIHRvIGRlbGF5IHRoZSBmcmVlaW5nIG9mIGBmb3VgIHVudGlsIGFsbCBSQ1UgcmVhZGVycyBhcmUgZG9uZSB3aXRoIGl0LlxuXG5UaGlzIGlzIGRlZmluaXRlbHkgYSBmdW5jdGlvbmFsIGNoYW5nZSBhbmQgYWJzb2x1dGVseSB3b3J0aCBmdXp6aW5nLiBUaGUga2V5IGZ1bmN0aW9ucyB0byB0YXJnZXQgZHVyaW5nIGZ1enppbmcgc2VlbSB0byBiZSBgZm91X2NyZWF0ZWAsIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAsIGFuZCBgZm91X25sX2FkZF9kb2l0YC4gSSdsbCBhbHNvIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBgTkVUX0ZPVWAgY29uZmlnIGlzIGVuYWJsZWQuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoZSBLY29uZmlnIGZvciBgZm91X2NvcmUuY2AgdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgcmVsZXZhbnQgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTkwLCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEwLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MTYuMDk1NzEzMzkyWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDk1Mjk2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmb3VfY29yZS5vXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9NYWtlZmlsZT0yNj1ncmUteSA6PSBncmVfZGVtdXgub1xcbm5ldC9pcHY0L01ha2VmaWxlOjI3OmZvdS15IDo9IGZvdV9jb3JlLm8gZm91X25sLm8gZm91X2JwZi5vXFxubmV0L2lwdjQvTWFrZWZpbGUtMjgtb2JqLSQoQ09ORklHX05FVF9GT1UpICs9IGZvdS5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjE2LjI0MDY3MTQ2MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3OTM4MTU3MjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgaWYgSSB3ZXJlIGNvbnNpZGVyaW5nIHRoaXMgaXNzdWU6XG5cbioqQW5hbHl6aW5nIHRoZSBDb25maWd1cmF0aW9uIGFuZCBGdW5jdGlvbioqXG5cbk9rYXksIHNvIHRoZSBpc3N1ZSBhdCBoYW5kIHJldm9sdmVzIGFyb3VuZCBgQ09ORklHX05FVF9GT1VgLiBSaWdodCwgdGhhdCdzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbi4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkg4oCTIEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgYGZvdV9ubF9hZGRfZG9pdGAuIFRoYXQncyB3aGVyZSB0aGUgYWN0aW9uIGlzIGxpa2VseSBoYXBwZW5pbmcuIEknbGwgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhpcyBmdW5jdGlvbiBkb2VzLCB3aGF0IGRhdGEgaXQgb3BlcmF0ZXMgb24sIGFuZCBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIG5ldHdvcmsgc3RhY2suIEkgYW50aWNpcGF0ZSB0aGVyZSBtaWdodCBiZSBzb21lIHNwZWNpZmljIG51YW5jZXMgZ2l2ZW4gdGhlIGNvbnRleHQgb2YgRk9VIChVRFAgdHVubmVsKSBoYW5kbGluZy4gTGV0J3Mgc2VlIHdoYXQgdGhlIGNvZGUgcmV2ZWFscy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTAzNywiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjE5LjAzNDQ5MDAwMloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYyNDczMTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImZvdV9ubF9hZGRfZG9pdFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZvdV9jb3JlLmM9NjYwPXN0YXRpYyBpbnQgcGFyc2VfbmxfY29uZmlnKHN0cnVjdCBnZW5sX2luZm8gKmluZm8sXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTc1MC1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjc1MTppbnQgZm91X25sX2FkZF9kb2l0KHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBnZW5sX2luZm8gKmluZm8pXFxubmV0L2lwdjQvZm91X2NvcmUuYy03NTIte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yM1QwMjo0NzoxOS4xOTY5NzUwM1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTI2OTgxMTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYGZvdV9ubF9hZGRfZG9pdGAgRnVuY3Rpb24qKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0J3MgZ29pbmcgb24gd2l0aCB0aGlzIGBmb3VfbmxfYWRkX2RvaXRgIGZ1bmN0aW9uLiBGaXJzdCB0aGluZ3MgZmlyc3QsIGlzIGl0IHN0YXRpYz8gTGV0J3MgY2xhcmlmeSwgaXQncyBkZWZpbmVkIGFzIGBpbnQgZm91X25sX2FkZF9kb2l0YCAtIG5vIGBzdGF0aWNgIGtleXdvcmQsIHdoaWNoIG1lYW5zIGl0J3Mgbm90IGxvY2FsIHRvIGEgc3BlY2lmaWMgZmlsZS4gTXkgZmlyc3QgdGhvdWdodCBpcyB3aGV0aGVyIGl0J3MgZXhwb3J0ZWQgb3IgdXNlZCB3aXRoaW4gYGZvdV9ubC5jYCBpdHNlbGYuXG5cbkFscmlnaHQsIGxldCBtZSBjb25zdWx0IHRoZSBNYWtlZmlsZS4gQWgsIGl0IHNob3dzIHRoYXQgYGZvdS15IDo9IGZvdV9jb3JlLm8gZm91X25sLm8gZm91X2JwZi5vYC4gR2l2ZW4gdGhhdCBpdCBpbmNsdWRlcyBgZm91X25sLm9gLCBhbmQgaXNuJ3Qgc3RhdGljLCBpdCdzIHZlcnkgbGlrZWx5IHRoYXQgYGZvdV9ubF9hZGRfZG9pdGAgaXMgZGVmaW5lZCBpbiBgZm91X2NvcmUuY2AgYnV0IGNhbGxlZCBmcm9tIHdpdGhpbiBgZm91X25sLmNgLlxuXG5UbyBjb25maXJtIHRoaXMgaHlwb3RoZXNpcywgSSBzaG91bGQgcmVhbGx5IGp1c3QgZ28gYWhlYWQgYW5kIGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGBmb3VfbmwuY2AuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzNzIsIk91dHB1dFRva2VucyI6MzgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjMuMTIzOTU5MTc5WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI2NzQ5MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm91X25sX2FkZF9kb2l0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9pcHY0L2ZvdV9ubC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L2ZvdV9ubC5jPTMwPWNvbnN0IHN0cnVjdCBnZW5sX3NtYWxsX29wcyBmb3Vfbmxfb3BzWzNdID0ge1xcbi0tXFxubmV0L2lwdjQvZm91X25sLmMtMzMtXFx0XFx0LnZhbGlkYXRlXFx0PSBHRU5MX0RPTlRfVkFMSURBVEVfU1RSSUNUIHwgR0VOTF9ET05UX1ZBTElEQVRFX0RVTVAsXFxubmV0L2lwdjQvZm91X25sLmM6MzQ6XFx0XFx0LmRvaXRcXHRcXHQ9IGZvdV9ubF9hZGRfZG9pdCxcXG5uZXQvaXB2NC9mb3VfbmwuYy0zNS1cXHRcXHQuZmxhZ3NcXHRcXHQ9IEdFTkxfQURNSU5fUEVSTSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjMuMjk2NjM5NjU3WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyOTY0ODY5NTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkZvY3VzaW5nIEluKipcblxuUmlnaHQsIHRoYXQgc2VlbXMgYWJvdXQgcmlnaHQuICpmb3VcXF9ubFxcX2FkZFxcX2RvaXQqIC0geWVzLCB0aGF0IGxvb2tzIGxpa2UgYSBnb29kIHBsYWNlIHRvIGNlbnRlciBteSBhdHRlbnRpb24uIEl04oCZcyBkZWZpbml0ZWx5IGEgc3Ryb25nIGNhbmRpZGF0ZSBmb3IgYSBrZXkgZm9jdXMgc3ltYm9sLiBBbmQgKmZvdVxcX2NyZWF0ZSogdG9vLCBJ4oCZZCBhZ3JlZSB3aXRoIHRoYXQuIEJvdGggdGhlc2Ugc2VlbSBsaWtlIHBpdm90YWwgcG9pbnRzIGluIHRoZSBwcm9jZXNzLlxuXG5Ob3csIGxldCdzIGp1c3QgY29uZmlybSBteSB1bmRlcnN0YW5kaW5nLiBJIHNob3VsZCBkb3VibGUgY2hlY2sgKmZvdVxcX2FkZFxcX3RvXFxfcG9ydFxcX2xpc3QqIHRvby4gTWFraW5nIHN1cmUgdGhpcyBwYXJ0aWN1bGFyIHByb2Nlc3MgaXMgdW5kZXJzdG9vZCB3aWxsIGNvbmZpcm0gbXkgbWVudGFsIG1vZGVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1OTEwLCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjYuNTkzMTI5MTAxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNzI1MTQ3MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZm91X2FkZF90b19wb3J0X2xpc3RcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L2lwdjQvZm91X2NvcmUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvaXB2NC9mb3VfY29yZS5jPTUwOT1zdGF0aWMgYm9vbCBmb3VfY2ZnX2NtcChzdHJ1Y3QgZm91ICpmb3UsIHN0cnVjdCBmb3VfY2ZnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jLTUzOC1cXG5uZXQvaXB2NC9mb3VfY29yZS5jOjUzOTpzdGF0aWMgaW50IGZvdV9hZGRfdG9fcG9ydF9saXN0KHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IGZvdSAqZm91LFxcbm5ldC9pcHY0L2ZvdV9jb3JlLmMtNTQwLVxcdFxcdFxcdFxcdHN0cnVjdCBmb3VfY2ZnICpjZmcpXFxuLS1cXG5uZXQvaXB2NC9mb3VfY29yZS5jPTU2Nj1zdGF0aWMgaW50IGZvdV9jcmVhdGUoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3QgZm91X2NmZyAqY2ZnLFxcbi0tXFxubmV0L2lwdjQvZm91X2NvcmUuYy02MjEtXFxubmV0L2lwdjQvZm91X2NvcmUuYzo2MjI6XFx0ZXJyID0gZm91X2FkZF90b19wb3J0X2xpc3QobmV0LCBmb3UsIGNmZyk7XFxubmV0L2lwdjQvZm91X2NvcmUuYy02MjMtXFx0aWYgKGVycilcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjNUMDI6NDc6MjYuNzY1NjQ5NDI5WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzOTA1OTQ3NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgVGhpcyBGT1UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyB0aGlzIGBmb3VfYWRkX3RvX3BvcnRfbGlzdGAgZnVuY3Rpb24gaXMgc3RhdGljLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZCBmb3Igc2NvcGluZy4gTGV0J3MgYnJlYWsgZG93biB3aGF0IHdlJ3JlIGxvb2tpbmcgYXQgaGVyZS5cblxuRXNzZW50aWFsbHksIHRoaXMgcGF0Y2ggaXMgbWFya2VkIGFzIGBXb3J0aEZ1enppbmc6IHRydWVgLCB3aGljaCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIFRoZSBwcmltYXJ5IGZ1bmN0aW9ucyB0YXJnZXRlZCBmb3IgZnV6emluZyBhcmUgYGZvdV9jcmVhdGVgIGFuZCBgZm91X25sX2FkZF9kb2l0YC4gV2UncmUgZW5hYmxpbmcgdGhpcyB3aXRoIGBORVRfRk9VYCwgd2hpY2ggbWFrZXMgcGVyZmVjdCBzZW5zZSBnaXZlbiB0aGUgZm9jdXMuXG5cblRoZSBjb3JlIG9mIHRoZSBjaGFuZ2Ugc2VlbXMgdG8gYWRkcmVzcyBhIHBvdGVudGlhbCB1c2UtYWZ0ZXItZnJlZSB2dWxuZXJhYmlsaXR5IHdpdGhpbiB0aGUgZXJyb3IgaGFuZGxpbmcgb2YgYGZvdV9jcmVhdGVgLiBJdCdzIGFjaGlldmluZyB0aGlzIHdpdGggYSBjb21iaW5hdGlvbiBvZiBga2ZyZWVfcmN1YCBhbmQgc29tZSBjbGVhbnVwIHJlb3JkZXJpbmcuIFRoaXMgaW5kaWNhdGVzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24gdG8gdGhlIGZ1bmRhbWVudGFsIEZvbyBvdmVyIFVEUCAoRk9VKSBpbXBsZW1lbnRhdGlvbi4gV2XigJlyZSBmaXhpbmcgYSBtZW1vcnkgc2FmZXR5IGlzc3VlIGluIGEgY3JpdGljYWwgcGFydCBvZiB0aGUgRk9VIGxvZ2ljLlxuXG5KdXN0IHRvIGJlIHRob3JvdWdoLCBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCBgTkVUX0ZPVWAgaXMgdGhlIG9ubHkgcmVsZXZhbnQgY29uZmlnIGhlcmUsIGFuZCBpdCBhcHBlYXJzIHRoYXQncyB0aGUgY2FzZS4gVGhhdCBjb25maXJtcyB0aGUgc2NvcGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYzNjUsIk91dHB1dFRva2VucyI6MTA1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTM2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIzVDAyOjQ3OjMxLjE1NjI0NzI0NVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI4MjA0MDQyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkVUX0ZPVVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImZvdV9jcmVhdGVcIixcbiAgICBcImZvdV9ubF9hZGRfZG9pdFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsIHVzZS1hZnRlci1mcmVlIGluIHRoZSBlcnJvciBwYXRoIG9mIGBmb3VfY3JlYXRlYCBieSB1c2luZyBga2ZyZWVfcmN1YCBhbmQgcmVvcmRlcmluZyB0aGUgY2xlYW51cC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIEZPVSAoRm9vIG92ZXIgVURQKSBsb2dpYy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORVRfRk9VXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiZm91X2NyZWF0ZVwiLFxuICAgIFwiZm91X25sX2FkZF9kb2l0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBwb3RlbnRpYWwgdXNlLWFmdGVyLWZyZWUgaW4gdGhlIGVycm9yIHBhdGggb2YgYGZvdV9jcmVhdGVgIGJ5IHVzaW5nIGBrZnJlZV9yY3VgIGFuZCByZW9yZGVyaW5nIHRoZSBjbGVhbnVwLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgRk9VIChGb28gb3ZlciBVRFApIGxvZ2ljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[1] Phase: Succeeded StartedAt: 2026-07-23 02:47:43 +0000 UTC FinishedAt: 2026-07-23 02:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-23 02:47:43 +0000 UTC FinishedAt: 2026-07-23 02:47:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2] Phase: Succeeded StartedAt: 2026-07-23 02:47:43 +0000 UTC FinishedAt: 2026-07-23 06:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-23 02:47:43 +0000 UTC FinishedAt: 2026-07-23 06:57:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-23 02:47:43 +0000 UTC FinishedAt: 2026-07-23 02:48:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-23 02:47:43 +0000 UTC FinishedAt: 2026-07-23 02:48:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow49sxk/series-workflow49sxk-convert-artifact-800141977/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-23 02:48:21 +0000 UTC FinishedAt: 2026-07-23 03:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-23 02:48:21 +0000 UTC FinishedAt: 2026-07-23 03:17:57 +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:*bab971d5-8241-42ff-bf1c-01e3fe3c5635,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-workflow49sxk/series-workflow49sxk-convert-artifact-800141977/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": "caabfabc-181d-4704-a55c-f2dede16e1b1", "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-workflow49sxk/series-workflow49sxk-build-action-682251831/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-23 02:48:21 +0000 UTC FinishedAt: 2026-07-23 03:17:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*bab971d5-8241-42ff-bf1c-01e3fe3c5635,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-workflow49sxk/series-workflow49sxk-convert-artifact-800141977/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": "caabfabc-181d-4704-a55c-f2dede16e1b1", "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-workflow49sxk/series-workflow49sxk-build-action-682251831/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-23 03:17:57 +0000 UTC FinishedAt: 2026-07-23 03:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-23 03:17:57 +0000 UTC FinishedAt: 2026-07-23 03:17:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-23 03:17:57 +0000 UTC FinishedAt: 2026-07-23 03:18:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-23 03:17:57 +0000 UTC FinishedAt: 2026-07-23 03:18:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflow49sxk/series-workflow49sxk-convert-artifact-2516795756/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-23 03:18:07 +0000 UTC FinishedAt: 2026-07-23 03:20:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-23 03:18:07 +0000 UTC FinishedAt: 2026-07-23 03:20:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*caabfabc-181d-4704-a55c-f2dede16e1b1,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-workflow49sxk/series-workflow49sxk-build-action-682251831/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-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-23 03:20:10 +0000 UTC FinishedAt: 2026-07-23 03:20:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-23 03:20:10 +0000 UTC FinishedAt: 2026-07-23 03:20:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-23 03:20:10 +0000 UTC FinishedAt: 2026-07-23 03:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-23 03:20:10 +0000 UTC FinishedAt: 2026-07-23 03:54:30 +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:*bab971d5-8241-42ff-bf1c-01e3fe3c5635,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-workflow49sxk/series-workflow49sxk-convert-artifact-2516795756/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": "0f0935a2-7f01-46c4-b139-58297c23bbeb", "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-workflow49sxk/series-workflow49sxk-build-action-2760513544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-23 03:20:10 +0000 UTC FinishedAt: 2026-07-23 03:54:20 +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:*bab971d5-8241-42ff-bf1c-01e3fe3c5635,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-workflow49sxk/series-workflow49sxk-convert-artifact-2516795756/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": "0f0935a2-7f01-46c4-b139-58297c23bbeb", "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-workflow49sxk/series-workflow49sxk-build-action-2760513544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-23 03:54:30 +0000 UTC FinishedAt: 2026-07-23 03:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-23 03:54:30 +0000 UTC FinishedAt: 2026-07-23 03:54:30 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-23 03:54:30 +0000 UTC FinishedAt: 2026-07-23 03:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-23 03:54:30 +0000 UTC FinishedAt: 2026-07-23 03:56:25 +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:*0f0935a2-7f01-46c4-b139-58297c23bbeb,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-workflow49sxk/series-workflow49sxk-build-action-2760513544/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-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 06:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 06:57:56 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"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:*caabfabc-181d-4704-a55c-f2dede16e1b1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0f0935a2-7f01-46c4-b139-58297c23bbeb,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-workflow49sxk/series-workflow49sxk-build-action-682251831/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-workflow49sxk/series-workflow49sxk-build-action-2760513544/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 03:56:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 03:56:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"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-workflow49sxk/series-workflow49sxk-convert-artifact-3808932437/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 03:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 03:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-23 03:56:35 +0000 UTC FinishedAt: 2026-07-23 03:56:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-23 03:56:45 +0000 UTC FinishedAt: 2026-07-23 06:57:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflow49sxk[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["fou_create","fou_nl_add_doit"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f43ee0c0730d6191629b5ee1ceae27b1ebfdc047","config_name":"upstream-apparmor-kasan.config","enable_configs":["NET_FOU"],"series_id":"e135ca1c-5ac1-4398-b2e3-4a4fa5b2d829","tree_name":"net","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-23 03:56:45 +0000 UTC FinishedAt: 2026-07-23 06:57:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*caabfabc-181d-4704-a55c-f2dede16e1b1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*0f0935a2-7f01-46c4-b139-58297c23bbeb,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-workflow49sxk/series-workflow49sxk-build-action-682251831/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-workflow49sxk/series-workflow49sxk-build-action-2760513544/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-workflow49sxk/series-workflow49sxk-convert-artifact-3808932437/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,}