Name: series-workflowlbxpm Phase: Succeeded StartedAt: 2026-06-27 02:44:52 +0000 UTC FinishedAt: 2026-06-27 06:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[0] Phase: Succeeded StartedAt: 2026-06-27 02:44:52 +0000 UTC FinishedAt: 2026-06-27 02:54:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[0].run-triage Phase: Succeeded StartedAt: 2026-06-27 02:44:52 +0000 UTC FinishedAt: 2026-06-27 02:54:35 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "4af82cf4-a349-44a8-abd6-acbf3b6aff84" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_user_policy" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fdXNlcl9wb2xpY3kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEzNmIyNzgwMDQzZTcwZDY0MjY1YTg0ZjM0MzJiNDdhZmFiYTY4NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMjo1Mzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4wOGJhNjgwNWRkYjNmYyAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtMzAxMCw3ICYjNDM7MzAxMCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoc29ja3B0cl9pc19udWxsKG9wdHZhbCkgXHUwMDI2XHUwMDI2ICFvcHRsZW4pIHtcbiBcdFx0eGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuJiM0MztcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICYjNDM7MzA1MCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoZXJyIFx1MDAzZT0gMCkge1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIGVyciwgcG9sKTtcbiBcdFx0eGZybV9wb2xfcHV0KHBvbCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbiYjNDM7XHRcdHNrX2RzdF9yZXNldChzayk7XG4gXHRcdGVyciA9IDA7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV91c2VyX3BvbGljeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX19za19kc3RfcmVzZXRgIHdpdGggYHNrX2RzdF9yZXNldGAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBpbnRyb2R1Y2VzIHByb3BlciBsb2NraW5nL2F0b21pYyBvcGVyYXRpb25zIHdoZW4gcmVzZXR0aW5nIHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMzZiMjc4MDA0M2U3MGQ2NDI2NWE4NGYzNDMyYjQ3YWZhYmE2ODZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDI6NTM6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmMKaW5kZXggYzU4Y2QwMjRlM2M2NzUuLjA4YmE2ODA1ZGRiM2ZjIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3N0YXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jCkBAIC0zMDEwLDcgJiM0MzszMDEwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbikKIAlpZiAoc29ja3B0cl9pc19udWxsKG9wdHZhbCkgJmFtcDsmYW1wOyAhb3B0bGVuKSB7CiAJCXhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpOwogCQl4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7Ci0JCV9fc2tfZHN0X3Jlc2V0KHNrKTsKJiM0MzsJCXNrX2RzdF9yZXNldChzayk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMzA1MCw3ICYjNDM7MzA1MCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pCiAJaWYgKGVyciAmZ3Q7PSAwKSB7CiAJCXhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpOwogCQl4ZnJtX3BvbF9wdXQocG9sKTsKLQkJX19za19kc3RfcmVzZXQoc2spOwomIzQzOwkJc2tfZHN0X3Jlc2V0KHNrKTsKIAkJZXJyID0gMDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTZWN1cml0eSBQb2xpY3kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX3N0YXRlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7dmUgc3dhcHBlZCBvdXQgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgZm9yIGBza19kc3RfcmVzZXQoc2spYCB3aXRoaW4gYHhmcm1fdXNlcl9wb2xpY3lgLiBIbW0sIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkga25vdyB0aGUgZGlmZmVyZW5jZSBoZXJlOiBpdCYjMzk7cyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIGBza19kc3RfcmVzZXQoc2spYCBpbXBsaWVzIGxvY2tpbmcgb3IgYXRvbWljIG9wZXJhdGlvbnMsIHdoZXJlYXMgdGhlIGRvdWJsZS11bmRlcnNjb3JlIHZlcnNpb24sIGBfX3NrX2RzdF9yZXNldChzaylgLCBkb2VzbiYjMzk7dCBoYXZlIHRob3NlLgoKVGhpcyBkZWZpbml0ZWx5IG1lcml0cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBhbHRlcmF0aW9uIHdhcyBtYWRlIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBpdCBoYXMuIEkmIzM5O2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgY3Jvc3MtcmVmZXJlbmNlIGB4ZnJtX3VzZXJfcG9saWN5YCBhbmQgYHNrX2RzdF9yZXNldGAuIEkmIzM5O2xsIHN0YXJ0IGJ5IHBpbnBvaW50aW5nIHRoZSBleGFjdCBsb2NhdGlvbiBvZiBgeGZybV91c2VyX3BvbGljeWAgd2l0aGluIGBuZXQveGZybS94ZnJtX3N0YXRlLmNgIGl0c2VsZi4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgc2l0ZSBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLiBUaGlzIHdpbGwgaGVscCBtZSBldmFsdWF0ZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9zdGF0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMDAwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fdW5yZWdpc3Rlcl90cmFuc2xhdG9yKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwMi1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDAzOmludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwNC17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNTktfVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjMwNjA6RVhQT1JUX1NZTUJPTCh4ZnJtX3VzZXJfcG9saWN5KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgYHhmcm1fdXNlcl9wb2xpY3lgIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgdGhlIGB4ZnJtX3VzZXJfcG9saWN5YCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIGtub3cgaXQmIzM5O3MgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgY2hlY2sgb24gaXRzIGV4cG9ydCBzdGF0dXMuIE9uY2UgSSBrbm93IGlmIGl0JiMzOTtzIGV4cG9ydGVkLCBJJiMzOTtsbCBtb3ZlIG9uIHRvIHVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jeSBhbmQgdXNhZ2Ugb2YgdGhpcyBwb2xpY3kgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jPTg5Mj1pbnQgZG9faXBfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjQvaXBfc29ja2dsdWUuYy0xMzQ2LVx0XHRcdGJyZWFrO1xubmV0L2lwdjQvaXBfc29ja2dsdWUuYzoxMzQ3Olx0XHRlcnIgPSB4ZnJtX3VzZXJfcG9saWN5KHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jLTEzNDgtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zNzY9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkzNC1cdFx0XHRicmVhaztcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzo5MzU6XHRcdHJldHYgPSB4ZnJtX3VzZXJfcG9saWN5KHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtOTM2LVx0XHRicmVhaztcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTU5OT1zdGF0aWMgc3RydWN0IG5sbXNnaGRyICp4ZnJtX3VzZXJfcmN2X21zZ19jb21wYXQoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpoMzIsXG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy02NDQtXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NTpzdGF0aWMgaW50IHhmcm1fdXNlcl9wb2xpY3lfY29tcGF0KHU4ICoqcGRhdGEzMiwgaW50IG9wdGxlbilcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNjQ2LXtcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTY3MD1zdGF0aWMgc3RydWN0IHhmcm1fdHJhbnNsYXRvciB4ZnJtX3RyYW5zbGF0b3IgPSB7XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy02NzMtXHQucmN2X21zZ19jb21wYXRcdFx0XHQ9IHhmcm1fdXNlcl9yY3ZfbXNnX2NvbXBhdCxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Njc0Olx0LnhsYXRlX3VzZXJfcG9saWN5X3NvY2twdHJcdD0geGZybV91c2VyX3BvbGljeV9jb21wYXQsXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY3NS19O1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMDAwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fdW5yZWdpc3Rlcl90cmFuc2xhdG9yKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwMi1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDAzOmludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwNC17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNTktfVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjMwNjA6RVhQT1JUX1NZTUJPTCh4ZnJtX3VzZXJfcG9saWN5KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDYxLVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQyMTY9c3RhdGljIGludCB4ZnJtX3NlbmRfYWNxdWlyZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHhmcm1fdG1wbCAqeHQsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtNDIzMi1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQyMzM6LyogVXNlciBnaXZlcyB1cyB4ZnJtX3VzZXJfcG9saWN5X2luZm8gZm9sbG93ZWQgYnkgYW4gYXJyYXkgb2YgMFxubmV0L3hmcm0veGZybV91c2VyLmMtNDIzNC0gKiBvciBtb3JlIHRlbXBsYXRlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjI4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgT3JpZ2luIGFuZCBSZWFjaCBvZiBYRlJNIFBvbGljeSBNYW5pcHVsYXRpb24qKgoKUmlnaHQsIHNvIHRoaXMgY29kZSBwYXRoIGlzIHRyaWdnZXJlZCBieSBgZG9faXBfc2V0c29ja29wdGAgYW5kIGBkb19pcHY2X3NldHNvY2tvcHRgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWxsIGFib3V0IG1hbmlwdWxhdGluZyBYRlJNIHBvbGljaWVzIHZpYSB0aGUgYHNldHNvY2tvcHRgIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgSVBfWEZSTV9QT0xJQ1lgIGFuZCBgSVBWNl9YRlJNX1BPTElDWWAgc29ja2V0IG9wdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCwgYmVjYXVzZSBpdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIG9mIHdoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zIEkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29kZSwgc28gbGV0JiMzOTtzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCBzb3VyY2UgY29kZSBmb3IgYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRldGFpbHMgb2YgdGhpcyBwb2xpY3kgbWFuaXB1bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fc3RhdGVcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcbm5ldC94ZnJtL01ha2VmaWxlLTEzLVxubmV0L3hmcm0vTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZS0xNS1cdFx0ICAgICAgeGZybV9pbnB1dC5vIHhmcm1fb3V0cHV0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIHdpdGggdGhlIGJvbGRlZCBoZWFkZXIgYXMgcmVxdWVzdGVkOgoKKipYRlJNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBzZWVtcyB0byBiZSBvbiBuZXR3b3JrIHNlY3VyaXR5IGFuZCBzcGVjaWZpY2FsbHksIHRoZSBYRlJNIHN1YnN5c3RlbS4gVGhlIHN0YXJ0aW5nIHBvaW50IGlzIG9idmlvdXNseSB0aGUgYENPTkZJR19YRlJNYCBzZXR0aW5nLiBJbW1lZGlhdGVseSwgbXkgbWluZCBjbGFyaWZpZXMgdGhhdCB0aGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGBYRlJNYCBpdHNlbGYuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBYRlJNIGZ1bmN0aW9uYWxpdHkuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY3kgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGluIHRoaXMgY2FzZSB0aGUgbmV4dCB0aG91Z2h0IHNlZW1zIHRvIGJlIGFib3V0IGBYRlJNX1VTRVJgLiBJIG5lZWQgdG8gYXNzZXNzIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGNvbXBvbmVudC4gV2hhdCBmZWF0dXJlcyBhcmUgYmVpbmcgY29uZmlndXJlZCB3aXRoIGBYRlJNX1VTRVJgPyBJcyB0aGlzIHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQgb3IgcG9saWN5IGNvbnRyb2w/IFRpbWUgdG8gZXhhbWluZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgY2xvc2VseSB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzZWN1cml0eSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYRlJNX1VTRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSAmIzQzOz0geGZybV9hbGdvLm9cbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICYjNDM7PSB4ZnJtX3VzZXIub1xubmV0L3hmcm0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICYjNDM7PSB4ZnJtX2NvbXBhdC5vXG5uZXQveGZybS9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfWEZSTV9JUENPTVApICYjNDM7PSB4ZnJtX2lwY29tcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBQb3RlbnRpYWwgWEZSTSBJc3N1ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggSSBrbm93IGlzIG5lc3RsZWQgYXdheSBpbiBgeGZybV9zdGF0ZS5jYCBhbmQsIG9mIGNvdXJzZSwgdGhhdCBmaWxlIGlzIGNvbXBpbGVkIG9ubHkgaWYgYENPTkZJR19YRlJNYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuIFRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IGBfX3NrX2RzdF9yZXNldChzaylgIGZvciBgc2tfZHN0X3Jlc2V0KHNrKWAgd2l0aGluIGB4ZnJtX3VzZXJfcG9saWN5YC4KCk15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYSBmdW5jdGlvbmFsIGZpeCwgcHJvYmFibHkgdGFyZ2V0aW5nIHNvbWUga2luZCBvZiByYWNlIGNvbmRpdGlvbiBvciBsb2NraW5nIHByb2JsZW0uIFRoZSBjaGFuZ2Ugc2VlbXMgc3VidGxlLCBhbmQgdGhvc2UgYXJlIG9mdGVuIHRoZSBoYXJkZXN0IHRvIGRlYnVnLiBJIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZSBjaGFuZ2Ugd2FzIG5lY2Vzc2FyeSwgdGhlIHJlYXNvbmluZyBiZWhpbmQgaXQgYW5kIGFueSBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGxpa2UgYnVnIHJlcG9ydHMgb3IgbWFpbGluZyBsaXN0IGRpc2N1c3Npb25zLCB0byBmdWxseSBncmFzcCB0aGUgY29udGV4dC4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlIHJlcGxhY2VzIGFuIGludGVybmFsIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHB1YmxpYyBvbmUgc3VnZ2VzdHMgdGhlcmUgbWF5IGhhdmUgYmVlbiBzb21lIGhpZGRlbiBhc3N1bXB0aW9ucyBvciB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSBhbmQgaXRzIHBvdGVudGlhbCBpbXBhY3Qgb24gc2VjdXJpdHkgb3Igc3RhYmlsaXR5LCBmdXp6aW5nIGlzIGFuIGFic29sdXRlIG11c3QuIEkmIzM5O20gZ29pbmcgdG8gcHV0IGB4ZnJtX3VzZXJfcG9saWN5YCBvbiBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEFuZCBJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBYRlJNYC4gQmVmb3JlIEkgc3RhcnQgZ2VuZXJhdGluZyBhbnkgdGVzdHMsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IHByZXJlcXVpc2l0ZXMuIExldCBtZSBjaGVjayB3aGF0IGBYRlJNYCBkZXBlbmRzIG9uIHRvIGJ1aWxkIHRoYXQgc3Vic3lzdGVtLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBwbGFuIGZvciB0aGUgZW52aXJvbm1lbnQgSSYjMzk7bGwgbmVlZCB0byBzZXQgdXAgZm9yIHRoaXMgZnV6emluZyBleGVyY2lzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnLTQtI1xubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXG5uZXQveGZybS9LY29uZmlnLTYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5ODIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIFNlbGVjdGlvbiBQcm9jZXNzKioKCk9rYXksIHNvIGBYRlJNYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCB3aGVuIHVzaW5nIGBJTkVUYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE15IHRhc2sgbm93IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIG1lY2hhbmlzbXMgdGhhdCBhY3R1YWxseSB0cmlnZ2VyIHRoZSBzZWxlY3Rpb24gb2YgYFhGUk1gLiBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGFuZCBjb2RlYmFzZSB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGV0ZXJtaW5lIHdoZW4gYFhGUk1gIGdldHMgc2V0LiBJIGtub3cgdGhlIHVzdWFsIHN1c3BlY3RzIGFyZSBsaWtlbHkgcmVsYXRlZCB0byByb3V0aW5nLCBJUHNlYywgYW5kIG5ldHdvcmsgc3RhY2sgZmVhdHVyZXMsIGJ1dCBJIG5lZWQgYSBzeXN0ZW1hdGljIGFwcHJvYWNoIHRvIHRyYWNlIHRoZSBkZWNpc2lvbiB0cmVlIGZyb20gYElORVRgIGFuZCBzZWUgd2hlcmUgaXQgaW5ldml0YWJseSBsZWFkcyB0byBgWEZSTWAuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGRyaXZpbmcgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwODpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXHR0cmlzdGF0ZSBcJiMzNDtJUDogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY0L0tjb25maWc6MzQxOlx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY0L0tjb25maWctMzQyLVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzU0PWNvbmZpZyBJTkVUX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXHR0cmlzdGF0ZSBcJiMzNDtJUDogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcdHNlbGVjdCBYRlJNX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM3MS1cdGRlcGVuZHMgb24gSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWc6MzcyOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXHRkZWZhdWx0IG5cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg2LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZzozODc6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zOTYtXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY0L0tjb25maWctMzk4LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NDk6XHRzZWxlY3QgWEZSTV9BSFxubmV0L2lwdjYvS2NvbmZpZy01MC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NjQ6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjUtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cdHNlbGVjdCBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY2L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTEyPWNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6MTE0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUzLVx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTU0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTU1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjE2Olx0c2VsZWN0IFhGUk1cbm5ldC94ZnJtL0tjb25maWctMTctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMz1jb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMjYtXHRoZWxwXG4tLVxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjg2Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTkzPWNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjk1Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy05Ni1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbm5ldC94ZnJtL0tjb25maWc6MTA4Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xMDktXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXCYjMzQ7XG5uZXQveGZybS9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyNy1cdGRlcGVuZHMgb24gTkVUX0tFWVxubmV0L3hmcm0vS2NvbmZpZzoxMjg6XHRzZWxlY3QgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTEyOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5IGZvciBYRlJNKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wdGltYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBgWEZSTV9VU0VSYCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgaW5oZXJlbnRseSBzZWxlY3RzIGBYRlJNYCwgYW5kIGBYRlJNYCBpdHNlbGYgaXMgZnVuZGFtZW50YWxseSBuZWNlc3NhcnkuICBFc3NlbnRpYWxseSwgbGlzdGluZyBgWEZSTV9VU0VSYCBpbiB0aGUgY29uZmlnIHNlZW1zIGxpa2UgdGhlIGNsZWFuIHdheSB0byBnby4KCkhtbSwgd2FpdCBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBYRlJNX1VTRVJgIGFuZCBgeGZybV91c2VyX3BvbGljeWAuIEl0IGxvb2tzIGxpa2UgYHhmcm1fdXNlcl9wb2xpY3lgIGlzIHJlYWRpbHkgYXZhaWxhYmxlIHdoZW5ldmVyIGBYRlJNYCBpcyBlbmFibGVkLiAKCkFoLCByaWdodCEgYFhGUk1fVVNFUmAgcHJvdmlkZXMgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGlsZSBgeGZybV91c2VyX3BvbGljeWAgZGVhbHMgd2l0aCBzZXRzb2Nrb3B0LgoKU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBqdXN0IGdldCBhd2F5IHdpdGggZW5hYmxpbmcgYFhGUk1gIGRpcmVjdGx5PyBMZXQgbWUgY2hlY2vigKYgWXVwLCBpdCBsb29rcyBsaWtlIGBYRlJNYCBpcyB0aGUgY3J1Y2lhbCBjb25maWcgdGhhdCBidWlsZHMgYHhmcm1fc3RhdGUuY2AuCgpIb3dldmVyLCBpdOKAmXMgYSBib29sIHRoYXQgbGFja3MgYSBwcm9tcHQsIHdoaWNoIG1lYW5zIGl0IGNhbiYjMzk7dCBiZSBlbmFibGVkIGluZGVwZW5kZW50bHkuIEl0ICptdXN0KiBiZSBzZWxlY3RlZCBieSBzb21ldGhpbmcgZWxzZS4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBhbmQgdXNlci1mcmllbmRseSBjaG9pY2UgaXMgc3RpbGwgYFhGUk1fVVNFUmAuIEl0JiMzOTtzIGEgdXNlci12aXNpYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCBpbiB0dXJuIHNlbGVjdHMgdGhlIHJlcXVpcmVkIGBYRlJNYC4KClRvIGNvbmZpcm0gdGhpcywgSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG5ldC94ZnJtL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHByb3BlcnRpZXMgb2YgYFhGUk1fVVNFUmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX1VTRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDY1CgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDE4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYHhmcm1fdXNlcl9wb2xpY3lgIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgeWVzLCBlbmFibGluZyBgWEZSTV9VU0VSYCBzZWVtcyBsaWtlIGEgZ29vZCBjYWxsIGZvciB0ZXN0aW5nLiBDb25zaWRlcmluZyB0aGF0LCBJIHNob3VsZCBtZW50aW9uIHRoYXQgYElORVRfRVNQYCBvciBgSU5FVF9BSGAgY2FuIGFsc28gaW1wbGljaXRseSBzZWxlY3QgYFhGUk1gIGFzIGEgY29uZmlnIG9wdGlvbi4gQnV0LCBsZXQmIzM5O3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgbGlzdCBgWEZSTV9VU0VSYC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBpbiBgeGZybV91c2VyX3BvbGljeWAsIHdoZXJlIHRoZXkmIzM5O3ZlIHN3aXRjaGVkIGZyb20gYF9fc2tfZHN0X3Jlc2V0KHNrKWAgdG8gYHNrX2RzdF9yZXNldChzaylgLiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGNsZWFyIG9uZSBhdCB0aGF0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGNvc21ldGljOyBpdCBzaWduYWxzIGEgc2hpZnQgaW4gaG93IHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUgaXMgaGFuZGxlZCDigJMgaW1wbGVtZW50aW5nIHByb3BlciBsb2NraW5nIGFuZCBhdG9taWMgb3BlcmF0aW9ucy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBmdXp6LgoKU28sIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgZm9yIHRoaXMgcGF0Y2guIE15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgbmFycm93ZWQgdG8gYHhmcm1fdXNlcl9wb2xpY3lgLiBBbmQgSSYjMzk7bGwgZW5hYmxlIGBYRlJNX1VTRVJgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIHNvY2tldCBkZXN0aW5hdGlvbiBjYWNoZSByZXNldCBhbmQgaW50cm9kdWNlcyBsb2NraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV91c2VyX3BvbGljeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX19za19kc3RfcmVzZXRgIHdpdGggYHNrX2RzdF9yZXNldGAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBpbnRyb2R1Y2VzIHByb3BlciBsb2NraW5nL2F0b21pYyBvcGVyYXRpb25zIHdoZW4gcmVzZXR0aW5nIHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBfX3NrX2RzdF9yZXNldGAgd2l0aCBgc2tfZHN0X3Jlc2V0YCBpbiBgeGZybV91c2VyX3BvbGljeWAsIHdoaWNoIGludHJvZHVjZXMgcHJvcGVyIGxvY2tpbmcvYXRvbWljIG9wZXJhdGlvbnMgd2hlbiByZXNldHRpbmcgdGhlIHNvY2tldCBkZXN0aW5hdGlvbiBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1Mi43NTcyNTUzOTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI5ODc4ODIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTM6NTIuNzU3MjY0MDE0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjA0OTIzOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMzZiMjc4MDA0M2U3MGQ2NDI2NWE4NGYzNDMyYjQ3YWZhYmE2ODZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDI3IDAyOjUzOjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4wOGJhNjgwNWRkYjNmYyAxMDA2NDRcXG4tLS0gYS9uZXQveGZybS94ZnJtX3N0YXRlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcXG5AQCAtMzAxMCw3ICszMDEwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcXG4gXFx0aWYgKHNvY2twdHJfaXNfbnVsbChvcHR2YWwpIFxcdTAwMjZcXHUwMDI2ICFvcHRsZW4pIHtcXG4gXFx0XFx0eGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7XFxuIFxcdFxcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTtcXG4tXFx0XFx0X19za19kc3RfcmVzZXQoc2spO1xcbitcXHRcXHRza19kc3RfcmVzZXQoc2spO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG5AQCAtMzA1MCw3ICszMDUwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcXG4gXFx0aWYgKGVyciBcXHUwMDNlPSAwKSB7XFxuIFxcdFxcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpO1xcbiBcXHRcXHR4ZnJtX3BvbF9wdXQocG9sKTtcXG4tXFx0XFx0X19za19kc3RfcmVzZXQoc2spO1xcbitcXHRcXHRza19kc3RfcmVzZXQoc2spO1xcbiBcXHRcXHRlcnIgPSAwO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1My4wNzg1MDEzNTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTc3NTI4OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fdXNlcl9wb2xpY3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgX19za19kc3RfcmVzZXRgIHdpdGggYHNrX2RzdF9yZXNldGAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBpbnRyb2R1Y2VzIHByb3BlciBsb2NraW5nL2F0b21pYyBvcGVyYXRpb25zIHdoZW4gcmVzZXR0aW5nIHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEzNmIyNzgwMDQzZTcwZDY0MjY1YTg0ZjM0MzJiNDdhZmFiYTY4NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMjo1Mzo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuaW5kZXggYzU4Y2QwMjRlM2M2NzUuLjA4YmE2ODA1ZGRiM2ZjIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbkBAIC0zMDEwLDcgKzMwMTAsNyBAQCBpbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxuIFx0aWYgKHNvY2twdHJfaXNfbnVsbChvcHR2YWwpIFx1MDAyNlx1MDAyNiAhb3B0bGVuKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpO1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbitcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICszMDUwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbiBcdGlmIChlcnIgXHUwMDNlPSAwKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpO1xuIFx0XHR4ZnJtX3BvbF9wdXQocG9sKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuK1x0XHRza19kc3RfcmVzZXQoc2spO1xuIFx0XHRlcnIgPSAwO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTM6NTMuMDc4NTAzNzMyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMTI1NDQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTZWN1cml0eSBQb2xpY3kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV9zdGF0ZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IHRoZXkndmUgc3dhcHBlZCBvdXQgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgZm9yIGBza19kc3RfcmVzZXQoc2spYCB3aXRoaW4gYHhmcm1fdXNlcl9wb2xpY3lgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gSSBrbm93IHRoZSBkaWZmZXJlbmNlIGhlcmU6IGl0J3MgYSAqZnVuY3Rpb25hbCogY2hhbmdlLiBgc2tfZHN0X3Jlc2V0KHNrKWAgaW1wbGllcyBsb2NraW5nIG9yIGF0b21pYyBvcGVyYXRpb25zLCB3aGVyZWFzIHRoZSBkb3VibGUtdW5kZXJzY29yZSB2ZXJzaW9uLCBgX19za19kc3RfcmVzZXQoc2spYCwgZG9lc24ndCBoYXZlIHRob3NlLlxuXG5UaGlzIGRlZmluaXRlbHkgbWVyaXRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGFsdGVyYXRpb24gd2FzIG1hZGUgYW5kIHdoYXQgaW1wbGljYXRpb25zIGl0IGhhcy4gSSdsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IGNyb3NzLXJlZmVyZW5jZSBgeGZybV91c2VyX3BvbGljeWAgYW5kIGBza19kc3RfcmVzZXRgLiBJJ2xsIHN0YXJ0IGJ5IHBpbnBvaW50aW5nIHRoZSBleGFjdCBsb2NhdGlvbiBvZiBgeGZybV91c2VyX3BvbGljeWAgd2l0aGluIGBuZXQveGZybS94ZnJtX3N0YXRlLmNgIGl0c2VsZi4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgc2l0ZSBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLiBUaGlzIHdpbGwgaGVscCBtZSBldmFsdWF0ZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjUzOjU2Ljk5OTc2MzM2NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU1MjYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fc3RhdGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3N0YXRlLmM9MzAwMD1FWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX3VucmVnaXN0ZXJfdHJhbnNsYXRvcik7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwMi1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MzAwMzppbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDA0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDU5LX1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MzA2MDpFWFBPUlRfU1lNQk9MKHhmcm1fdXNlcl9wb2xpY3kpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDYxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1Ny4wNTgzMjA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUzNzQyMzc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgeGZybV91c2VyX3BvbGljeWAgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgdGhlIGB4ZnJtX3VzZXJfcG9saWN5YCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIGtub3cgaXQncyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgc28gbGV0J3Mgc3RhcnQgd2l0aCBhIGNoZWNrIG9uIGl0cyBleHBvcnQgc3RhdHVzLiBPbmNlIEkga25vdyBpZiBpdCdzIGV4cG9ydGVkLCBJJ2xsIG1vdmUgb24gdG8gdW5kZXJzdGFuZGluZyB3aGVyZSBhbmQgaG93IGl0J3MgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgZ29hbCBpcyBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY3kgYW5kIHVzYWdlIG9mIHRoaXMgcG9saWN5IGNvbmZpZ3VyYXRpb24uIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjUzOjU5LjU5NTc0NzIyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU5NTY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfc29ja2dsdWUuYz04OTI9aW50IGRvX2lwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjQvaXBfc29ja2dsdWUuYy0xMzQ2LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L2lwX3NvY2tnbHVlLmM6MTM0NzpcXHRcXHRlcnIgPSB4ZnJtX3VzZXJfcG9saWN5KHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvaXBfc29ja2dsdWUuYy0xMzQ4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM3Nj1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05MzQtXFx0XFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjkzNTpcXHRcXHRyZXR2ID0geGZybV91c2VyX3BvbGljeShzaywgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05MzYtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTU5OT1zdGF0aWMgc3RydWN0IG5sbXNnaGRyICp4ZnJtX3VzZXJfcmN2X21zZ19jb21wYXQoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpoMzIsXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0NC1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NTpzdGF0aWMgaW50IHhmcm1fdXNlcl9wb2xpY3lfY29tcGF0KHU4ICoqcGRhdGEzMiwgaW50IG9wdGxlbilcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0Ni17XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTY3MD1zdGF0aWMgc3RydWN0IHhmcm1fdHJhbnNsYXRvciB4ZnJtX3RyYW5zbGF0b3IgPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY3My1cXHQucmN2X21zZ19jb21wYXRcXHRcXHRcXHQ9IHhmcm1fdXNlcl9yY3ZfbXNnX2NvbXBhdCxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY3NDpcXHQueGxhdGVfdXNlcl9wb2xpY3lfc29ja3B0clxcdD0geGZybV91c2VyX3BvbGljeV9jb21wYXQsXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy02NzUtfTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMDAwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fdW5yZWdpc3Rlcl90cmFuc2xhdG9yKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDAyLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDAzOmludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwMDQte1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNTktfVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDYwOkVYUE9SVF9TWU1CT0woeGZybV91c2VyX3BvbGljeSk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNjEtXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz00MjE2PXN0YXRpYyBpbnQgeGZybV9zZW5kX2FjcXVpcmUoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCB4ZnJtX3RtcGwgKnh0LFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtNDIzMi1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzo0MjMzOi8qIFVzZXIgZ2l2ZXMgdXMgeGZybV91c2VyX3BvbGljeV9pbmZvIGZvbGxvd2VkIGJ5IGFuIGFycmF5IG9mIDBcXG5uZXQveGZybS94ZnJtX3VzZXIuYy00MjM0LSAqIG9yIG1vcmUgdGVtcGxhdGVzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1OS42NzYzNjkzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTg1MzY4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE9yaWdpbiBhbmQgUmVhY2ggb2YgWEZSTSBQb2xpY3kgTWFuaXB1bGF0aW9uKipcblxuUmlnaHQsIHNvIHRoaXMgY29kZSBwYXRoIGlzIHRyaWdnZXJlZCBieSBgZG9faXBfc2V0c29ja29wdGAgYW5kIGBkb19pcHY2X3NldHNvY2tvcHRgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWxsIGFib3V0IG1hbmlwdWxhdGluZyBYRlJNIHBvbGljaWVzIHZpYSB0aGUgYHNldHNvY2tvcHRgIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGBJUF9YRlJNX1BPTElDWWAgYW5kIGBJUFY2X1hGUk1fUE9MSUNZYCBzb2NrZXQgb3B0aW9ucy4gVGhhdCdzIGdvb2QsIGJlY2F1c2UgaXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBsb29rIGF0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGNvZGUsIHNvIGxldCdzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCBzb3VyY2UgY29kZSBmb3IgYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRldGFpbHMgb2YgdGhpcyBwb2xpY3kgbWFuaXB1bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MDIuOTM0OTA4OTk5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjYxNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fc3RhdGVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MDIuOTk4NTg5NDczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4MDc1OTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBib2xkZWQgaGVhZGVyIGFzIHJlcXVlc3RlZDpcblxuKipYRlJNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gdGhlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIG5ldHdvcmsgc2VjdXJpdHkgYW5kIHNwZWNpZmljYWxseSwgdGhlIFhGUk0gc3Vic3lzdGVtLiBUaGUgc3RhcnRpbmcgcG9pbnQgaXMgb2J2aW91c2x5IHRoZSBgQ09ORklHX1hGUk1gIHNldHRpbmcuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGNsYXJpZmllcyB0aGF0IHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgYFhGUk1gIGl0c2VsZi4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgWEZSTSBmdW5jdGlvbmFsaXR5LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmN5IG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBpbiB0aGlzIGNhc2UgdGhlIG5leHQgdGhvdWdodCBzZWVtcyB0byBiZSBhYm91dCBgWEZSTV9VU0VSYC4gSSBuZWVkIHRvIGFzc2VzcyB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBjb21wb25lbnQuIFdoYXQgZmVhdHVyZXMgYXJlIGJlaW5nIGNvbmZpZ3VyZWQgd2l0aCBgWEZSTV9VU0VSYD8gSXMgdGhpcyByZWxhdGVkIHRvIGtleSBtYW5hZ2VtZW50IG9yIHBvbGljeSBjb250cm9sPyBUaW1lIHRvIGV4YW1pbmUgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIGNsb3NlbHkgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjA2LjA3OTM1Mzc3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ3MDkyMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWEZSTV9VU0VSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19YRlJNX0FMR08pICs9IHhmcm1fYWxnby5vXFxubmV0L3hmcm0vTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1hGUk1fVVNFUikgKz0geGZybV91c2VyLm9cXG5uZXQveGZybS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfWEZSTV9VU0VSX0NPTVBBVCkgKz0geGZybV9jb21wYXQub1xcbm5ldC94ZnJtL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19YRlJNX0lQQ09NUCkgKz0geGZybV9pcGNvbXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1NDowNi4xNTQwNzE1NTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5NTc1MzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBYRlJNIElzc3VlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBXZSdyZSBkZWFsaW5nIHdpdGggYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBJIGtub3cgaXMgbmVzdGxlZCBhd2F5IGluIGB4ZnJtX3N0YXRlLmNgIGFuZCwgb2YgY291cnNlLCB0aGF0IGZpbGUgaXMgY29tcGlsZWQgb25seSBpZiBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQuIFRoYXQncyBhIGtleSBkZXRhaWwgdG8ga2VlcCBpbiBtaW5kIGZvciB0ZXN0aW5nLiBUaGUgY29kZSBjaGFuZ2UgaXRzZWxmIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIHRoZXkncmUgc3dhcHBpbmcgb3V0IGBfX3NrX2RzdF9yZXNldChzaylgIGZvciBgc2tfZHN0X3Jlc2V0KHNrKWAgd2l0aGluIGB4ZnJtX3VzZXJfcG9saWN5YC5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgZml4LCBwcm9iYWJseSB0YXJnZXRpbmcgc29tZSBraW5kIG9mIHJhY2UgY29uZGl0aW9uIG9yIGxvY2tpbmcgcHJvYmxlbS4gVGhlIGNoYW5nZSBzZWVtcyBzdWJ0bGUsIGFuZCB0aG9zZSBhcmUgb2Z0ZW4gdGhlIGhhcmRlc3QgdG8gZGVidWcuIEkgbmVlZCB0byBkaWcgaW50byB3aHkgdGhlIGNoYW5nZSB3YXMgbmVjZXNzYXJ5LCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCBhbmQgYW55IHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgbGlrZSBidWcgcmVwb3J0cyBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMsIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250ZXh0LiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgcmVwbGFjZXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHVibGljIG9uZSBzdWdnZXN0cyB0aGVyZSBtYXkgaGF2ZSBiZWVuIHNvbWUgaGlkZGVuIGFzc3VtcHRpb25zIG9yIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHNlY3VyaXR5IG9yIHN0YWJpbGl0eSwgZnV6emluZyBpcyBhbiBhYnNvbHV0ZSBtdXN0LiBJJ20gZ29pbmcgdG8gcHV0IGB4ZnJtX3VzZXJfcG9saWN5YCBvbiBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEFuZCBJJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYFhGUk1gLiBCZWZvcmUgSSBzdGFydCBnZW5lcmF0aW5nIGFueSB0ZXN0cywgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcHJlcmVxdWlzaXRlcy4gTGV0IG1lIGNoZWNrIHdoYXQgYFhGUk1gIGRlcGVuZHMgb24gdG8gYnVpbGQgdGhhdCBzdWJzeXN0ZW0sIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHBsYW4gZm9yIHRoZSBlbnZpcm9ubWVudCBJJ2xsIG5lZWQgdG8gc2V0IHVwIGZvciB0aGlzIGZ1enppbmcgZXhlcmNpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MTAuNzQ5ODI4NjIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTk0NjYzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTSRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnLTQtI1xcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxcbm5ldC94ZnJtL0tjb25maWctNi1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjEwLjgzOTc4MzU4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ3MjY2NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIFNlbGVjdGlvbiBQcm9jZXNzKipcblxuT2theSwgc28gYFhGUk1gIGlzIHR5cGljYWxseSBlbmFibGVkIHdoZW4gdXNpbmcgYElORVRgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBNeSB0YXNrIG5vdyBpcyB0byBmaWd1cmUgb3V0IHRoZSBtZWNoYW5pc21zIHRoYXQgYWN0dWFsbHkgdHJpZ2dlciB0aGUgc2VsZWN0aW9uIG9mIGBYRlJNYC4gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgY29uZmlndXJhdGlvbiBhbmQgY29kZWJhc2UgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRldGVybWluZSB3aGVuIGBYRlJNYCBnZXRzIHNldC4gSSBrbm93IHRoZSB1c3VhbCBzdXNwZWN0cyBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gcm91dGluZywgSVBzZWMsIGFuZCBuZXR3b3JrIHN0YWNrIGZlYXR1cmVzLCBidXQgSSBuZWVkIGEgc3lzdGVtYXRpYyBhcHByb2FjaCB0byB0cmFjZSB0aGUgZGVjaXNpb24gdHJlZSBmcm9tIGBJTkVUYCBhbmQgc2VlIHdoZXJlIGl0IGluZXZpdGFibHkgbGVhZHMgdG8gYFhGUk1gLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZHJpdmluZyB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTgyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MTMuNDg3MDUzODM1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTU2NDU4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA3LVxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XFx0c2VsZWN0IFhGUk1cXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxcbm5ldC9pcHY0L0tjb25maWctMzQwLVxcdHRyaXN0YXRlIFxcXCJJUDogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNDE6XFx0c2VsZWN0IFhGUk1fQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM2OT1jb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXFx0ZGVwZW5kcyBvbiBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWc6MzcyOlxcdHNlbGVjdCBYRlJNX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3My1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZzozODc6XFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM5ND1jb25maWcgSU5FVF9JUENPTVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzk2LVxcdHNlbGVjdCBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjQvS2NvbmZpZy0zOTgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz00Nz1jb25maWcgSU5FVDZfQUhcXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjQ5OlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjYvS2NvbmZpZy01MC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo2NDpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVxcdGRlcGVuZHMgb24gSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZzo4MDpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy04MS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2Ni9LY29uZmlnOjk1OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjEwNTpcXHRzZWxlY3QgWEZSTV9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbm5ldC9pcHY2L0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTU0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xND1jb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTY6XFx0c2VsZWN0IFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTE3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTg0PWNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6ODY6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctODctXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxubmV0L3hmcm0vS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy05Ni1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTA4OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTEwOS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTExMj1jb25maWcgTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJQRl9LRVkgc29ja2V0cyAoZGVwcmVjYXRlZClcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTI3LVxcdGRlcGVuZHMgb24gTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWc6MTI4OlxcdHNlbGVjdCBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTEyOS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjEzLjU2ODYyNjYzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ0MzI4NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kgZm9yIFhGUk0qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wdGltYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBgWEZSTV9VU0VSYCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgaW5oZXJlbnRseSBzZWxlY3RzIGBYRlJNYCwgYW5kIGBYRlJNYCBpdHNlbGYgaXMgZnVuZGFtZW50YWxseSBuZWNlc3NhcnkuICBFc3NlbnRpYWxseSwgbGlzdGluZyBgWEZSTV9VU0VSYCBpbiB0aGUgY29uZmlnIHNlZW1zIGxpa2UgdGhlIGNsZWFuIHdheSB0byBnby5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYFhGUk1fVVNFUmAgYW5kIGB4ZnJtX3VzZXJfcG9saWN5YC4gSXQgbG9va3MgbGlrZSBgeGZybV91c2VyX3BvbGljeWAgaXMgcmVhZGlseSBhdmFpbGFibGUgd2hlbmV2ZXIgYFhGUk1gIGlzIGVuYWJsZWQuIFxuXG5BaCwgcmlnaHQhIGBYRlJNX1VTRVJgIHByb3ZpZGVzIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgd2hpbGUgYHhmcm1fdXNlcl9wb2xpY3lgIGRlYWxzIHdpdGggc2V0c29ja29wdC5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBqdXN0IGdldCBhd2F5IHdpdGggZW5hYmxpbmcgYFhGUk1gIGRpcmVjdGx5PyBMZXQgbWUgY2hlY2vigKYgWXVwLCBpdCBsb29rcyBsaWtlIGBYRlJNYCBpcyB0aGUgY3J1Y2lhbCBjb25maWcgdGhhdCBidWlsZHMgYHhmcm1fc3RhdGUuY2AuXG5cbkhvd2V2ZXIsIGl04oCZcyBhIGJvb2wgdGhhdCBsYWNrcyBhIHByb21wdCwgd2hpY2ggbWVhbnMgaXQgY2FuJ3QgYmUgZW5hYmxlZCBpbmRlcGVuZGVudGx5LiBJdCAqbXVzdCogYmUgc2VsZWN0ZWQgYnkgc29tZXRoaW5nIGVsc2UuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgYW5kIHVzZXItZnJpZW5kbHkgY2hvaWNlIGlzIHN0aWxsIGBYRlJNX1VTRVJgLiBJdCdzIGEgdXNlci12aXNpYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCBpbiB0dXJuIHNlbGVjdHMgdGhlIHJlcXVpcmVkIGBYRlJNYC5cblxuVG8gY29uZmlybSB0aGlzLCBJJ2xsIHRha2UgYSBxdWljayBsb29rIGF0IGBuZXQveGZybS9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwcm9wZXJ0aWVzIG9mIGBYRlJNX1VTRVJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzU1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjE4LjIxMjk1ODA1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2OTkwMTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1fVVNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTMxLVxcbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG5uZXQveGZybS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb21wYXRpYmxlIEFCSSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1NDoxOC4yNzA2NjMwMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYxODE2MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYHhmcm1fdXNlcl9wb2xpY3lgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgZW5hYmxpbmcgYFhGUk1fVVNFUmAgc2VlbXMgbGlrZSBhIGdvb2QgY2FsbCBmb3IgdGVzdGluZy4gQ29uc2lkZXJpbmcgdGhhdCwgSSBzaG91bGQgbWVudGlvbiB0aGF0IGBJTkVUX0VTUGAgb3IgYElORVRfQUhgIGNhbiBhbHNvIGltcGxpY2l0bHkgc2VsZWN0IGBYRlJNYCBhcyBhIGNvbmZpZyBvcHRpb24uIEJ1dCwgbGV0J3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgbGlzdCBgWEZSTV9VU0VSYC5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hlcmUgdGhleSd2ZSBzd2l0Y2hlZCBmcm9tIGBfX3NrX2RzdF9yZXNldChzaylgIHRvIGBza19kc3RfcmVzZXQoc2spYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGNsZWFyIG9uZSBhdCB0aGF0LiBUaGlzIGlzbid0IGp1c3QgY29zbWV0aWM7IGl0IHNpZ25hbHMgYSBzaGlmdCBpbiBob3cgdGhlIHNvY2tldCBkZXN0aW5hdGlvbiBjYWNoZSBpcyBoYW5kbGVkIOKAkyBpbXBsZW1lbnRpbmcgcHJvcGVyIGxvY2tpbmcgYW5kIGF0b21pYyBvcGVyYXRpb25zLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIFRoZXJlZm9yZSwgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgZnV6ei5cblxuU28sIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBmb3IgdGhpcyBwYXRjaC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBuYXJyb3dlZCB0byBgeGZybV91c2VyX3BvbGljeWAuIEFuZCBJJ2xsIGVuYWJsZSBgWEZSTV9VU0VSYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBtb2RpZmllcyBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUgcmVzZXQgYW5kIGludHJvZHVjZXMgbG9ja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2NSwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MjIuODg4ODI5MTA0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MTkzOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[0].run-triage(0) Phase: Succeeded StartedAt: 2026-06-27 02:44:52 +0000 UTC FinishedAt: 2026-06-27 02:54:25 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "805185b7c7a1069e407b6f7b3bc98e44d415f484", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "XFRM_USER" ], "series_id": "4af82cf4-a349-44a8-abd6-acbf3b6aff84" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "xfrm_user_policy" ], "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+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjUzPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1hGUk1fVVNFUiYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3hmcm1fdXNlcl9wb2xpY3kmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDEzNmIyNzgwMDQzZTcwZDY0MjY1YTg0ZjM0MzJiNDdhZmFiYTY4NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMjo1Mzo1MSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4wOGJhNjgwNWRkYjNmYyAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG5AQCAtMzAxMCw3ICYjNDM7MzAxMCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoc29ja3B0cl9pc19udWxsKG9wdHZhbCkgXHUwMDI2XHUwMDI2ICFvcHRsZW4pIHtcbiBcdFx0eGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuJiM0MztcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICYjNDM7MzA1MCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG4gXHRpZiAoZXJyIFx1MDAzZT0gMCkge1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIGVyciwgcG9sKTtcbiBcdFx0eGZybV9wb2xfcHV0KHBvbCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbiYjNDM7XHRcdHNrX2RzdF9yZXNldChzayk7XG4gXHRcdGVyciA9IDA7XG4gXHR9XG4gXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTM8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV91c2VyX3BvbGljeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX19za19kc3RfcmVzZXRgIHdpdGggYHNrX2RzdF9yZXNldGAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBpbnRyb2R1Y2VzIHByb3BlciBsb2NraW5nL2F0b21pYyBvcGVyYXRpb25zIHdoZW4gcmVzZXR0aW5nIHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAxMzZiMjc4MDA0M2U3MGQ2NDI2NWE4NGYzNDMyYjQ3YWZhYmE2ODZkCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFNhdCBKdW4gMjcgMDI6NTM6NTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3N0YXRlLmMgYi9uZXQveGZybS94ZnJtX3N0YXRlLmMKaW5kZXggYzU4Y2QwMjRlM2M2NzUuLjA4YmE2ODA1ZGRiM2ZjIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX3N0YXRlLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV9zdGF0ZS5jCkBAIC0zMDEwLDcgJiM0MzszMDEwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbikKIAlpZiAoc29ja3B0cl9pc19udWxsKG9wdHZhbCkgJmFtcDsmYW1wOyAhb3B0bGVuKSB7CiAJCXhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpOwogCQl4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7Ci0JCV9fc2tfZHN0X3Jlc2V0KHNrKTsKJiM0MzsJCXNrX2RzdF9yZXNldChzayk7CiAJCXJldHVybiAwOwogCX0KIApAQCAtMzA1MCw3ICYjNDM7MzA1MCw3IEBAIGludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pCiAJaWYgKGVyciAmZ3Q7PSAwKSB7CiAJCXhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpOwogCQl4ZnJtX3BvbF9wdXQocG9sKTsKLQkJX19za19kc3RfcmVzZXQoc2spOwomIzQzOwkJc2tfZHN0X3Jlc2V0KHNrKTsKIAkJZXJyID0gMDsKIAl9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk5MgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDEzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBTZWN1cml0eSBQb2xpY3kgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIGBuZXQveGZybS94ZnJtX3N0YXRlLmNgLiBUaGUgY29yZSBvZiB0aGUgY2hhbmdlIHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZDogdGhleSYjMzk7dmUgc3dhcHBlZCBvdXQgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgZm9yIGBza19kc3RfcmVzZXQoc2spYCB3aXRoaW4gYHhmcm1fdXNlcl9wb2xpY3lgLiBIbW0sIHRoYXQmIzM5O3MgaW50ZXJlc3RpbmcuIEkga25vdyB0aGUgZGlmZmVyZW5jZSBoZXJlOiBpdCYjMzk7cyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UuIGBza19kc3RfcmVzZXQoc2spYCBpbXBsaWVzIGxvY2tpbmcgb3IgYXRvbWljIG9wZXJhdGlvbnMsIHdoZXJlYXMgdGhlIGRvdWJsZS11bmRlcnNjb3JlIHZlcnNpb24sIGBfX3NrX2RzdF9yZXNldChzaylgLCBkb2VzbiYjMzk7dCBoYXZlIHRob3NlLgoKVGhpcyBkZWZpbml0ZWx5IG1lcml0cyBhIGNsb3NlciBsb29rLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkgdGhpcyBhbHRlcmF0aW9uIHdhcyBtYWRlIGFuZCB3aGF0IGltcGxpY2F0aW9ucyBpdCBoYXMuIEkmIzM5O2xsIG5lZWQgdG8gaW1tZWRpYXRlbHkgY3Jvc3MtcmVmZXJlbmNlIGB4ZnJtX3VzZXJfcG9saWN5YCBhbmQgYHNrX2RzdF9yZXNldGAuIEkmIzM5O2xsIHN0YXJ0IGJ5IHBpbnBvaW50aW5nIHRoZSBleGFjdCBsb2NhdGlvbiBvZiBgeGZybV91c2VyX3BvbGljeWAgd2l0aGluIGBuZXQveGZybS94ZnJtX3N0YXRlLmNgIGl0c2VsZi4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgc2l0ZSBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLiBUaGlzIHdpbGwgaGVscCBtZSBldmFsdWF0ZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9zdGF0ZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMDAwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fdW5yZWdpc3Rlcl90cmFuc2xhdG9yKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwMi1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDAzOmludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwNC17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNTktfVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjMwNjA6RVhQT1JUX1NZTUJPTCh4ZnJtX3VzZXJfcG9saWN5KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDYxLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjUzPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDQKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiAzMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzLiBIZXJlJiMzOTtzIGhvdyBJJiMzOTtkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqSW52ZXN0aWdhdGluZyB0aGUgYHhmcm1fdXNlcl9wb2xpY3lgIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCYjMzk7cyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgdGhlIGB4ZnJtX3VzZXJfcG9saWN5YCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIGtub3cgaXQmIzM5O3MgYSBrZXJuZWwgY29uZmlndXJhdGlvbiBvcHRpb24sIHNvIGxldCYjMzk7cyBzdGFydCB3aXRoIGEgY2hlY2sgb24gaXRzIGV4cG9ydCBzdGF0dXMuIE9uY2UgSSBrbm93IGlmIGl0JiMzOTtzIGV4cG9ydGVkLCBJJiMzOTtsbCBtb3ZlIG9uIHRvIHVuZGVyc3RhbmRpbmcgd2hlcmUgYW5kIGhvdyBpdCYjMzk7cyBhY3R1YWxseSB1c2VkIHdpdGhpbiB0aGUgY29kZWJhc2UuIFRoZSBnb2FsIGlzIGEgY2xlYXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jeSBhbmQgdXNhZ2Ugb2YgdGhpcyBwb2xpY3kgY29uZmlndXJhdGlvbi4gTGV0JiMzOTtzIGRpZyBpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jPTg5Mj1pbnQgZG9faXBfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjQvaXBfc29ja2dsdWUuYy0xMzQ2LVx0XHRcdGJyZWFrO1xubmV0L2lwdjQvaXBfc29ja2dsdWUuYzoxMzQ3Olx0XHRlcnIgPSB4ZnJtX3VzZXJfcG9saWN5KHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvaXB2NC9pcF9zb2NrZ2x1ZS5jLTEzNDgtXHRcdGJyZWFrO1xuLS1cbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYz0zNzY9aW50IGRvX2lwdjZfc2V0c29ja29wdChzdHJ1Y3Qgc29jayAqc2ssIGludCBsZXZlbCwgaW50IG9wdG5hbWUsXG4tLVxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jLTkzNC1cdFx0XHRicmVhaztcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYzo5MzU6XHRcdHJldHYgPSB4ZnJtX3VzZXJfcG9saWN5KHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XG5uZXQvaXB2Ni9pcHY2X3NvY2tnbHVlLmMtOTM2LVx0XHRicmVhaztcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTU5OT1zdGF0aWMgc3RydWN0IG5sbXNnaGRyICp4ZnJtX3VzZXJfcmN2X21zZ19jb21wYXQoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpoMzIsXG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy02NDQtXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NTpzdGF0aWMgaW50IHhmcm1fdXNlcl9wb2xpY3lfY29tcGF0KHU4ICoqcGRhdGEzMiwgaW50IG9wdGxlbilcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmMtNjQ2LXtcbi0tXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTY3MD1zdGF0aWMgc3RydWN0IHhmcm1fdHJhbnNsYXRvciB4ZnJtX3RyYW5zbGF0b3IgPSB7XG4tLVxubmV0L3hmcm0veGZybV9jb21wYXQuYy02NzMtXHQucmN2X21zZ19jb21wYXRcdFx0XHQ9IHhmcm1fdXNlcl9yY3ZfbXNnX2NvbXBhdCxcbm5ldC94ZnJtL3hmcm1fY29tcGF0LmM6Njc0Olx0LnhsYXRlX3VzZXJfcG9saWN5X3NvY2twdHJcdD0geGZybV91c2VyX3BvbGljeV9jb21wYXQsXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY3NS19O1xuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMDAwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fdW5yZWdpc3Rlcl90cmFuc2xhdG9yKTtcbi0tXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwMi1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDAzOmludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwNC17XG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNTktfVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjMwNjA6RVhQT1JUX1NZTUJPTCh4ZnJtX3VzZXJfcG9saWN5KTtcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDYxLVxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jPTQyMTY9c3RhdGljIGludCB4ZnJtX3NlbmRfYWNxdWlyZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHhmcm1fdG1wbCAqeHQsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtNDIzMi1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjQyMzM6LyogVXNlciBnaXZlcyB1cyB4ZnJtX3VzZXJfcG9saWN5X2luZm8gZm9sbG93ZWQgYnkgYW4gYXJyYXkgb2YgMFxubmV0L3hmcm0veGZybV91c2VyLmMtNDIzNC0gKiBvciBtb3JlIHRlbXBsYXRlcy5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1MzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNjI4CgkJCQkJCQlvdXRwdXQ6IDMyCgkJCQkJCQl0aG91Z2h0czogNzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgT3JpZ2luIGFuZCBSZWFjaCBvZiBYRlJNIFBvbGljeSBNYW5pcHVsYXRpb24qKgoKUmlnaHQsIHNvIHRoaXMgY29kZSBwYXRoIGlzIHRyaWdnZXJlZCBieSBgZG9faXBfc2V0c29ja29wdGAgYW5kIGBkb19pcHY2X3NldHNvY2tvcHRgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWxsIGFib3V0IG1hbmlwdWxhdGluZyBYRlJNIHBvbGljaWVzIHZpYSB0aGUgYHNldHNvY2tvcHRgIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIHRoZSBgSVBfWEZSTV9QT0xJQ1lgIGFuZCBgSVBWNl9YRlJNX1BPTElDWWAgc29ja2V0IG9wdGlvbnMuIFRoYXQmIzM5O3MgZ29vZCwgYmVjYXVzZSBpdCBuYXJyb3dzIGRvd24gdGhlIHNjb3BlIG9mIHdoYXQgSSBuZWVkIHRvIGxvb2sgYXQuIE5vdywgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZXJhY3Rpb25zIEkgbmVlZCB0byBkaWcgaW50byB0aGUgcmVsZXZhbnQgY29kZSwgc28gbGV0JiMzOTtzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCBzb3VyY2UgY29kZSBmb3IgYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRldGFpbHMgb2YgdGhpcyBwb2xpY3kgbWFuaXB1bGF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fc3RhdGVcXC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcbm5ldC94ZnJtL01ha2VmaWxlLTEzLVxubmV0L3hmcm0vTWFrZWZpbGU6MTQ6b2JqLSQoQ09ORklHX1hGUk0pIDo9IHhmcm1fcG9saWN5Lm8geGZybV9zdGF0ZS5vIHhmcm1faGFzaC5vIFxcXG5uZXQveGZybS9NYWtlZmlsZS0xNS1cdFx0ICAgICAgeGZybV9pbnB1dC5vIHhmcm1fb3V0cHV0Lm8gXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MDIwCgkJCQkJCQlvdXRwdXQ6IDMxCgkJCQkJCQl0aG91Z2h0czogNDIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3MsIHdpdGggdGhlIGJvbGRlZCBoZWFkZXIgYXMgcmVxdWVzdGVkOgoKKipYRlJNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKioKCkFscmlnaHQsIHNvIHRoZSBmb2N1cyBzZWVtcyB0byBiZSBvbiBuZXR3b3JrIHNlY3VyaXR5IGFuZCBzcGVjaWZpY2FsbHksIHRoZSBYRlJNIHN1YnN5c3RlbS4gVGhlIHN0YXJ0aW5nIHBvaW50IGlzIG9idmlvdXNseSB0aGUgYENPTkZJR19YRlJNYCBzZXR0aW5nLiBJbW1lZGlhdGVseSwgbXkgbWluZCBjbGFyaWZpZXMgdGhhdCB0aGlzIGlzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIGBYRlJNYCBpdHNlbGYuIFRoaXMgbWVhbnMgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBYRlJNIGZ1bmN0aW9uYWxpdHkuIE15IG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIHF1aWNrbHkgY2hlY2sgdGhlIGRlcGVuZGVuY3kgb3IgcmVsYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYW5kIGluIHRoaXMgY2FzZSB0aGUgbmV4dCB0aG91Z2h0IHNlZW1zIHRvIGJlIGFib3V0IGBYRlJNX1VTRVJgLiBJIG5lZWQgdG8gYXNzZXNzIHRoZSB1c2VyLXNwYWNlIGludGVyYWN0aW9uIGNvbXBvbmVudC4gV2hhdCBmZWF0dXJlcyBhcmUgYmVpbmcgY29uZmlndXJlZCB3aXRoIGBYRlJNX1VTRVJgPyBJcyB0aGlzIHJlbGF0ZWQgdG8ga2V5IG1hbmFnZW1lbnQgb3IgcG9saWN5IGNvbnRyb2w/IFRpbWUgdG8gZXhhbWluZSB0aGVzZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgY2xvc2VseSB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgaW1wbGljYXRpb25zIGZvciB0aGUgb3ZlcmFsbCBzZWN1cml0eSBjb25maWd1cmF0aW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYRlJNX1VTRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSAmIzQzOz0geGZybV9hbGdvLm9cbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICYjNDM7PSB4ZnJtX3VzZXIub1xubmV0L3hmcm0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICYjNDM7PSB4ZnJtX2NvbXBhdC5vXG5uZXQveGZybS9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfWEZSTV9JUENPTVApICYjNDM7PSB4ZnJtX2lwY29tcC5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ0MTgKCQkJCQkJCW91dHB1dDogMzIKCQkJCQkJCXRob3VnaHRzOiAxMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQW5hbHlzaXMgb2YgYSBQb3RlbnRpYWwgWEZSTSBJc3N1ZSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBXZSYjMzk7cmUgZGVhbGluZyB3aXRoIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggSSBrbm93IGlzIG5lc3RsZWQgYXdheSBpbiBgeGZybV9zdGF0ZS5jYCBhbmQsIG9mIGNvdXJzZSwgdGhhdCBmaWxlIGlzIGNvbXBpbGVkIG9ubHkgaWYgYENPTkZJR19YRlJNYCBpcyBlbmFibGVkLiBUaGF0JiMzOTtzIGEga2V5IGRldGFpbCB0byBrZWVwIGluIG1pbmQgZm9yIHRlc3RpbmcuIFRoZSBjb2RlIGNoYW5nZSBpdHNlbGYgbG9va3MgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgdGhleSYjMzk7cmUgc3dhcHBpbmcgb3V0IGBfX3NrX2RzdF9yZXNldChzaylgIGZvciBgc2tfZHN0X3Jlc2V0KHNrKWAgd2l0aGluIGB4ZnJtX3VzZXJfcG9saWN5YC4KCk15IGV4cGVydCBpbnR1aXRpb24gdGVsbHMgbWUgdGhpcyBpcyBsaWtlbHkgYSBmdW5jdGlvbmFsIGZpeCwgcHJvYmFibHkgdGFyZ2V0aW5nIHNvbWUga2luZCBvZiByYWNlIGNvbmRpdGlvbiBvciBsb2NraW5nIHByb2JsZW0uIFRoZSBjaGFuZ2Ugc2VlbXMgc3VidGxlLCBhbmQgdGhvc2UgYXJlIG9mdGVuIHRoZSBoYXJkZXN0IHRvIGRlYnVnLiBJIG5lZWQgdG8gZGlnIGludG8gd2h5IHRoZSBjaGFuZ2Ugd2FzIG5lY2Vzc2FyeSwgdGhlIHJlYXNvbmluZyBiZWhpbmQgaXQgYW5kIGFueSBzdXBwb3J0aW5nIGRvY3VtZW50YXRpb24sIGxpa2UgYnVnIHJlcG9ydHMgb3IgbWFpbGluZyBsaXN0IGRpc2N1c3Npb25zLCB0byBmdWxseSBncmFzcCB0aGUgY29udGV4dC4gVGhlIGZhY3QgdGhhdCB0aGUgY2hhbmdlIHJlcGxhY2VzIGFuIGludGVybmFsIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHB1YmxpYyBvbmUgc3VnZ2VzdHMgdGhlcmUgbWF5IGhhdmUgYmVlbiBzb21lIGhpZGRlbiBhc3N1bXB0aW9ucyBvciB1bmludGVuZGVkIHNpZGUgZWZmZWN0cy4KCkdpdmVuIHRoZSBuYXR1cmUgb2YgdGhlIGNoYW5nZSBhbmQgaXRzIHBvdGVudGlhbCBpbXBhY3Qgb24gc2VjdXJpdHkgb3Igc3RhYmlsaXR5LCBmdXp6aW5nIGlzIGFuIGFic29sdXRlIG11c3QuIEkmIzM5O20gZ29pbmcgdG8gcHV0IGB4ZnJtX3VzZXJfcG9saWN5YCBvbiBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEFuZCBJJiMzOTttIG1ha2luZyBhIG1lbnRhbCBub3RlIHRvIGNoZWNrIHRoZSBidWlsZCBjb25maWd1cmF0aW9ucywgc3BlY2lmaWNhbGx5IGBYRlJNYC4gQmVmb3JlIEkgc3RhcnQgZ2VuZXJhdGluZyBhbnkgdGVzdHMsIEkgc2hvdWxkIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgaXRzIGRlcGVuZGVuY2llcyBhbmQgYW55IHByZXJlcXVpc2l0ZXMuIExldCBtZSBjaGVjayB3aGF0IGBYRlJNYCBkZXBlbmRzIG9uIHRvIGJ1aWxkIHRoYXQgc3Vic3lzdGVtLCBqdXN0IHRvIGJlIHRob3JvdWdoIGFuZCBwbGFuIGZvciB0aGUgZW52aXJvbm1lbnQgSSYjMzk7bGwgbmVlZCB0byBzZXQgdXAgZm9yIHRoaXMgZnV6emluZyBleGVyY2lzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0kJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnLTQtI1xubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXG5uZXQveGZybS9LY29uZmlnLTYtXHRib29sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5ODIKCQkJCQkJCW91dHB1dDogMjYKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIFNlbGVjdGlvbiBQcm9jZXNzKioKCk9rYXksIHNvIGBYRlJNYCBpcyB0eXBpY2FsbHkgZW5hYmxlZCB3aGVuIHVzaW5nIGBJTkVUYC4gVGhhdCYjMzk7cyB0aGUgYmFzZWxpbmUuIE15IHRhc2sgbm93IGlzIHRvIGZpZ3VyZSBvdXQgdGhlIG1lY2hhbmlzbXMgdGhhdCBhY3R1YWxseSB0cmlnZ2VyIHRoZSBzZWxlY3Rpb24gb2YgYFhGUk1gLiBJIG5lZWQgdG8gZHJpbGwgZG93biBpbnRvIHRoZSBjb25maWd1cmF0aW9uIGFuZCBjb2RlYmFzZSB0byB1bmRlcnN0YW5kIHRoZSBkZXBlbmRlbmNpZXMgYW5kIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGV0ZXJtaW5lIHdoZW4gYFhGUk1gIGdldHMgc2V0LiBJIGtub3cgdGhlIHVzdWFsIHN1c3BlY3RzIGFyZSBsaWtlbHkgcmVsYXRlZCB0byByb3V0aW5nLCBJUHNlYywgYW5kIG5ldHdvcmsgc3RhY2sgZmVhdHVyZXMsIGJ1dCBJIG5lZWQgYSBzeXN0ZW1hdGljIGFwcHJvYWNoIHRvIHRyYWNlIHRoZSBkZWNpc2lvbiB0cmVlIGZyb20gYElORVRgIGFuZCBzZWUgd2hlcmUgaXQgaW5ldml0YWJseSBsZWFkcyB0byBgWEZSTWAuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0JiMzOTtzIGFjdHVhbGx5IGRyaXZpbmcgdGhpcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c2VsZWN0IFhGUk0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTMwNy1cdHNlbGVjdCBORVRfSVBfVFVOTkVMXG5uZXQvaXB2NC9LY29uZmlnOjMwODpcdHNlbGVjdCBYRlJNXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cdGhlbHBcbi0tXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxubmV0L2lwdjQvS2NvbmZpZy0zNDAtXHR0cmlzdGF0ZSBcJiMzNDtJUDogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY0L0tjb25maWc6MzQxOlx0c2VsZWN0IFhGUk1fQUhcbm5ldC9pcHY0L0tjb25maWctMzQyLVx0aGVscFxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzU0PWNvbmZpZyBJTkVUX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTUtXHR0cmlzdGF0ZSBcJiMzNDtJUDogRVNQIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcdHNlbGVjdCBYRlJNX0VTUFxubmV0L2lwdjQvS2NvbmZpZy0zNTctXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2NC9LY29uZmlnLTM3MS1cdGRlcGVuZHMgb24gSU5FVF9FU1Bcbm5ldC9pcHY0L0tjb25maWc6MzcyOlx0c2VsZWN0IFhGUk1fT0ZGTE9BRFxubmV0L2lwdjQvS2NvbmZpZy0zNzMtXHRkZWZhdWx0IG5cbi0tXG5uZXQvaXB2NC9LY29uZmlnPTM4Mj1jb25maWcgSU5FVF9FU1BJTlRDUFxuLS1cbm5ldC9pcHY0L0tjb25maWctMzg2LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjQvS2NvbmZpZzozODc6XHRzZWxlY3QgWEZSTV9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODgtXHRoZWxwXG4tLVxubmV0L2lwdjQvS2NvbmZpZz0zOTQ9Y29uZmlnIElORVRfSVBDT01QXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zOTYtXHRzZWxlY3QgSU5FVF9YRlJNX1RVTk5FTFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY0L0tjb25maWctMzk4LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9NDc9Y29uZmlnIElORVQ2X0FIXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogQUggdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NDk6XHRzZWxlY3QgWEZSTV9BSFxubmV0L2lwdjYvS2NvbmZpZy01MC1cdGhlbHBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjMtXHR0cmlzdGF0ZSBcJiMzNDtJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6NjQ6XHRzZWxlY3QgWEZSTV9FU1Bcbm5ldC9pcHY2L0tjb25maWctNjUtXHRoZWxwXG4tLVxubmV0L2lwdjYvS2NvbmZpZz03Nz1jb25maWcgSU5FVDZfRVNQX09GRkxPQURcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVx0ZGVwZW5kcyBvbiBJTkVUNl9FU1Bcbm5ldC9pcHY2L0tjb25maWc6ODA6XHRzZWxlY3QgWEZSTV9PRkZMT0FEXG5uZXQvaXB2Ni9LY29uZmlnLTgxLVx0ZGVmYXVsdCBuXG4tLVxubmV0L2lwdjYvS2NvbmZpZz05MD1jb25maWcgSU5FVDZfRVNQSU5UQ1Bcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVx0c2VsZWN0IE5FVF9TT0NLX01TR1xubmV0L2lwdjYvS2NvbmZpZzo5NTpcdHNlbGVjdCBYRlJNX0VTUElOVENQXG5uZXQvaXB2Ni9LY29uZmlnLTk2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTAyPWNvbmZpZyBJTkVUNl9JUENPTVBcbi0tXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cdHNlbGVjdCBJTkVUNl9YRlJNX1RVTk5FTFxubmV0L2lwdjYvS2NvbmZpZzoxMDU6XHRzZWxlY3QgWEZSTV9JUENPTVBcbm5ldC9pcHY2L0tjb25maWctMTA2LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTEyPWNvbmZpZyBJUFY2X01JUDZcbm5ldC9pcHY2L0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7SVB2NjogTW9iaWxpdHlcJiMzNDtcbm5ldC9pcHY2L0tjb25maWc6MTE0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC9pcHY2L0tjb25maWc9MTUwPWNvbmZpZyBJUFY2X1ZUSVxuLS1cbm5ldC9pcHY2L0tjb25maWctMTUzLVx0c2VsZWN0IE5FVF9JUF9UVU5ORUxcbm5ldC9pcHY2L0tjb25maWc6MTU0Olx0c2VsZWN0IFhGUk1cbm5ldC9pcHY2L0tjb25maWctMTU1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTQ9Y29uZmlnIFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xNS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjE2Olx0c2VsZWN0IFhGUk1cbm5ldC94ZnJtL0tjb25maWctMTctXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0yMz1jb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzoyNTpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMjYtXHRoZWxwXG4tLVxubmV0L3hmcm0vS2NvbmZpZz04ND1jb25maWcgWEZSTV9BSFxubmV0L3hmcm0vS2NvbmZpZy04NS1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjg2Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy04Ny1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTkzPWNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG5uZXQveGZybS9LY29uZmlnOjk1Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy05Ni1cdHNlbGVjdCBDUllQVE9cbi0tXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbm5ldC94ZnJtL0tjb25maWc6MTA4Olx0c2VsZWN0IFhGUk1fQUxHT1xubmV0L3hmcm0vS2NvbmZpZy0xMDktXHRzZWxlY3QgQ1JZUFRPXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbm5ldC94ZnJtL0tjb25maWctMTEzLVx0dHJpc3RhdGUgXCYjMzQ7UEZfS0VZIHNvY2tldHMgKGRlcHJlY2F0ZWQpXCYjMzQ7XG5uZXQveGZybS9LY29uZmlnOjExNDpcdHNlbGVjdCBYRlJNX0FMR09cbm5ldC94ZnJtL0tjb25maWctMTE1LVx0aGVscFxuLS1cbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyNy1cdGRlcGVuZHMgb24gTkVUX0tFWVxubmV0L3hmcm0vS2NvbmZpZzoxMjg6XHRzZWxlY3QgWEZSTV9NSUdSQVRFXG5uZXQveGZybS9LY29uZmlnLTEyOS1cdGhlbHBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDYvMjcgMDI6NTQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjc1NQoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDIxNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBDb25maWd1cmF0aW9uIFN0cmF0ZWd5IGZvciBYRlJNKioKCk9rYXksIHNvIEkmIzM5O20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wdGltYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBgWEZSTV9VU0VSYCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgaW5oZXJlbnRseSBzZWxlY3RzIGBYRlJNYCwgYW5kIGBYRlJNYCBpdHNlbGYgaXMgZnVuZGFtZW50YWxseSBuZWNlc3NhcnkuICBFc3NlbnRpYWxseSwgbGlzdGluZyBgWEZSTV9VU0VSYCBpbiB0aGUgY29uZmlnIHNlZW1zIGxpa2UgdGhlIGNsZWFuIHdheSB0byBnby4KCkhtbSwgd2FpdCBhIHNlY29uZC4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGBYRlJNX1VTRVJgIGFuZCBgeGZybV91c2VyX3BvbGljeWAuIEl0IGxvb2tzIGxpa2UgYHhmcm1fdXNlcl9wb2xpY3lgIGlzIHJlYWRpbHkgYXZhaWxhYmxlIHdoZW5ldmVyIGBYRlJNYCBpcyBlbmFibGVkLiAKCkFoLCByaWdodCEgYFhGUk1fVVNFUmAgcHJvdmlkZXMgdGhlIG5ldGxpbmsgaW50ZXJmYWNlLCB3aGlsZSBgeGZybV91c2VyX3BvbGljeWAgZGVhbHMgd2l0aCBzZXRzb2Nrb3B0LgoKU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBqdXN0IGdldCBhd2F5IHdpdGggZW5hYmxpbmcgYFhGUk1gIGRpcmVjdGx5PyBMZXQgbWUgY2hlY2vigKYgWXVwLCBpdCBsb29rcyBsaWtlIGBYRlJNYCBpcyB0aGUgY3J1Y2lhbCBjb25maWcgdGhhdCBidWlsZHMgYHhmcm1fc3RhdGUuY2AuCgpIb3dldmVyLCBpdOKAmXMgYSBib29sIHRoYXQgbGFja3MgYSBwcm9tcHQsIHdoaWNoIG1lYW5zIGl0IGNhbiYjMzk7dCBiZSBlbmFibGVkIGluZGVwZW5kZW50bHkuIEl0ICptdXN0KiBiZSBzZWxlY3RlZCBieSBzb21ldGhpbmcgZWxzZS4gVGhlcmVmb3JlLCB0aGUgbG9naWNhbCBhbmQgdXNlci1mcmllbmRseSBjaG9pY2UgaXMgc3RpbGwgYFhGUk1fVVNFUmAuIEl0JiMzOTtzIGEgdXNlci12aXNpYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCBpbiB0dXJuIHNlbGVjdHMgdGhlIHJlcXVpcmVkIGBYRlJNYC4KClRvIGNvbmZpcm0gdGhpcywgSSYjMzk7bGwgdGFrZSBhIHF1aWNrIGxvb2sgYXQgYG5ldC94ZnJtL0tjb25maWdgIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBkZXBlbmRlbmNpZXMgYW5kIHByb3BlcnRpZXMgb2YgYFhGUk1fVVNFUmAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA2LzI3IDAyOjU0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBYRlJNX1VTRVImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQveGZybS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3NDY1CgkJCQkJCQlvdXRwdXQ6IDEwNgoJCQkJCQkJdGhvdWdodHM6IDE4NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYHhmcm1fdXNlcl9wb2xpY3lgIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O3ZlIGxvb2tlZCBhdCB0aGlzIHBhdGNoIGFuZCwgeWVzLCBlbmFibGluZyBgWEZSTV9VU0VSYCBzZWVtcyBsaWtlIGEgZ29vZCBjYWxsIGZvciB0ZXN0aW5nLiBDb25zaWRlcmluZyB0aGF0LCBJIHNob3VsZCBtZW50aW9uIHRoYXQgYElORVRfRVNQYCBvciBgSU5FVF9BSGAgY2FuIGFsc28gaW1wbGljaXRseSBzZWxlY3QgYFhGUk1gIGFzIGEgY29uZmlnIG9wdGlvbi4gQnV0LCBsZXQmIzM5O3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgbGlzdCBgWEZSTV9VU0VSYC4KClRoZSBjb3JlIG9mIHRoZSBjaGFuZ2UgYXBwZWFycyB0byBiZSBpbiBgeGZybV91c2VyX3BvbGljeWAsIHdoZXJlIHRoZXkmIzM5O3ZlIHN3aXRjaGVkIGZyb20gYF9fc2tfZHN0X3Jlc2V0KHNrKWAgdG8gYHNrX2RzdF9yZXNldChzaylgLiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGNsZWFyIG9uZSBhdCB0aGF0LiBUaGlzIGlzbiYjMzk7dCBqdXN0IGNvc21ldGljOyBpdCBzaWduYWxzIGEgc2hpZnQgaW4gaG93IHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUgaXMgaGFuZGxlZCDigJMgaW1wbGVtZW50aW5nIHByb3BlciBsb2NraW5nIGFuZCBhdG9taWMgb3BlcmF0aW9ucy4gVGhpcyBpcyBzaWduaWZpY2FudCBiZWNhdXNlIGl0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uLiBUaGVyZWZvcmUsIGl0JiMzOTtzIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBmdXp6LgoKU28sIEkmIzM5O20gZ29pbmcgdG8gc2V0IGBXb3J0aEZ1enppbmc9dHJ1ZWAgZm9yIHRoaXMgcGF0Y2guIE15IGBGb2N1c1N5bWJvbHNgIHdpbGwgYmUgbmFycm93ZWQgdG8gYHhmcm1fdXNlcl9wb2xpY3lgLiBBbmQgSSYjMzk7bGwgZW5hYmxlIGBYRlJNX1VTRVJgIGluIHRoZSBgRW5hYmxlQ29uZmlnc2AgbGlzdC4gVGhlIHJlYXNvbmluZyBpcyBjbGVhcjogdGhlIHBhdGNoIG1vZGlmaWVzIHNvY2tldCBkZXN0aW5hdGlvbiBjYWNoZSByZXNldCBhbmQgaW50cm9kdWNlcyBsb2NraW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNi8yNyAwMjo1NDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7eGZybV91c2VyX3BvbGljeSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCByZXBsYWNlcyBgX19za19kc3RfcmVzZXRgIHdpdGggYHNrX2RzdF9yZXNldGAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBpbnRyb2R1Y2VzIHByb3BlciBsb2NraW5nL2F0b21pYyBvcGVyYXRpb25zIHdoZW4gcmVzZXR0aW5nIHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDt4ZnJtX3VzZXJfcG9saWN5JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHJlcGxhY2VzIGBfX3NrX2RzdF9yZXNldGAgd2l0aCBgc2tfZHN0X3Jlc2V0YCBpbiBgeGZybV91c2VyX3BvbGljeWAsIHdoaWNoIGludHJvZHVjZXMgcHJvcGVyIGxvY2tpbmcvYXRvbWljIG9wZXJhdGlvbnMgd2hlbiByZXNldHRpbmcgdGhlIHNvY2tldCBkZXN0aW5hdGlvbiBjYWNoZS4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRoYXQgZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24gYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1Mi43NTcyNTUzOTRaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDI5ODc4ODIxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTM6NTIuNzU3MjY0MDE0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMjA0OTIzOTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCAxMzZiMjc4MDA0M2U3MGQ2NDI2NWE4NGYzNDMyYjQ3YWZhYmE2ODZkXFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTYXQgSnVuIDI3IDAyOjUzOjUxIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xcbmluZGV4IGM1OGNkMDI0ZTNjNjc1Li4wOGJhNjgwNWRkYjNmYyAxMDA2NDRcXG4tLS0gYS9uZXQveGZybS94ZnJtX3N0YXRlLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcXG5AQCAtMzAxMCw3ICszMDEwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcXG4gXFx0aWYgKHNvY2twdHJfaXNfbnVsbChvcHR2YWwpIFxcdTAwMjZcXHUwMDI2ICFvcHRsZW4pIHtcXG4gXFx0XFx0eGZybV9za19wb2xpY3lfaW5zZXJ0KHNrLCBYRlJNX1BPTElDWV9JTiwgTlVMTCk7XFxuIFxcdFxcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfT1VULCBOVUxMKTtcXG4tXFx0XFx0X19za19kc3RfcmVzZXQoc2spO1xcbitcXHRcXHRza19kc3RfcmVzZXQoc2spO1xcbiBcXHRcXHRyZXR1cm4gMDtcXG4gXFx0fVxcbiBcXG5AQCAtMzA1MCw3ICszMDUwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcXG4gXFx0aWYgKGVyciBcXHUwMDNlPSAwKSB7XFxuIFxcdFxcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpO1xcbiBcXHRcXHR4ZnJtX3BvbF9wdXQocG9sKTtcXG4tXFx0XFx0X19za19kc3RfcmVzZXQoc2spO1xcbitcXHRcXHRza19kc3RfcmVzZXQoc2spO1xcbiBcXHRcXHRlcnIgPSAwO1xcbiBcXHR9XFxuIFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1My4wNzg1MDEzNTJaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTc3NTI4OTI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInhmcm1fdXNlcl9wb2xpY3lcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCByZXBsYWNlcyBgX19za19kc3RfcmVzZXRgIHdpdGggYHNrX2RzdF9yZXNldGAgaW4gYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBpbnRyb2R1Y2VzIHByb3BlciBsb2NraW5nL2F0b21pYyBvcGVyYXRpb25zIHdoZW4gcmVzZXR0aW5nIHRoZSBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGZpeGVzIGEgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9uIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDEzNmIyNzgwMDQzZTcwZDY0MjY1YTg0ZjM0MzJiNDdhZmFiYTY4NmRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgU2F0IEp1biAyNyAwMjo1Mzo1MSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fc3RhdGUuYyBiL25ldC94ZnJtL3hmcm1fc3RhdGUuY1xuaW5kZXggYzU4Y2QwMjRlM2M2NzUuLjA4YmE2ODA1ZGRiM2ZjIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9zdGF0ZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX3N0YXRlLmNcbkBAIC0zMDEwLDcgKzMwMTAsNyBAQCBpbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxuIFx0aWYgKHNvY2twdHJfaXNfbnVsbChvcHR2YWwpIFx1MDAyNlx1MDAyNiAhb3B0bGVuKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgWEZSTV9QT0xJQ1lfSU4sIE5VTEwpO1xuIFx0XHR4ZnJtX3NrX3BvbGljeV9pbnNlcnQoc2ssIFhGUk1fUE9MSUNZX09VVCwgTlVMTCk7XG4tXHRcdF9fc2tfZHN0X3Jlc2V0KHNrKTtcbitcdFx0c2tfZHN0X3Jlc2V0KHNrKTtcbiBcdFx0cmV0dXJuIDA7XG4gXHR9XG4gXG5AQCAtMzA1MCw3ICszMDUwLDcgQEAgaW50IHhmcm1fdXNlcl9wb2xpY3koc3RydWN0IHNvY2sgKnNrLCBpbnQgb3B0bmFtZSwgc29ja3B0cl90IG9wdHZhbCwgaW50IG9wdGxlbilcbiBcdGlmIChlcnIgXHUwMDNlPSAwKSB7XG4gXHRcdHhmcm1fc2tfcG9saWN5X2luc2VydChzaywgZXJyLCBwb2wpO1xuIFx0XHR4ZnJtX3BvbF9wdXQocG9sKTtcbi1cdFx0X19za19kc3RfcmVzZXQoc2spO1xuK1x0XHRza19kc3RfcmVzZXQoc2spO1xuIFx0XHRlcnIgPSAwO1xuIFx0fVxuIFxuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTM6NTMuMDc4NTAzNzMyWiIsIlNlcSI6MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzkyMTI1NDQ5MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBTZWN1cml0eSBQb2xpY3kgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciBgbmV0L3hmcm0veGZybV9zdGF0ZS5jYC4gVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBzZWVtcyBzdHJhaWdodGZvcndhcmQ6IHRoZXkndmUgc3dhcHBlZCBvdXQgYF9fc2tfZHN0X3Jlc2V0KHNrKWAgZm9yIGBza19kc3RfcmVzZXQoc2spYCB3aXRoaW4gYHhmcm1fdXNlcl9wb2xpY3lgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gSSBrbm93IHRoZSBkaWZmZXJlbmNlIGhlcmU6IGl0J3MgYSAqZnVuY3Rpb25hbCogY2hhbmdlLiBgc2tfZHN0X3Jlc2V0KHNrKWAgaW1wbGllcyBsb2NraW5nIG9yIGF0b21pYyBvcGVyYXRpb25zLCB3aGVyZWFzIHRoZSBkb3VibGUtdW5kZXJzY29yZSB2ZXJzaW9uLCBgX19za19kc3RfcmVzZXQoc2spYCwgZG9lc24ndCBoYXZlIHRob3NlLlxuXG5UaGlzIGRlZmluaXRlbHkgbWVyaXRzIGEgY2xvc2VyIGxvb2suIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoeSB0aGlzIGFsdGVyYXRpb24gd2FzIG1hZGUgYW5kIHdoYXQgaW1wbGljYXRpb25zIGl0IGhhcy4gSSdsbCBuZWVkIHRvIGltbWVkaWF0ZWx5IGNyb3NzLXJlZmVyZW5jZSBgeGZybV91c2VyX3BvbGljeWAgYW5kIGBza19kc3RfcmVzZXRgLiBJJ2xsIHN0YXJ0IGJ5IHBpbnBvaW50aW5nIHRoZSBleGFjdCBsb2NhdGlvbiBvZiBgeGZybV91c2VyX3BvbGljeWAgd2l0aGluIGBuZXQveGZybS94ZnJtX3N0YXRlLmNgIGl0c2VsZi4gVGhlbiwgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGNhbGwgc2l0ZSBvZiB0aGF0IHNwZWNpZmljIGZ1bmN0aW9uLiBUaGlzIHdpbGwgaGVscCBtZSBldmFsdWF0ZSBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzOCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjUzOjU2Ljk5OTc2MzM2NloiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODU1MjYzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL3hmcm1fc3RhdGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3N0YXRlLmM9MzAwMD1FWFBPUlRfU1lNQk9MX0dQTCh4ZnJtX3VucmVnaXN0ZXJfdHJhbnNsYXRvcik7XFxuLS1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMzAwMi1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MzAwMzppbnQgeGZybV91c2VyX3BvbGljeShzdHJ1Y3Qgc29jayAqc2ssIGludCBvcHRuYW1lLCBzb2NrcHRyX3Qgb3B0dmFsLCBpbnQgb3B0bGVuKVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDA0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDU5LX1cXG5uZXQveGZybS94ZnJtX3N0YXRlLmM6MzA2MDpFWFBPUlRfU1lNQk9MKHhmcm1fdXNlcl9wb2xpY3kpO1xcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDYxLVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1Ny4wNTgzMjA4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MjUzNzQyMzc0NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBob3cgSSdkIGFwcHJvYWNoIHRoaXMgdGFzaywgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgeGZybV91c2VyX3BvbGljeWAgQ29uZmlndXJhdGlvbioqXG5cblJpZ2h0LCBsZXQncyBzdGFydCBieSBmaWd1cmluZyBvdXQgd2hlcmUgdGhlIGB4ZnJtX3VzZXJfcG9saWN5YCBjb25maWd1cmF0aW9uIG9wdGlvbiBpcyBlbmFibGVkLiBJIGtub3cgaXQncyBhIGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbiwgc28gbGV0J3Mgc3RhcnQgd2l0aCBhIGNoZWNrIG9uIGl0cyBleHBvcnQgc3RhdHVzLiBPbmNlIEkga25vdyBpZiBpdCdzIGV4cG9ydGVkLCBJJ2xsIG1vdmUgb24gdG8gdW5kZXJzdGFuZGluZyB3aGVyZSBhbmQgaG93IGl0J3MgYWN0dWFsbHkgdXNlZCB3aXRoaW4gdGhlIGNvZGViYXNlLiBUaGUgZ29hbCBpcyBhIGNsZWFyIHVuZGVyc3RhbmRpbmcgb2YgdGhlIGRlcGVuZGVuY3kgYW5kIHVzYWdlIG9mIHRoaXMgcG9saWN5IGNvbmZpZ3VyYXRpb24uIExldCdzIGRpZyBpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwNCwiT3V0cHV0VG9rZW5zIjoyOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjUzOjU5LjU5NTc0NzIyOFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MDU5NTY3MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX3VzZXJfcG9saWN5XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjQvaXBfc29ja2dsdWUuYz04OTI9aW50IGRvX2lwX3NldHNvY2tvcHQoc3RydWN0IHNvY2sgKnNrLCBpbnQgbGV2ZWwsIGludCBvcHRuYW1lLFxcbi0tXFxubmV0L2lwdjQvaXBfc29ja2dsdWUuYy0xMzQ2LVxcdFxcdFxcdGJyZWFrO1xcbm5ldC9pcHY0L2lwX3NvY2tnbHVlLmM6MTM0NzpcXHRcXHRlcnIgPSB4ZnJtX3VzZXJfcG9saWN5KHNrLCBvcHRuYW1lLCBvcHR2YWwsIG9wdGxlbik7XFxubmV0L2lwdjQvaXBfc29ja2dsdWUuYy0xMzQ4LVxcdFxcdGJyZWFrO1xcbi0tXFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jPTM3Nj1pbnQgZG9faXB2Nl9zZXRzb2Nrb3B0KHN0cnVjdCBzb2NrICpzaywgaW50IGxldmVsLCBpbnQgb3B0bmFtZSxcXG4tLVxcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05MzQtXFx0XFx0XFx0YnJlYWs7XFxubmV0L2lwdjYvaXB2Nl9zb2NrZ2x1ZS5jOjkzNTpcXHRcXHRyZXR2ID0geGZybV91c2VyX3BvbGljeShzaywgb3B0bmFtZSwgb3B0dmFsLCBvcHRsZW4pO1xcbm5ldC9pcHY2L2lwdjZfc29ja2dsdWUuYy05MzYtXFx0XFx0YnJlYWs7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTU5OT1zdGF0aWMgc3RydWN0IG5sbXNnaGRyICp4ZnJtX3VzZXJfcmN2X21zZ19jb21wYXQoY29uc3Qgc3RydWN0IG5sbXNnaGRyICpoMzIsXFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0NC1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY0NTpzdGF0aWMgaW50IHhmcm1fdXNlcl9wb2xpY3lfY29tcGF0KHU4ICoqcGRhdGEzMiwgaW50IG9wdGxlbilcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY0Ni17XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jPTY3MD1zdGF0aWMgc3RydWN0IHhmcm1fdHJhbnNsYXRvciB4ZnJtX3RyYW5zbGF0b3IgPSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jLTY3My1cXHQucmN2X21zZ19jb21wYXRcXHRcXHRcXHQ9IHhmcm1fdXNlcl9yY3ZfbXNnX2NvbXBhdCxcXG5uZXQveGZybS94ZnJtX2NvbXBhdC5jOjY3NDpcXHQueGxhdGVfdXNlcl9wb2xpY3lfc29ja3B0clxcdD0geGZybV91c2VyX3BvbGljeV9jb21wYXQsXFxubmV0L3hmcm0veGZybV9jb21wYXQuYy02NzUtfTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0zMDAwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fdW5yZWdpc3Rlcl90cmFuc2xhdG9yKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0zMDAyLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDAzOmludCB4ZnJtX3VzZXJfcG9saWN5KHN0cnVjdCBzb2NrICpzaywgaW50IG9wdG5hbWUsIHNvY2twdHJfdCBvcHR2YWwsIGludCBvcHRsZW4pXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwMDQte1xcbi0tXFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNTktfVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzozMDYwOkVYUE9SVF9TWU1CT0woeGZybV91c2VyX3BvbGljeSk7XFxubmV0L3hmcm0veGZybV9zdGF0ZS5jLTMwNjEtXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz00MjE2PXN0YXRpYyBpbnQgeGZybV9zZW5kX2FjcXVpcmUoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCB4ZnJtX3RtcGwgKnh0LFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtNDIzMi1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzo0MjMzOi8qIFVzZXIgZ2l2ZXMgdXMgeGZybV91c2VyX3BvbGljeV9pbmZvIGZvbGxvd2VkIGJ5IGFuIGFycmF5IG9mIDBcXG5uZXQveGZybS94ZnJtX3VzZXIuYy00MjM0LSAqIG9yIG1vcmUgdGVtcGxhdGVzLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1Mzo1OS42NzYzNjkzOVoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMyNTg1MzY4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIE9yaWdpbiBhbmQgUmVhY2ggb2YgWEZSTSBQb2xpY3kgTWFuaXB1bGF0aW9uKipcblxuUmlnaHQsIHNvIHRoaXMgY29kZSBwYXRoIGlzIHRyaWdnZXJlZCBieSBgZG9faXBfc2V0c29ja29wdGAgYW5kIGBkb19pcHY2X3NldHNvY2tvcHRgLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgYWxsIGFib3V0IG1hbmlwdWxhdGluZyBYRlJNIHBvbGljaWVzIHZpYSB0aGUgYHNldHNvY2tvcHRgIGludGVyZmFjZS4gU3BlY2lmaWNhbGx5LCB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGBJUF9YRlJNX1BPTElDWWAgYW5kIGBJUFY2X1hGUk1fUE9MSUNZYCBzb2NrZXQgb3B0aW9ucy4gVGhhdCdzIGdvb2QsIGJlY2F1c2UgaXQgbmFycm93cyBkb3duIHRoZSBzY29wZSBvZiB3aGF0IEkgbmVlZCB0byBsb29rIGF0LiBOb3csIHRvIHVuZGVyc3RhbmQgdGhlIGludGVyYWN0aW9ucyBJIG5lZWQgdG8gZGlnIGludG8gdGhlIHJlbGV2YW50IGNvZGUsIHNvIGxldCdzIGNoZWNrIHRoZSBjb25maWd1cmF0aW9uIGFuZCBzb3VyY2UgY29kZSBmb3IgYG5ldC94ZnJtL3hmcm1fc3RhdGUuY2AuIFRoYXQgc2hvdWxkIGdpdmUgbWUgdGhlIGRldGFpbHMgb2YgdGhpcyBwb2xpY3kgbWFuaXB1bGF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNjI4LCJPdXRwdXRUb2tlbnMiOjMyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MDIuOTM0OTA4OTk5WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNjYxNjA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInhmcm1fc3RhdGVcXFxcLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vTWFrZWZpbGVcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vTWFrZWZpbGU9MTI9ZW5kaWZcXG5uZXQveGZybS9NYWtlZmlsZS0xMy1cXG5uZXQveGZybS9NYWtlZmlsZToxNDpvYmotJChDT05GSUdfWEZSTSkgOj0geGZybV9wb2xpY3kubyB4ZnJtX3N0YXRlLm8geGZybV9oYXNoLm8gXFxcXFxcbm5ldC94ZnJtL01ha2VmaWxlLTE1LVxcdFxcdCAgICAgIHhmcm1faW5wdXQubyB4ZnJtX291dHB1dC5vIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MDIuOTk4NTg5NDczWiIsIlNlcSI6OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzA4MDc1OTIxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzLCB3aXRoIHRoZSBib2xkZWQgaGVhZGVyIGFzIHJlcXVlc3RlZDpcblxuKipYRlJNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuQWxyaWdodCwgc28gdGhlIGZvY3VzIHNlZW1zIHRvIGJlIG9uIG5ldHdvcmsgc2VjdXJpdHkgYW5kIHNwZWNpZmljYWxseSwgdGhlIFhGUk0gc3Vic3lzdGVtLiBUaGUgc3RhcnRpbmcgcG9pbnQgaXMgb2J2aW91c2x5IHRoZSBgQ09ORklHX1hGUk1gIHNldHRpbmcuIEltbWVkaWF0ZWx5LCBteSBtaW5kIGNsYXJpZmllcyB0aGF0IHRoaXMgaXMgZXNzZW50aWFsbHkgdGhlIHNhbWUgYXMgYFhGUk1gIGl0c2VsZi4gVGhpcyBtZWFucyB3ZSdyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgWEZSTSBmdW5jdGlvbmFsaXR5LiBNeSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBxdWlja2x5IGNoZWNrIHRoZSBkZXBlbmRlbmN5IG9yIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBvcHRpb25zIGFuZCBpbiB0aGlzIGNhc2UgdGhlIG5leHQgdGhvdWdodCBzZWVtcyB0byBiZSBhYm91dCBgWEZSTV9VU0VSYC4gSSBuZWVkIHRvIGFzc2VzcyB0aGUgdXNlci1zcGFjZSBpbnRlcmFjdGlvbiBjb21wb25lbnQuIFdoYXQgZmVhdHVyZXMgYXJlIGJlaW5nIGNvbmZpZ3VyZWQgd2l0aCBgWEZSTV9VU0VSYD8gSXMgdGhpcyByZWxhdGVkIHRvIGtleSBtYW5hZ2VtZW50IG9yIHBvbGljeSBjb250cm9sPyBUaW1lIHRvIGV4YW1pbmUgdGhlc2UgY29uZmlndXJhdGlvbiBvcHRpb25zIGNsb3NlbHkgdG8gdW5kZXJzdGFuZCB0aGUgc2NvcGUgYW5kIGltcGxpY2F0aW9ucyBmb3IgdGhlIG92ZXJhbGwgc2VjdXJpdHkgY29uZmlndXJhdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDAyMCwiT3V0cHV0VG9rZW5zIjozMSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjA2LjA3OTM1Mzc3MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzQ3MDkyMjMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWEZSTV9VU0VSXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL01ha2VmaWxlPTE5PW9iai0kKENPTkZJR19YRlJNX0FMR08pICs9IHhmcm1fYWxnby5vXFxubmV0L3hmcm0vTWFrZWZpbGU6MjA6b2JqLSQoQ09ORklHX1hGUk1fVVNFUikgKz0geGZybV91c2VyLm9cXG5uZXQveGZybS9NYWtlZmlsZToyMTpvYmotJChDT05GSUdfWEZSTV9VU0VSX0NPTVBBVCkgKz0geGZybV9jb21wYXQub1xcbm5ldC94ZnJtL01ha2VmaWxlLTIyLW9iai0kKENPTkZJR19YRlJNX0lQQ09NUCkgKz0geGZybV9pcGNvbXAub1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1NDowNi4xNTQwNzE1NTRaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU5NTc1MzcwOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBbmFseXNpcyBvZiBhIFBvdGVudGlhbCBYRlJNIElzc3VlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgbXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzIGlzIGludGVyZXN0aW5nLiBXZSdyZSBkZWFsaW5nIHdpdGggYHhmcm1fdXNlcl9wb2xpY3lgLCB3aGljaCBJIGtub3cgaXMgbmVzdGxlZCBhd2F5IGluIGB4ZnJtX3N0YXRlLmNgIGFuZCwgb2YgY291cnNlLCB0aGF0IGZpbGUgaXMgY29tcGlsZWQgb25seSBpZiBgQ09ORklHX1hGUk1gIGlzIGVuYWJsZWQuIFRoYXQncyBhIGtleSBkZXRhaWwgdG8ga2VlcCBpbiBtaW5kIGZvciB0ZXN0aW5nLiBUaGUgY29kZSBjaGFuZ2UgaXRzZWxmIGxvb2tzIHByZXR0eSBzdHJhaWdodGZvcndhcmQg4oCTIHRoZXkncmUgc3dhcHBpbmcgb3V0IGBfX3NrX2RzdF9yZXNldChzaylgIGZvciBgc2tfZHN0X3Jlc2V0KHNrKWAgd2l0aGluIGB4ZnJtX3VzZXJfcG9saWN5YC5cblxuTXkgZXhwZXJ0IGludHVpdGlvbiB0ZWxscyBtZSB0aGlzIGlzIGxpa2VseSBhIGZ1bmN0aW9uYWwgZml4LCBwcm9iYWJseSB0YXJnZXRpbmcgc29tZSBraW5kIG9mIHJhY2UgY29uZGl0aW9uIG9yIGxvY2tpbmcgcHJvYmxlbS4gVGhlIGNoYW5nZSBzZWVtcyBzdWJ0bGUsIGFuZCB0aG9zZSBhcmUgb2Z0ZW4gdGhlIGhhcmRlc3QgdG8gZGVidWcuIEkgbmVlZCB0byBkaWcgaW50byB3aHkgdGhlIGNoYW5nZSB3YXMgbmVjZXNzYXJ5LCB0aGUgcmVhc29uaW5nIGJlaGluZCBpdCBhbmQgYW55IHN1cHBvcnRpbmcgZG9jdW1lbnRhdGlvbiwgbGlrZSBidWcgcmVwb3J0cyBvciBtYWlsaW5nIGxpc3QgZGlzY3Vzc2lvbnMsIHRvIGZ1bGx5IGdyYXNwIHRoZSBjb250ZXh0LiBUaGUgZmFjdCB0aGF0IHRoZSBjaGFuZ2UgcmVwbGFjZXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHVibGljIG9uZSBzdWdnZXN0cyB0aGVyZSBtYXkgaGF2ZSBiZWVuIHNvbWUgaGlkZGVuIGFzc3VtcHRpb25zIG9yIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLlxuXG5HaXZlbiB0aGUgbmF0dXJlIG9mIHRoZSBjaGFuZ2UgYW5kIGl0cyBwb3RlbnRpYWwgaW1wYWN0IG9uIHNlY3VyaXR5IG9yIHN0YWJpbGl0eSwgZnV6emluZyBpcyBhbiBhYnNvbHV0ZSBtdXN0LiBJJ20gZ29pbmcgdG8gcHV0IGB4ZnJtX3VzZXJfcG9saWN5YCBvbiBteSBsaXN0IG9mIGZvY3VzIHN5bWJvbHMgZm9yIGZ1enppbmcuIEFuZCBJJ20gbWFraW5nIGEgbWVudGFsIG5vdGUgdG8gY2hlY2sgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25zLCBzcGVjaWZpY2FsbHkgYFhGUk1gLiBCZWZvcmUgSSBzdGFydCBnZW5lcmF0aW5nIGFueSB0ZXN0cywgSSBzaG91bGQgbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCBpdHMgZGVwZW5kZW5jaWVzIGFuZCBhbnkgcHJlcmVxdWlzaXRlcy4gTGV0IG1lIGNoZWNrIHdoYXQgYFhGUk1gIGRlcGVuZHMgb24gdG8gYnVpbGQgdGhhdCBzdWJzeXN0ZW0sIGp1c3QgdG8gYmUgdGhvcm91Z2ggYW5kIHBsYW4gZm9yIHRoZSBlbnZpcm9ubWVudCBJJ2xsIG5lZWQgdG8gc2V0IHVwIGZvciB0aGlzIGZ1enppbmcgZXhlcmNpc2UuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ0MTgsIk91dHB1dFRva2VucyI6MzIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjEsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MTAuNzQ5ODI4NjIzWiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4OTk0NjYzMiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgWEZSTSRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L3hmcm0vS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS9LY29uZmlnLTQtI1xcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxcbm5ldC94ZnJtL0tjb25maWctNi1cXHRib29sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjEwLjgzOTc4MzU4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNjQ3MjY2NzQxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBYRlJNIFNlbGVjdGlvbiBQcm9jZXNzKipcblxuT2theSwgc28gYFhGUk1gIGlzIHR5cGljYWxseSBlbmFibGVkIHdoZW4gdXNpbmcgYElORVRgLiBUaGF0J3MgdGhlIGJhc2VsaW5lLiBNeSB0YXNrIG5vdyBpcyB0byBmaWd1cmUgb3V0IHRoZSBtZWNoYW5pc21zIHRoYXQgYWN0dWFsbHkgdHJpZ2dlciB0aGUgc2VsZWN0aW9uIG9mIGBYRlJNYC4gSSBuZWVkIHRvIGRyaWxsIGRvd24gaW50byB0aGUgY29uZmlndXJhdGlvbiBhbmQgY29kZWJhc2UgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIGFuZCBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRldGVybWluZSB3aGVuIGBYRlJNYCBnZXRzIHNldC4gSSBrbm93IHRoZSB1c3VhbCBzdXNwZWN0cyBhcmUgbGlrZWx5IHJlbGF0ZWQgdG8gcm91dGluZywgSVBzZWMsIGFuZCBuZXR3b3JrIHN0YWNrIGZlYXR1cmVzLCBidXQgSSBuZWVkIGEgc3lzdGVtYXRpYyBhcHByb2FjaCB0byB0cmFjZSB0aGUgZGVjaXNpb24gdHJlZSBmcm9tIGBJTkVUYCBhbmQgc2VlIHdoZXJlIGl0IGluZXZpdGFibHkgbGVhZHMgdG8gYFhGUk1gLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgZHJpdmluZyB0aGlzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTgyLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MTMuNDg3MDUzODM1WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTU2NDU4MiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzZWxlY3QgWEZSTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY0L0tjb25maWc9MzA0PWNvbmZpZyBORVRfSVBWVElcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzA3LVxcdHNlbGVjdCBORVRfSVBfVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozMDg6XFx0c2VsZWN0IFhGUk1cXG5uZXQvaXB2NC9LY29uZmlnLTMwOS1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTMzOT1jb25maWcgSU5FVF9BSFxcbm5ldC9pcHY0L0tjb25maWctMzQwLVxcdHRyaXN0YXRlIFxcXCJJUDogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjQvS2NvbmZpZzozNDE6XFx0c2VsZWN0IFhGUk1fQUhcXG5uZXQvaXB2NC9LY29uZmlnLTM0Mi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM1ND1jb25maWcgSU5FVF9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1NS1cXHR0cmlzdGF0ZSBcXFwiSVA6IEVTUCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2NC9LY29uZmlnOjM1NjpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2NC9LY29uZmlnLTM1Ny1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM2OT1jb25maWcgSU5FVF9FU1BfT0ZGTE9BRFxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZy0zNzEtXFx0ZGVwZW5kcyBvbiBJTkVUX0VTUFxcbm5ldC9pcHY0L0tjb25maWc6MzcyOlxcdHNlbGVjdCBYRlJNX09GRkxPQURcXG5uZXQvaXB2NC9LY29uZmlnLTM3My1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY0L0tjb25maWc9MzgyPWNvbmZpZyBJTkVUX0VTUElOVENQXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnLTM4Ni1cXHRzZWxlY3QgTkVUX1NPQ0tfTVNHXFxubmV0L2lwdjQvS2NvbmZpZzozODc6XFx0c2VsZWN0IFhGUk1fRVNQSU5UQ1BcXG5uZXQvaXB2NC9LY29uZmlnLTM4OC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2NC9LY29uZmlnPTM5ND1jb25maWcgSU5FVF9JUENPTVBcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzk2LVxcdHNlbGVjdCBJTkVUX1hGUk1fVFVOTkVMXFxubmV0L2lwdjQvS2NvbmZpZzozOTc6XFx0c2VsZWN0IFhGUk1fSVBDT01QXFxubmV0L2lwdjQvS2NvbmZpZy0zOTgtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz00Nz1jb25maWcgSU5FVDZfQUhcXG5uZXQvaXB2Ni9LY29uZmlnLTQ4LVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBBSCB0cmFuc2Zvcm1hdGlvblxcXCJcXG5uZXQvaXB2Ni9LY29uZmlnOjQ5OlxcdHNlbGVjdCBYRlJNX0FIXFxubmV0L2lwdjYvS2NvbmZpZy01MC1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTYyPWNvbmZpZyBJTkVUNl9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTYzLVxcdHRyaXN0YXRlIFxcXCJJUHY2OiBFU1AgdHJhbnNmb3JtYXRpb25cXFwiXFxubmV0L2lwdjYvS2NvbmZpZzo2NDpcXHRzZWxlY3QgWEZSTV9FU1BcXG5uZXQvaXB2Ni9LY29uZmlnLTY1LVxcdGhlbHBcXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9Nzc9Y29uZmlnIElORVQ2X0VTUF9PRkZMT0FEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTc5LVxcdGRlcGVuZHMgb24gSU5FVDZfRVNQXFxubmV0L2lwdjYvS2NvbmZpZzo4MDpcXHRzZWxlY3QgWEZSTV9PRkZMT0FEXFxubmV0L2lwdjYvS2NvbmZpZy04MS1cXHRkZWZhdWx0IG5cXG4tLVxcbm5ldC9pcHY2L0tjb25maWc9OTA9Y29uZmlnIElORVQ2X0VTUElOVENQXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTk0LVxcdHNlbGVjdCBORVRfU09DS19NU0dcXG5uZXQvaXB2Ni9LY29uZmlnOjk1OlxcdHNlbGVjdCBYRlJNX0VTUElOVENQXFxubmV0L2lwdjYvS2NvbmZpZy05Ni1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTEwMj1jb25maWcgSU5FVDZfSVBDT01QXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTEwNC1cXHRzZWxlY3QgSU5FVDZfWEZSTV9UVU5ORUxcXG5uZXQvaXB2Ni9LY29uZmlnOjEwNTpcXHRzZWxlY3QgWEZSTV9JUENPTVBcXG5uZXQvaXB2Ni9LY29uZmlnLTEwNi1cXHRoZWxwXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTExMj1jb25maWcgSVBWNl9NSVA2XFxubmV0L2lwdjYvS2NvbmZpZy0xMTMtXFx0dHJpc3RhdGUgXFxcIklQdjY6IE1vYmlsaXR5XFxcIlxcbm5ldC9pcHY2L0tjb25maWc6MTE0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xMTUtXFx0aGVscFxcbi0tXFxubmV0L2lwdjYvS2NvbmZpZz0xNTA9Y29uZmlnIElQVjZfVlRJXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTE1My1cXHRzZWxlY3QgTkVUX0lQX1RVTk5FTFxcbm5ldC9pcHY2L0tjb25maWc6MTU0OlxcdHNlbGVjdCBYRlJNXFxubmV0L2lwdjYvS2NvbmZpZy0xNTUtXFx0aGVscFxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xND1jb25maWcgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTY6XFx0c2VsZWN0IFhGUk1cXG5uZXQveGZybS9LY29uZmlnLTE3LVxcdHNlbGVjdCBDUllQVE9cXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MjM9Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoyNTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy0yNi1cXHRoZWxwXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTg0PWNvbmZpZyBYRlJNX0FIXFxubmV0L3hmcm0vS2NvbmZpZy04NS1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6ODY6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctODctXFx0c2VsZWN0IENSWVBUT1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz05Mz1jb25maWcgWEZSTV9FU1BcXG5uZXQveGZybS9LY29uZmlnLTk0LVxcdHRyaXN0YXRlXFxubmV0L3hmcm0vS2NvbmZpZzo5NTpcXHRzZWxlY3QgWEZSTV9BTEdPXFxubmV0L3hmcm0vS2NvbmZpZy05Ni1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEwNj1jb25maWcgWEZSTV9JUENPTVBcXG5uZXQveGZybS9LY29uZmlnLTEwNy1cXHR0cmlzdGF0ZVxcbm5ldC94ZnJtL0tjb25maWc6MTA4OlxcdHNlbGVjdCBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTEwOS1cXHRzZWxlY3QgQ1JZUFRPXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTExMj1jb25maWcgTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWctMTEzLVxcdHRyaXN0YXRlIFxcXCJQRl9LRVkgc29ja2V0cyAoZGVwcmVjYXRlZClcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzoxMTQ6XFx0c2VsZWN0IFhGUk1fQUxHT1xcbm5ldC94ZnJtL0tjb25maWctMTE1LVxcdGhlbHBcXG4tLVxcbm5ldC94ZnJtL0tjb25maWc9MTI1PWNvbmZpZyBORVRfS0VZX01JR1JBVEVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTI3LVxcdGRlcGVuZHMgb24gTkVUX0tFWVxcbm5ldC94ZnJtL0tjb25maWc6MTI4OlxcdHNlbGVjdCBYRlJNX01JR1JBVEVcXG5uZXQveGZybS9LY29uZmlnLTEyOS1cXHRoZWxwXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjEzLjU2ODYyNjYzN1oiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjQ0MzI4NTE1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IENvbmZpZ3VyYXRpb24gU3RyYXRlZ3kgZm9yIFhGUk0qKlxuXG5Pa2F5LCBzbyBJJ20gdGhpbmtpbmcgYWJvdXQgdGhlIG9wdGltYWwgY29uZmlndXJhdGlvbiBmb3IgdGhlIFhGUk0gc3Vic3lzdGVtLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBlbmFibGluZyBgWEZSTV9VU0VSYCBpcyBhIHNvbGlkIHN0YXJ0aW5nIHBvaW50IGJlY2F1c2UgaXQgaW5oZXJlbnRseSBzZWxlY3RzIGBYRlJNYCwgYW5kIGBYRlJNYCBpdHNlbGYgaXMgZnVuZGFtZW50YWxseSBuZWNlc3NhcnkuICBFc3NlbnRpYWxseSwgbGlzdGluZyBgWEZSTV9VU0VSYCBpbiB0aGUgY29uZmlnIHNlZW1zIGxpa2UgdGhlIGNsZWFuIHdheSB0byBnby5cblxuSG1tLCB3YWl0IGEgc2Vjb25kLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYFhGUk1fVVNFUmAgYW5kIGB4ZnJtX3VzZXJfcG9saWN5YC4gSXQgbG9va3MgbGlrZSBgeGZybV91c2VyX3BvbGljeWAgaXMgcmVhZGlseSBhdmFpbGFibGUgd2hlbmV2ZXIgYFhGUk1gIGlzIGVuYWJsZWQuIFxuXG5BaCwgcmlnaHQhIGBYRlJNX1VTRVJgIHByb3ZpZGVzIHRoZSBuZXRsaW5rIGludGVyZmFjZSwgd2hpbGUgYHhmcm1fdXNlcl9wb2xpY3lgIGRlYWxzIHdpdGggc2V0c29ja29wdC5cblxuU28sIHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSBqdXN0IGdldCBhd2F5IHdpdGggZW5hYmxpbmcgYFhGUk1gIGRpcmVjdGx5PyBMZXQgbWUgY2hlY2vigKYgWXVwLCBpdCBsb29rcyBsaWtlIGBYRlJNYCBpcyB0aGUgY3J1Y2lhbCBjb25maWcgdGhhdCBidWlsZHMgYHhmcm1fc3RhdGUuY2AuXG5cbkhvd2V2ZXIsIGl04oCZcyBhIGJvb2wgdGhhdCBsYWNrcyBhIHByb21wdCwgd2hpY2ggbWVhbnMgaXQgY2FuJ3QgYmUgZW5hYmxlZCBpbmRlcGVuZGVudGx5LiBJdCAqbXVzdCogYmUgc2VsZWN0ZWQgYnkgc29tZXRoaW5nIGVsc2UuIFRoZXJlZm9yZSwgdGhlIGxvZ2ljYWwgYW5kIHVzZXItZnJpZW5kbHkgY2hvaWNlIGlzIHN0aWxsIGBYRlJNX1VTRVJgLiBJdCdzIGEgdXNlci12aXNpYmxlIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCB3aGljaCBpbiB0dXJuIHNlbGVjdHMgdGhlIHJlcXVpcmVkIGBYRlJNYC5cblxuVG8gY29uZmlybSB0aGlzLCBJJ2xsIHRha2UgYSBxdWljayBsb29rIGF0IGBuZXQveGZybS9LY29uZmlnYCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgZGVwZW5kZW5jaWVzIGFuZCBwcm9wZXJ0aWVzIG9mIGBYRlJNX1VTRVJgLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NzU1LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjE0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA2LTI3VDAyOjU0OjE4LjIxMjk1ODA1MloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc2OTkwMTQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFhGUk1fVVNFUlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQveGZybS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxcbm5ldC94ZnJtL0tjb25maWctMjQtXFx0dHJpc3RhdGUgXFxcIlRyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTMxLVxcbm5ldC94ZnJtL0tjb25maWc6MzI6Y29uZmlnIFhGUk1fVVNFUl9DT01QQVRcXG5uZXQveGZybS9LY29uZmlnLTMzLVxcdHRyaXN0YXRlIFxcXCJDb21wYXRpYmxlIEFCSSBzdXBwb3J0XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNi0yN1QwMjo1NDoxOC4yNzA2NjMwMDZaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDYxODE2MTc3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEltcGFjdCBvZiB0aGUgYHhmcm1fdXNlcl9wb2xpY3lgIFBhdGNoKipcblxuT2theSwgc28gSSd2ZSBsb29rZWQgYXQgdGhpcyBwYXRjaCBhbmQsIHllcywgZW5hYmxpbmcgYFhGUk1fVVNFUmAgc2VlbXMgbGlrZSBhIGdvb2QgY2FsbCBmb3IgdGVzdGluZy4gQ29uc2lkZXJpbmcgdGhhdCwgSSBzaG91bGQgbWVudGlvbiB0aGF0IGBJTkVUX0VTUGAgb3IgYElORVRfQUhgIGNhbiBhbHNvIGltcGxpY2l0bHkgc2VsZWN0IGBYRlJNYCBhcyBhIGNvbmZpZyBvcHRpb24uIEJ1dCwgbGV0J3Mga2VlcCBpdCBzaW1wbGUgYW5kIGp1c3QgbGlzdCBgWEZSTV9VU0VSYC5cblxuVGhlIGNvcmUgb2YgdGhlIGNoYW5nZSBhcHBlYXJzIHRvIGJlIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hlcmUgdGhleSd2ZSBzd2l0Y2hlZCBmcm9tIGBfX3NrX2RzdF9yZXNldChzaylgIHRvIGBza19kc3RfcmVzZXQoc2spYC4gVGhhdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UsIGEgcHJldHR5IGNsZWFyIG9uZSBhdCB0aGF0LiBUaGlzIGlzbid0IGp1c3QgY29zbWV0aWM7IGl0IHNpZ25hbHMgYSBzaGlmdCBpbiBob3cgdGhlIHNvY2tldCBkZXN0aW5hdGlvbiBjYWNoZSBpcyBoYW5kbGVkIOKAkyBpbXBsZW1lbnRpbmcgcHJvcGVyIGxvY2tpbmcgYW5kIGF0b21pYyBvcGVyYXRpb25zLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgaXQgZml4ZXMgYSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb24uIFRoZXJlZm9yZSwgaXQncyBkZWZpbml0ZWx5IHNvbWV0aGluZyB3ZSBzaG91bGQgZnV6ei5cblxuU28sIEknbSBnb2luZyB0byBzZXQgYFdvcnRoRnV6emluZz10cnVlYCBmb3IgdGhpcyBwYXRjaC4gTXkgYEZvY3VzU3ltYm9sc2Agd2lsbCBiZSBuYXJyb3dlZCB0byBgeGZybV91c2VyX3BvbGljeWAuIEFuZCBJJ2xsIGVuYWJsZSBgWEZSTV9VU0VSYCBpbiB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIFRoZSByZWFzb25pbmcgaXMgY2xlYXI6IHRoZSBwYXRjaCBtb2RpZmllcyBzb2NrZXQgZGVzdGluYXRpb24gY2FjaGUgcmVzZXQgYW5kIGludHJvZHVjZXMgbG9ja2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzQ2NSwiT3V0cHV0VG9rZW5zIjoxMDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDYtMjdUMDI6NTQ6MjIuODg4ODI5MTA0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY3MTkzOTgzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJ4ZnJtX3VzZXJfcG9saWN5XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggcmVwbGFjZXMgYF9fc2tfZHN0X3Jlc2V0YCB3aXRoIGBza19kc3RfcmVzZXRgIGluIGB4ZnJtX3VzZXJfcG9saWN5YCwgd2hpY2ggaW50cm9kdWNlcyBwcm9wZXIgbG9ja2luZy9hdG9taWMgb3BlcmF0aW9ucyB3aGVuIHJlc2V0dGluZyB0aGUgc29ja2V0IGRlc3RpbmF0aW9uIGNhY2hlLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBmaXhlcyBhIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbiBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[1] Phase: Succeeded StartedAt: 2026-06-27 02:54:35 +0000 UTC FinishedAt: 2026-06-27 02:54:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-06-27 02:54:35 +0000 UTC FinishedAt: 2026-06-27 02:54:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2] Phase: Succeeded StartedAt: 2026-06-27 02:54:35 +0000 UTC FinishedAt: 2026-06-27 06:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-06-27 02:54:35 +0000 UTC FinishedAt: 2026-06-27 06:47:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-06-27 02:54:35 +0000 UTC FinishedAt: 2026-06-27 02:54:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-06-27 02:54:35 +0000 UTC FinishedAt: 2026-06-27 02:54:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowlbxpm/series-workflowlbxpm-convert-artifact-2586742933/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-06-27 02:54:45 +0000 UTC FinishedAt: 2026-06-27 03:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-06-27 02:54:45 +0000 UTC FinishedAt: 2026-06-27 03:14: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:*7c9b4360-bf8e-4bab-8d4b-54901200ad7e,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-workflowlbxpm/series-workflowlbxpm-convert-artifact-2586742933/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": "c762ff76-eb7c-421e-8800-52064ad41957", "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-workflowlbxpm/series-workflowlbxpm-build-action-3538872571/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-06-27 02:54:45 +0000 UTC FinishedAt: 2026-06-27 03:14:37 +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:*7c9b4360-bf8e-4bab-8d4b-54901200ad7e,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-workflowlbxpm/series-workflowlbxpm-convert-artifact-2586742933/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": "c762ff76-eb7c-421e-8800-52064ad41957", "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-workflowlbxpm/series-workflowlbxpm-build-action-3538872571/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-06-27 03:14:47 +0000 UTC FinishedAt: 2026-06-27 03:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-06-27 03:14:47 +0000 UTC FinishedAt: 2026-06-27 03:14:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-06-27 03:14:47 +0000 UTC FinishedAt: 2026-06-27 03:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-06-27 03:14:47 +0000 UTC FinishedAt: 2026-06-27 03:14:54 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.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-workflowlbxpm/series-workflowlbxpm-convert-artifact-3527353968/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-06-27 03:14:57 +0000 UTC FinishedAt: 2026-06-27 03:17:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-06-27 03:14:57 +0000 UTC FinishedAt: 2026-06-27 03:17:27 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c762ff76-eb7c-421e-8800-52064ad41957,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-workflowlbxpm/series-workflowlbxpm-build-action-3538872571/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-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-06-27 03:17:37 +0000 UTC FinishedAt: 2026-06-27 03:17:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-06-27 03:17:37 +0000 UTC FinishedAt: 2026-06-27 03:17:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-06-27 03:17:37 +0000 UTC FinishedAt: 2026-06-27 03:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-06-27 03:17:37 +0000 UTC FinishedAt: 2026-06-27 03:42:32 +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:*7c9b4360-bf8e-4bab-8d4b-54901200ad7e,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-workflowlbxpm/series-workflowlbxpm-convert-artifact-3527353968/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": "eb592b37-90b1-41e6-bf42-6a3c83679111", "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-workflowlbxpm/series-workflowlbxpm-build-action-1657374572/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-06-27 03:17:37 +0000 UTC FinishedAt: 2026-06-27 03:42:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*7c9b4360-bf8e-4bab-8d4b-54901200ad7e,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-workflowlbxpm/series-workflowlbxpm-convert-artifact-3527353968/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": "eb592b37-90b1-41e6-bf42-6a3c83679111", "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-workflowlbxpm/series-workflowlbxpm-build-action-1657374572/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-06-27 03:42:32 +0000 UTC FinishedAt: 2026-06-27 03:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-06-27 03:42:32 +0000 UTC FinishedAt: 2026-06-27 03:42:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-06-27 03:42:32 +0000 UTC FinishedAt: 2026-06-27 03:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-06-27 03:42:32 +0000 UTC FinishedAt: 2026-06-27 03:44:32 +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:*eb592b37-90b1-41e6-bf42-6a3c83679111,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-workflowlbxpm/series-workflowlbxpm-build-action-1657374572/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-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 06:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 06:47:53 +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":["xfrm_user_policy"],"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:*c762ff76-eb7c-421e-8800-52064ad41957,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eb592b37-90b1-41e6-bf42-6a3c83679111,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-workflowlbxpm/series-workflowlbxpm-build-action-3538872571/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-workflowlbxpm/series-workflowlbxpm-build-action-1657374572/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 03:45:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 03:45:02 +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":["xfrm_user_policy"],"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-workflowlbxpm/series-workflowlbxpm-convert-artifact-1324965353/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 03:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 03:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-06-27 03:44:44 +0000 UTC FinishedAt: 2026-06-27 03:44:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-06-27 03:45:09 +0000 UTC FinishedAt: 2026-06-27 06:47:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflowlbxpm[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["xfrm_user_policy"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"805185b7c7a1069e407b6f7b3bc98e44d415f484","config_name":"upstream-apparmor-kasan.config","enable_configs":["XFRM_USER"],"series_id":"4af82cf4-a349-44a8-abd6-acbf3b6aff84","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-06-27 03:45:09 +0000 UTC FinishedAt: 2026-06-27 06:47:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c762ff76-eb7c-421e-8800-52064ad41957,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eb592b37-90b1-41e6-bf42-6a3c83679111,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-workflowlbxpm/series-workflowlbxpm-build-action-3538872571/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-workflowlbxpm/series-workflowlbxpm-build-action-1657374572/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-workflowlbxpm/series-workflowlbxpm-convert-artifact-1324965353/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,}