Name: series-workflow27bxb Phase: Succeeded StartedAt: 2026-08-06 13:56:45 +0000 UTC FinishedAt: 2026-08-06 18:00:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[0] Phase: Succeeded StartedAt: 2026-08-06 13:56:45 +0000 UTC FinishedAt: 2026-08-06 14:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[0].run-triage Phase: Succeeded StartedAt: 2026-08-06 13:56:45 +0000 UTC FinishedAt: 2026-08-06 14:19:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "31a420a822ff92e2090bd5d65efe8e34e2d6d9b8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "31a420a822ff92e2090bd5d65efe8e34e2d6d9b8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "259deb4a-220f-4ade-8ac1-fa647df8b237" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_ringbuf_reserve", "bpf_ringbuf_output", "bpf_ringbuf_reserve_dynptr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3JpbmdidWZfcmVzZXJ2ZSYjMzQ7LAogICAgJiMzNDticGZfcmluZ2J1Zl9vdXRwdXQmIzM0OywKICAgICYjMzQ7YnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB3cmFwLWFyb3VuZCBjb3JyZWN0bHkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgQlBGIGhlbHBlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYjI1YjE2OTQ2Yzc5ZDMyMTdmOGUxYjQ4ZDQ3NTg4OTJlMGI4MDY5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNDoxODoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JpbmdidWYuYyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXG5pbmRleCAzNWFlNjRhZGUzNmI4Li4yYzA4YTk4MzcwZDVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9yaW5nYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXG5AQCAtNDgyLDcgJiM0Mzs0ODIsNyBAQCBzdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxuIFx0cHJvZF9wb3MgPSByYi1cdTAwM2Vwcm9kdWNlcl9wb3M7XG4gXHRuZXdfcHJvZF9wb3MgPSBwcm9kX3BvcyAmIzQzOyBsZW47XG4gXG4tXHR3aGlsZSAocGVuZF9wb3MgXHUwMDNjIHByb2RfcG9zKSB7XG4mIzQzO1x0d2hpbGUgKChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSBcdTAwM2UgMCkge1xuIFx0XHRoZHIgPSAodm9pZCAqKXJiLVx1MDAzZWRhdGEgJiM0MzsgKHBlbmRfcG9zIFx1MDAyNiByYi1cdTAwM2VtYXNrKTtcbiBcdFx0aGRyX2xlbiA9IFJFQURfT05DRShoZHItXHUwMDNlbGVuKTtcbiBcdFx0aWYgKGhkcl9sZW4gXHUwMDI2IEJQRl9SSU5HQlVGX0JVU1lfQklUKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9yaW5nYnVmX3Jlc2VydmUmIzM0OywKICAgICYjMzQ7YnBmX3JpbmdidWZfb3V0cHV0JiMzNDssCiAgICAmIzM0O2JwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEJQRiBoZWxwZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmIyNWIxNjk0NmM3OWQzMjE3ZjhlMWI0OGQ0NzU4ODkyZTBiODA2OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTg6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JpbmdidWYuYyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jCmluZGV4IDM1YWU2NGFkZTM2YjguLjJjMDhhOTgzNzBkNWUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvcmluZ2J1Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jCkBAIC00ODIsNyAmIzQzOzQ4Miw3IEBAIHN0YXRpYyB2b2lkICpfX2JwZl9yaW5nYnVmX3Jlc2VydmUoc3RydWN0IGJwZl9yaW5nYnVmICpyYiwgdTY0IHNpemUpCiAJcHJvZF9wb3MgPSByYi0mZ3Q7cHJvZHVjZXJfcG9zOwogCW5ld19wcm9kX3BvcyA9IHByb2RfcG9zICYjNDM7IGxlbjsKIAotCXdoaWxlIChwZW5kX3BvcyAmbHQ7IHByb2RfcG9zKSB7CiYjNDM7CXdoaWxlICgobG9uZykocHJvZF9wb3MgLSBwZW5kX3BvcykgJmd0OyAwKSB7CiAJCWhkciA9ICh2b2lkICopcmItJmd0O2RhdGEgJiM0MzsgKHBlbmRfcG9zICZhbXA7IHJiLSZndDttYXNrKTsKIAkJaGRyX2xlbiA9IFJFQURfT05DRShoZHItJmd0O2xlbik7CiAJCWlmIChoZHJfbGVuICZhbXA7IEJQRl9SSU5HQlVGX0JVU1lfQklUKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmluZyBCdWZmZXIgUmVzZXJ2YXRpb24gQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AuIE15IGluaXRpYWwgc2NhbiBzdWdnZXN0cyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgY3JpdGljYWwgY2hhbmdlIHdpdGhpbiB0aGUgYF9fYnBmX3JpbmdidWZfcmVzZXJ2ZWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSBgd2hpbGVgIGxvb3AgY29uZGl0aW9uLiBUaGV5JiMzOTt2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IGNvbXBhcmlzb24gYHdoaWxlIChwZW5kX3BvcyAmbHQ7IHByb2RfcG9zKWAgd2l0aCBgd2hpbGUgKChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSAmZ3Q7IDApYC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IHJlbGF0ZWQgdG8gYSB3cmFwLWFyb3VuZCBpc3N1ZS4gV2l0aCBgcHJvZF9wb3NgIGFuZCBgcGVuZF9wb3NgIGJlaW5nIGluZGljZXMgd2l0aGluIGEgcmluZyBidWZmZXIsIHRoZXJlJiMzOTtzIHRoZSB2ZXJ5IHJlYWwgcG9zc2liaWxpdHkgb2YgdGhlbSAmIzM0O3dyYXBwaW5nJiMzNDsgYmFjayB0byB6ZXJvIGFmdGVyIHJlYWNoaW5nIHRoZSBidWZmZXImIzM5O3MgY2FwYWNpdHkuIFRoZSBvcmlnaW5hbCBjb21wYXJpc29uIGNvdWxkIGZhaWwgaW4gY2VydGFpbiBzY2VuYXJpb3MsIGFuZCBwb3RlbnRpYWxseSBhbGxvdyB1bnNhZmUgY29uZGl0aW9ucy4KClRoZSBjYXN0IHRvIGAobG9uZylgIGFuZCB0aGUgc3VidHJhY3Rpb24gKnRoZW4qIGNvbXBhcmlzb24gc3Ryb25nbHkgaGludHMgdGhhdCB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gaGFuZGxlIHRoZSBtb2R1bG8gYXJpdGhtZXRpYyBpbmhlcmVudCBpbiByaW5nIGJ1ZmZlciBpbmRleGluZyBjb3JyZWN0bHkuIFRoaXMgaW5kaWNhdGVzIHRoZXkmIzM5O3JlIHdvcmtpbmcgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBwcm9ibGVtcyB0aGF0IGNhbiBhcmlzZSB3aGVuIGRlYWxpbmcgd2l0aCB1bnNpZ25lZCBpbnRlZ2VycyByZXByZXNlbnRpbmcgYnVmZmVyIHBvc2l0aW9ucywgZXNwZWNpYWxseSBhZnRlciBsYXJnZSBhZHZhbmNlbWVudHMgYW5kIHBvdGVudGlhbCB3cmFwcy4gSSYjMzk7ZCBuZWVkIHRvIGRpdmUgZGVlcGVyLCB0byBjaGVjayB0aGVpciByYXRpb25hbGUsIGFuZCBwb3NzaWJseSBzZWUgdGhlIGNvbnRleHQsIGJ1dCBteSBndWVzcyBpcyB0aGlzIGZpeGVzIGEgY29ybmVyLWNhc2Ugd2hlcmUgYSBCUEYgcHJvZ3JhbSBtaWdodCBtYWtlIGluY29ycmVjdCByZXNlcnZhdGlvbiBhbmQgYWxsb2NhdGlvbiBkZWNpc2lvbnMgd2l0aGluIHRoZSByaW5nIGJ1ZmZlci4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIGRlZmluaXRpdmUgZml4IGZvciBhIGRlbW9uc3RyYXRlZCBidWcsIG9yIHdoZXRoZXIgdGhpcyBpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYnBmX3JpbmdidWZfcmVzZXJ2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jPTQ1Nz1zdGF0aWMgdTMyIGJwZl9yaW5nYnVmX3JvdW5kX3VwX2hkcl9sZW4odTMyIGhkcl9sZW4pXG4tLVxua2VybmVsL2JwZi9yaW5nYnVmLmMtNDYyLVxua2VybmVsL2JwZi9yaW5nYnVmLmM6NDYzOnN0YXRpYyB2b2lkICpfX2JwZl9yaW5nYnVmX3Jlc2VydmUoc3RydWN0IGJwZl9yaW5nYnVmICpyYiwgdTY0IHNpemUpXG5rZXJuZWwvYnBmL3JpbmdidWYuYy00NjQte1xuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTU0MD1CUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTU0Ny1cdHJiX21hcCA9IGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfcmluZ2J1Zl9tYXAsIG1hcCk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYzo1NDg6XHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpX19icGZfcmluZ2J1Zl9yZXNlcnZlKHJiX21hcC1cdTAwM2VyYiwgc2l6ZSk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYy01NDktfVxuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTYxMz1CUEZfQ0FMTF80KGJwZl9yaW5nYnVmX291dHB1dCwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3JpbmdidWYuYy02MjItXHRyYl9tYXAgPSBjb250YWluZXJfb2YobWFwLCBzdHJ1Y3QgYnBmX3JpbmdidWZfbWFwLCBtYXApO1xua2VybmVsL2JwZi9yaW5nYnVmLmM6NjIzOlx0cmVjID0gX19icGZfcmluZ2J1Zl9yZXNlcnZlKHJiX21hcC1cdTAwM2VyYiwgc2l6ZSk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYy02MjQtXHRpZiAoIXJlYylcbi0tXG5rZXJuZWwvYnBmL3JpbmdidWYuYz02NzA9QlBGX0NBTExfNChicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0ciwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB1MzIsIHNpemUsIHU2NCwgZmxhZ3MsXG4tLVxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjg5LVxua2VybmVsL2JwZi9yaW5nYnVmLmM6NjkwOlx0c2FtcGxlID0gX19icGZfcmluZ2J1Zl9yZXNlcnZlKHJiX21hcC1cdTAwM2VyYiwgc2l6ZSk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYy02OTEtXHRpZiAoIXNhbXBsZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHB1dHRpbmcgbXlzZWxmIGluIHRoZSByb2xlIG9mIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBCUEYgUmluZyBCdWZmZXIgUmVzZXJ2YXRpb24qKgoKUmlnaHQsIHNvIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGlzIGNsZWFybHkgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhcyBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSBzZXZlcmFsIGltcG9ydGFudCBCUEYgaGVscGVyczogYGJwZl9yaW5nYnVmX3Jlc2VydmVgLCBgYnBmX3JpbmdidWZfb3V0cHV0YCwgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAuIFRoYXQgdGVsbHMgbWUgaXQmIzM5O3MgYXQgdGhlIGhlYXJ0IG9mIGhvdyBCUEYgaW50ZXJhY3RzIHdpdGggcmluZyBidWZmZXJzIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgQlBGIHByb2dyYW0sIGxpa2VseSBlbmFibGVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgLCBvZiBjb3Vyc2UuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGNvbmZpZyBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoZXNlIGZ1bmN0aW9ucy4gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBhbmQgYGluaXQvS2NvbmZpZ2AgdG8gc2VlIGlmIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZCB0aGVyZSBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gcmluZ2J1ZiBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBjb250ZXh0IG9uIGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCBjb250cm9sbGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgZGVmaW5pdGlvbnMuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIFJpbmcgQnVmZmVyIFJlc2VydmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJQRiBjb2RlIGFuZCB0aGUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgIGZ1bmN0aW9uIGtlZXBzIHBvcHBpbmcgdXAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGEgQlBGIGhlbHBlciwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiB0aGF0IGFuZCBpdHMgcmVsYXRlZCBmdW5jdGlvbnMuIEkmIzM5O2xsIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBteSBzeW1ib2wgbGlzdCwgYEZvY3VzU3ltYm9sc2AuCgpXYWl0IGEgbWludXRlLCBJJiMzOTttIHByZXR0eSBzdXJlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYCBpcyBkZWZpbmVkIGFzIGEgYEJQRl9DQUxMX3hgIG1hY3JvLiBUaGF0IG1lYW5zIHRoZSBhY3R1YWwgZnVuY3Rpb24gbmFtZSBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0JiMzOTtzIGRpcmVjdGx5IGluIHRoZSBjb2RlLCBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgbmFtZSB0aGUga2VybmVsIGtub3dzIGFib3V0LiBJcyBpdCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIG9yIHBlcmhhcHMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCwgb3IgZXZlbiBgYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJgPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZXhhY3Qga2VybmVsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgYW5kIGh1bnQgZm9yIHRoZSBgQlBGX0NBTExfMyhicGZfcmluZ2J1Zl9yZXNlcnZlLi4uYCBtYWNybyBkZWZpbml0aW9uLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGZ1bmN0aW9uIG5hbWUgd2lsbCBiZSByZXZlYWxlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfQ0FMTF8zXFwoYnBmX3JpbmdidWZfcmVzZXJ2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jPTQ2Mz1zdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTUzOS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjU0MDpCUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTQxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTYyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGX0NBTEwgTWFjcm8gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEJQRiBjb2RlIGFuZCBub3RpY2luZyBzb21ldGhpbmcgYSBsaXR0bGUgc3RyYW5nZSB3aXRoIHRoZSBgQlBGX0NBTExgIG1hY3Jvcywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgIGZ1bmN0aW9uYWxpdHkuIEl0IHNlZW1zIGxpa2UgdGhlIG1hY3JvIGV4cGFuc2lvbiBpcyBiZWhhdmluZyBpbiBhbiBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IHdheS4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhhdCBgQlBGX0NBTExgIHNpbXBseSBleHBhbmRzIHRvIGBfX19fYnBmX3JpbmdidWZfcmVzZXJ2ZWAgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlYCwgYnV0IG5vdyBJJiMzOTttIHNlZWluZyB0aGF0IGBCUEZfQ0FMTF8zYCBzcGVjaWZpY2FsbHkgZXhwYW5kcyBpbnRvIHRoZSB0d28sIGJ1dCBpbiBhIHdheSB0aGF0IGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIHVzZWQgdG8gYGJwZl9yaW5nYnVmX3Jlc2VydmVgIGJlaW5nIHRoZSB3cmFwcGVyLCBidXQgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdC4gSXQmIzM5O3MgdW51c3VhbCBhbmQgd2FycmFudHMgY2xvc2VyIGluc3BlY3Rpb24uIFRvIGNsYXJpZnkgdGhlIHNpdHVhdGlvbiwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgQlBGX0NBTExfM2AgaXMgZGVmaW5lZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgYW5kIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGZsb3cuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgbWFjcm8gaXMgYWN0dWFsbHkgc2V0IHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF8zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGYuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBCUEYgRnVuY3Rpb24gQ2FsbCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBob3cgYEJQRl9DQUxMXzNgIGlzIGltcGxlbWVudGVkLCBwcm9iYWJseSB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgYmVoYXZpb3Igb3IgbWF5YmUgZGVidWcgYW4gaXNzdWUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgY29yZSBkZWZpbml0aW9ucy4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEJQRiwgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IGxvb2tpbmcgYXJlIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBhbmQgYGluY2x1ZGUvbGludXgvYnBmLmhgLiBUaG9zZSBoZWFkZXIgZmlsZXMgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgQlBGLXJlbGF0ZWQgbWFjcm9zLCBzdHJ1Y3R1cmVzLCBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG1hY3JvIGRlZmluaXRpb24gZm9yIGBCUEZfQ0FMTF8zYCBpbiBvbmUgb2YgdGhvc2UsIG9yIHBlcmhhcHMgYSByZWxhdGVkIGlubGluZSBmdW5jdGlvbiBvciBzdHJ1Y3R1cmUgdGhhdCBleHBsYWlucyBob3cgaXQmIzM5O3MgaGFuZGxlZC4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLiBJJiMzOTtsbCBwcm9iYWJseSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYW55IHN1cnJvdW5kaW5nIGNvZGUgb3IgcmVsYXRlZCBjb250ZXh0IGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF8zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI2MD1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjI2LSNkZWZpbmUgQlBGX0NBTExfMihuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDIsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NjI3OiNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDMsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjI4LSNkZWZpbmUgQlBGX0NBTExfNChuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDQsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkV4YW1pbmluZyBgQlBGX0NBTExfeGAgaW4gYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgKioKClJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBCUEZfQ0FMTF94YCwgc3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUga2VybmVsIGRlZmluZXMgdGhvc2UgbWFjcm9zIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJQRiBjYWxsIG1lY2hhbmlzbSBpcy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciB0aGUgYWN0dWFsIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdGhhdCB0aGUgQlBGIHByb2dyYW0gdXNlcyBhbmQgdGhlIHN0cnVjdHVyZXMgb3IgZW51bXMgdGhhdCB0aWUgdGhvc2UgY2FsbHMgdG8gdGhlIHVuZGVybHlpbmcga2VybmVsIGZ1bmN0aW9ucy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIG9uIGhvdyBhcmd1bWVudHMgYXJlIHBhc3NlZCwgd2hhdCB0aGUgcmV0dXJuIHR5cGVzIGFyZSwgYW5kIHBvdGVudGlhbGx5IGFueSBjb25zdHJhaW50cyBvciBsaW1pdGF0aW9ucyBvbiB0aGUgYXZhaWxhYmxlIEJQRiBmdW5jdGlvbnMuIEkgYW0gdHJ5aW5nIHRvIGRldGVybWluZSBhbGwgdGhlIHdheXMgdGhhdCBrZXJuZWwgZnVuY3Rpb25zIGNhbiBiZSBhY2Nlc3NlZCB2aWEgQlBGIGFuZCBob3cgdGhleSYjMzk7cmUgaGFuZGxlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBCUEYgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdG8gZXhwbG9pdCBpdCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF94JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI2MD1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjEwLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDo2MTE6I2RlZmluZSBCUEZfQ0FMTF94KHgsIGF0dHIsIG5hbWUsIC4uLilcdFx0XHRcdFx0ICAgICAgIFxcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYxMi1cdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcdFx0XHRcdFx0XHQgICAgICAgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMzOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gQlBGIEZpbHRlcmluZyBTdHJ1Y3R1cmVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb3JlIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gQlBGIGZpbHRlcmluZywgYW5kIHNwZWNpZmljYWxseSBob3cgdGhleSYjMzk7cmUgZGVmaW5lZC4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O3MgYSBsb3Qgb2YgY3J1Y2lhbCBzdHVmZiBsdXJraW5nIGFyb3VuZCB0aGF0IHNlY3Rpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2UuIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgZGlnZ2luZyBpbnRvIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCwgYW5kLCBiYXNlZCBvbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSB1c3VhbCBsYXlvdXQgb2YgdGhpbmdzLCBpdCBzZWVtcyBsaWtlIGFyb3VuZCBsaW5lIDYxMSBzaG91bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGRlZmluaXRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS4gSXQmIzM5O3MgdGltZSB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiB0aG9zZSBCUEYgc3RydWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MDA6XHRcdFx0XHRcdCAgICAgICh1bnNpZ25lZCBsb25nKTAsICh0KTApKSkgYVxuIDYwMTpcdCNkZWZpbmUgX19CUEZfViB2b2lkXG4gNjAyOlx0I2RlZmluZSBfX0JQRl9OXG4gNjAzOlx0XG4gNjA0Olx0I2RlZmluZSBfX0JQRl9ERUNMX0FSR1ModCwgYSkgdCAgIGFcbiA2MDU6XHQjZGVmaW5lIF9fQlBGX0RFQ0xfUkVHUyh0LCBhKSB1NjQgYVxuIDYwNjpcdFxuIDYwNzpcdCNkZWZpbmUgX19CUEZfUEFEKG4pXHRcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MDg6XHRcdF9fQlBGX01BUChuLCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX04sIHU2NCwgX191cl8xLCB1NjQsIF9fdXJfMiwgICAgICAgXFxcbiA2MDk6XHRcdFx0ICB1NjQsIF9fdXJfMywgdTY0LCBfX3VyXzQsIHU2NCwgX191cl81KVxuIDYxMDpcdFxuIDYxMTpcdCNkZWZpbmUgQlBGX0NBTExfeCh4LCBhdHRyLCBuYW1lLCAuLi4pXHRcdFx0XHRcdCAgICAgICBcXFxuIDYxMjpcdFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVx0XHRcdFx0XHRcdCAgICAgICBcXFxuIDYxMzpcdFx0dTY0IF9fX18jI25hbWUoX19CUEZfTUFQKHgsIF9fQlBGX0RFQ0xfQVJHUywgX19CUEZfViwgX19WQV9BUkdTX18pKTsgICBcXFxuIDYxNDpcdFx0dHlwZWRlZiB1NjQgKCpidGZfIyNuYW1lKShfX0JQRl9NQVAoeCwgX19CUEZfREVDTF9BUkdTLCBfX0JQRl9WLCBfX1ZBX0FSR1NfXykpOyBcXFxuIDYxNTpcdFx0YXR0ciB1NjQgbmFtZShfX0JQRl9SRUcoeCwgX19CUEZfREVDTF9SRUdTLCBfX0JQRl9OLCBfX1ZBX0FSR1NfXykpOyAgICBcXFxuIDYxNjpcdFx0YXR0ciB1NjQgbmFtZShfX0JQRl9SRUcoeCwgX19CUEZfREVDTF9SRUdTLCBfX0JQRl9OLCBfX1ZBX0FSR1NfXykpICAgICBcXFxuIDYxNzpcdFx0e1x0XHRcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MTg6XHRcdFx0cmV0dXJuICgoYnRmXyMjbmFtZSlfX19fIyNuYW1lKShfX0JQRl9NQVAoeCxfX0JQRl9DQVNULF9fQlBGX04sX19WQV9BUkdTX18pKTtcXFxuIDYxOTpcdFx0fVx0XHRcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MjA6XHRcdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MjE6XHRcdHU2NCBfX19fIyNuYW1lKF9fQlBGX01BUCh4LCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX1YsIF9fVkFfQVJHU19fKSlcbiA2MjI6XHRcbiA2MjM6XHQjZGVmaW5lIF9fTk9BVFRSXG4gNjI0Olx0I2RlZmluZSBCUEZfQ0FMTF8wKG5hbWUsIC4uLilcdEJQRl9DQUxMX3goMCwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxuIDYyNTpcdCNkZWZpbmUgQlBGX0NBTExfMShuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDEsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbiA2MjY6XHQjZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgyLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG4gNjI3Olx0I2RlZmluZSBCUEZfQ0FMTF8zKG5hbWUsIC4uLilcdEJQRl9DQUxMX3goMywgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxuIDYyODpcdCNkZWZpbmUgQlBGX0NBTExfNChuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDQsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbiA2Mjk6XHQjZGVmaW5lIEJQRl9DQUxMXzUobmFtZSwgLi4uKVx0QlBGX0NBTExfeCg1LCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzODUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBSaW5nIEJ1ZmZlciBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBCUEYgcmluZyBidWZmZXIgZnVuY3Rpb25zIGFuZCBtYWtpbmcgc3VyZSBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBzeW1ib2xzLiBJdCBzZWVtcyBgbmFtZWAgaXMgcmVhbGx5IGp1c3QgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGFjdHVhbCBmdW5jdGlvbiBuYW1lLCBsaWtlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYC4gQW5kIHRoZW4sIHRoaXMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCBpcyBhbiBgX19hbHdheXNfaW5saW5lYCB2ZXJzaW9uLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZC4gU28sIHRoZSAmIzM0O3JlYWwmIzM0OyBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgLCBgYnBmX3JpbmdidWZfb3V0cHV0YCwgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAuIEFsc28sIHRoZXJlJiMzOTtzIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgLCB3aGljaCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB0aGF0ICpjb3VsZCogYmUgaW5saW5lZC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBwb3NzaWJpbGl0eSBpbiBtaW5kLCBldmVuIHRob3VnaCBpdCYjMzk7cyBub3QgZXhwbGljaXRseSBtYXJrZWQgZm9yIGlubGluaW5nLgoKVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgYWN0aW9uIGlzIHRvIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuCgpOb3csIEkmIzM5O2xsIG1vdmUgb24gdG8gY2hlY2tpbmcgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gcmVseSBvbiB0aGF0IGZvciB0aGUgdGltZSBiZWluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmluZ2J1ZlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NzQ9Q0ZMQUdTX1JFTU9WRV9scG1fdHJpZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjc1OkNGTEFHU19SRU1PVkVfcmluZ2J1Zi5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc2LUNGTEFHU19SRU1PVkVfcnFzcGlubG9jay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzEKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBSaW5nIEJ1ZmZlciBGaXgqKgoKT2theSwgc28gdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIG9wdGlvbiBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGhlcmUsIG5vIHF1ZXN0aW9uLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGZsYXcgaW4gdGhlIEJQRiByaW5nIGJ1ZmZlciByZXNlcnZhdGlvbiBsb2dpYy4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGZyb20gYSBzaW1wbGUgYHBlbmRfcG9zICZsdDsgcHJvZF9wb3NgIGNvbXBhcmlzb24gdG8gYChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSAmZ3Q7IDBgIGlzIHNpZ25pZmljYW50LiBUaGUgdXNlIG9mIGEgc2lnbmVkIGxvbmcgZGlmZmVyZW5jZSBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgY29ycmVjdGx5IGFjY291bnRzIGZvciB3cmFwLWFyb3VuZCBzY2VuYXJpb3MsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyBsb29raW5nIGZvci4KCkdpdmVuIHRoaXMsIEkmIzM5O20gbWFya2luZyBpdCBhcyBXb3J0aEZ1enppbmc7IHRoZSBidWcgZml4IGluIHJlc2VydmF0aW9uIGxvZ2ljIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0LiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYC4gVGhleSBhcmUgdGhlIGRpcmVjdCBlbnRyeSBwb2ludHMuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBleHBsaWNpdGx5IGVuYWJsZSB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcgYmVjYXVzZSB0aGUgY29kZSBiZWluZyB0b3VjaGVkIGlzIG9ubHkgYWNjZXNzaWJsZSB2aWEgQlBGIGhlbHBlcnMuCgpUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBjb3JyZWN0cyBhIGZ1bmN0aW9uYWwgYnVnIHdpdGhpbiB0aGUgQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBuYW1lbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgc29saWQsIHRhcmdldGVkIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlJiMzNDssCiAgICAmIzM0O2JwZl9yaW5nYnVmX291dHB1dCYjMzQ7LAogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIEJQRiByaW5nIGJ1ZmZlciByZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHdyYXAtYXJvdW5kIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBCUEYgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlJiMzNDssCiAgICAmIzM0O2JwZl9yaW5nYnVmX291dHB1dCYjMzQ7LAogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIEJQRiByaW5nIGJ1ZmZlciByZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHdyYXAtYXJvdW5kIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBCUEYgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjEyLjI0OTU1ODQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2Mjk1NDk0MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3JpbmdidWZfcmVzZXJ2ZVwiLFxuICAgIFwiYnBmX3JpbmdidWZfb3V0cHV0XCIsXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0clwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEJQRiBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODoxMi4yNDk1NjQwMTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NTQ0NDQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiMjViMTY5NDZjNzlkMzIxN2Y4ZTFiNDhkNDc1ODg5MmUwYjgwNjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxNDoxODoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JpbmdidWYuYyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXFxuaW5kZXggMzVhZTY0YWRlMzZiOC4uMmMwOGE5ODM3MGQ1ZSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3JpbmdidWYuY1xcbisrKyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXFxuQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxcbiBcXHRwcm9kX3BvcyA9IHJiLVxcdTAwM2Vwcm9kdWNlcl9wb3M7XFxuIFxcdG5ld19wcm9kX3BvcyA9IHByb2RfcG9zICsgbGVuO1xcbiBcXG4tXFx0d2hpbGUgKHBlbmRfcG9zIFxcdTAwM2MgcHJvZF9wb3MpIHtcXG4rXFx0d2hpbGUgKChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0aGRyID0gKHZvaWQgKilyYi1cXHUwMDNlZGF0YSArIChwZW5kX3BvcyBcXHUwMDI2IHJiLVxcdTAwM2VtYXNrKTtcXG4gXFx0XFx0aGRyX2xlbiA9IFJFQURfT05DRShoZHItXFx1MDAzZWxlbik7XFxuIFxcdFxcdGlmIChoZHJfbGVuIFxcdTAwMjYgQlBGX1JJTkdCVUZfQlVTWV9CSVQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjEyLjYzNTY4NTA1M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1OTA5MzU4NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3JpbmdidWZfcmVzZXJ2ZVwiLFxuICAgIFwiYnBmX3JpbmdidWZfb3V0cHV0XCIsXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0clwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEJQRiBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYjI1YjE2OTQ2Yzc5ZDMyMTdmOGUxYjQ4ZDQ3NTg4OTJlMGI4MDY5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNDoxODoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmluZ2J1Zi5jIGIva2VybmVsL2JwZi9yaW5nYnVmLmNcbmluZGV4IDM1YWU2NGFkZTM2YjguLjJjMDhhOTgzNzBkNWUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3JpbmdidWYuY1xuKysrIGIva2VybmVsL2JwZi9yaW5nYnVmLmNcbkBAIC00ODIsNyArNDgyLDcgQEAgc3RhdGljIHZvaWQgKl9fYnBmX3JpbmdidWZfcmVzZXJ2ZShzdHJ1Y3QgYnBmX3JpbmdidWYgKnJiLCB1NjQgc2l6ZSlcbiBcdHByb2RfcG9zID0gcmItXHUwMDNlcHJvZHVjZXJfcG9zO1xuIFx0bmV3X3Byb2RfcG9zID0gcHJvZF9wb3MgKyBsZW47XG4gXG4tXHR3aGlsZSAocGVuZF9wb3MgXHUwMDNjIHByb2RfcG9zKSB7XG4rXHR3aGlsZSAoKGxvbmcpKHByb2RfcG9zIC0gcGVuZF9wb3MpIFx1MDAzZSAwKSB7XG4gXHRcdGhkciA9ICh2b2lkICopcmItXHUwMDNlZGF0YSArIChwZW5kX3BvcyBcdTAwMjYgcmItXHUwMDNlbWFzayk7XG4gXHRcdGhkcl9sZW4gPSBSRUFEX09OQ0UoaGRyLVx1MDAzZWxlbik7XG4gXHRcdGlmIChoZHJfbGVuIFx1MDAyNiBCUEZfUklOR0JVRl9CVVNZX0JJVClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjEyLjYzNTY4NjMyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjYyNzIxMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSaW5nIEJ1ZmZlciBSZXNlcnZhdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBga2VybmVsL2JwZi9yaW5nYnVmLmNgLiBNeSBpbml0aWFsIHNjYW4gc3VnZ2VzdHMgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsIGNoYW5nZSB3aXRoaW4gdGhlIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIG1vZGlmaWNhdGlvbiBvZiB0aGUgYHdoaWxlYCBsb29wIGNvbmRpdGlvbi4gVGhleSd2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IGNvbXBhcmlzb24gYHdoaWxlIChwZW5kX3BvcyBcdTAwM2MgcHJvZF9wb3MpYCB3aXRoIGB3aGlsZSAoKGxvbmcpKHByb2RfcG9zIC0gcGVuZF9wb3MpIFx1MDAzZSAwKWAuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IHJlbGF0ZWQgdG8gYSB3cmFwLWFyb3VuZCBpc3N1ZS4gV2l0aCBgcHJvZF9wb3NgIGFuZCBgcGVuZF9wb3NgIGJlaW5nIGluZGljZXMgd2l0aGluIGEgcmluZyBidWZmZXIsIHRoZXJlJ3MgdGhlIHZlcnkgcmVhbCBwb3NzaWJpbGl0eSBvZiB0aGVtIFwid3JhcHBpbmdcIiBiYWNrIHRvIHplcm8gYWZ0ZXIgcmVhY2hpbmcgdGhlIGJ1ZmZlcidzIGNhcGFjaXR5LiBUaGUgb3JpZ2luYWwgY29tcGFyaXNvbiBjb3VsZCBmYWlsIGluIGNlcnRhaW4gc2NlbmFyaW9zLCBhbmQgcG90ZW50aWFsbHkgYWxsb3cgdW5zYWZlIGNvbmRpdGlvbnMuXG5cblRoZSBjYXN0IHRvIGAobG9uZylgIGFuZCB0aGUgc3VidHJhY3Rpb24gKnRoZW4qIGNvbXBhcmlzb24gc3Ryb25nbHkgaGludHMgdGhhdCB0aGV5J3JlIHRyeWluZyB0byBoYW5kbGUgdGhlIG1vZHVsbyBhcml0aG1ldGljIGluaGVyZW50IGluIHJpbmcgYnVmZmVyIGluZGV4aW5nIGNvcnJlY3RseS4gVGhpcyBpbmRpY2F0ZXMgdGhleSdyZSB3b3JraW5nIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdyBvciB1bmRlcmZsb3cgcHJvYmxlbXMgdGhhdCBjYW4gYXJpc2Ugd2hlbiBkZWFsaW5nIHdpdGggdW5zaWduZWQgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGJ1ZmZlciBwb3NpdGlvbnMsIGVzcGVjaWFsbHkgYWZ0ZXIgbGFyZ2UgYWR2YW5jZW1lbnRzIGFuZCBwb3RlbnRpYWwgd3JhcHMuIEknZCBuZWVkIHRvIGRpdmUgZGVlcGVyLCB0byBjaGVjayB0aGVpciByYXRpb25hbGUsIGFuZCBwb3NzaWJseSBzZWUgdGhlIGNvbnRleHQsIGJ1dCBteSBndWVzcyBpcyB0aGlzIGZpeGVzIGEgY29ybmVyLWNhc2Ugd2hlcmUgYSBCUEYgcHJvZ3JhbSBtaWdodCBtYWtlIGluY29ycmVjdCByZXNlcnZhdGlvbiBhbmQgYWxsb2NhdGlvbiBkZWNpc2lvbnMgd2l0aGluIHRoZSByaW5nIGJ1ZmZlci4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgZGVmaW5pdGl2ZSBmaXggZm9yIGEgZGVtb25zdHJhdGVkIGJ1Zywgb3Igd2hldGhlciB0aGlzIGlzIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODoxOC45MDE5NjA5OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2ODAxODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19icGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jPTQ1Nz1zdGF0aWMgdTMyIGJwZl9yaW5nYnVmX3JvdW5kX3VwX2hkcl9sZW4odTMyIGhkcl9sZW4pXFxuLS1cXG5rZXJuZWwvYnBmL3JpbmdidWYuYy00NjItXFxua2VybmVsL2JwZi9yaW5nYnVmLmM6NDYzOnN0YXRpYyB2b2lkICpfX2JwZl9yaW5nYnVmX3Jlc2VydmUoc3RydWN0IGJwZl9yaW5nYnVmICpyYiwgdTY0IHNpemUpXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNDY0LXtcXG4tLVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTU0MD1CUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTQ3LVxcdHJiX21hcCA9IGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfcmluZ2J1Zl9tYXAsIG1hcCk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmM6NTQ4OlxcdHJldHVybiAodW5zaWduZWQgbG9uZylfX2JwZl9yaW5nYnVmX3Jlc2VydmUocmJfbWFwLVxcdTAwM2VyYiwgc2l6ZSk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTQ5LX1cXG4tLVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTYxMz1CUEZfQ0FMTF80KGJwZl9yaW5nYnVmX291dHB1dCwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSxcXG4tLVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTYyMi1cXHRyYl9tYXAgPSBjb250YWluZXJfb2YobWFwLCBzdHJ1Y3QgYnBmX3JpbmdidWZfbWFwLCBtYXApO1xcbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjYyMzpcXHRyZWMgPSBfX2JwZl9yaW5nYnVmX3Jlc2VydmUocmJfbWFwLVxcdTAwM2VyYiwgc2l6ZSk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjI0LVxcdGlmICghcmVjKVxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmM9NjcwPUJQRl9DQUxMXzQoYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHIsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTMyLCBzaXplLCB1NjQsIGZsYWdzLFxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjg5LVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjY5MDpcXHRzYW1wbGUgPSBfX2JwZl9yaW5nYnVmX3Jlc2VydmUocmJfbWFwLVxcdTAwM2VyYiwgc2l6ZSk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjkxLVxcdGlmICghc2FtcGxlKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjE4Ljk1MjY0NjE2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTg5OTEwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgcHV0dGluZyBteXNlbGYgaW4gdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFJpbmcgQnVmZmVyIFJlc2VydmF0aW9uKipcblxuUmlnaHQsIHNvIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGlzIGNsZWFybHkgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhcyBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgaW1wb3J0YW50IEJQRiBoZWxwZXJzOiBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYC4gVGhhdCB0ZWxscyBtZSBpdCdzIGF0IHRoZSBoZWFydCBvZiBob3cgQlBGIGludGVyYWN0cyB3aXRoIHJpbmcgYnVmZmVycyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJ20gYXNzdW1pbmcgd2UncmUgd29ya2luZyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSBCUEYgcHJvZ3JhbSwgbGlrZWx5IGVuYWJsZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAsIG9mIGNvdXJzZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhhdCBjb25maWcgaXMgdGhlIGtleSB0byBlbmFibGluZyB0aGVzZSBmdW5jdGlvbnMuIEknbGwgcXVpY2tseSBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBhbmQgYGluaXQvS2NvbmZpZ2AgdG8gc2VlIGlmIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZCB0aGVyZSBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gcmluZ2J1ZiBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBjb250ZXh0IG9uIGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCBjb250cm9sbGVkLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBkZWZpbml0aW9ucy4gSSdsbCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGRlcGVuZGVudCBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjI0LjA3MTYzOTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTAxMDkyMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9TWVNDQUxMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjI1Ljc4MTc1NzY0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTc4MjM1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBSaW5nIEJ1ZmZlciBSZXNlcnZhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQlBGIGNvZGUgYW5kIHRoZSBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAgZnVuY3Rpb24ga2VlcHMgcG9wcGluZyB1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBhIEJQRiBoZWxwZXIsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgb24gdGhhdCBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25zLiBJJ2xsIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBteSBzeW1ib2wgbGlzdCwgYEZvY3VzU3ltYm9sc2AuXG5cbldhaXQgYSBtaW51dGUsIEknbSBwcmV0dHkgc3VyZSBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAgaXMgZGVmaW5lZCBhcyBhIGBCUEZfQ0FMTF94YCBtYWNyby4gVGhhdCBtZWFucyB0aGUgYWN0dWFsIGZ1bmN0aW9uIG5hbWUgbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gd2hhdCdzIGRpcmVjdGx5IGluIHRoZSBjb2RlLCBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgbmFtZSB0aGUga2VybmVsIGtub3dzIGFib3V0LiBJcyBpdCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIG9yIHBlcmhhcHMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCwgb3IgZXZlbiBgYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJgPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZXhhY3Qga2VybmVsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgYW5kIGh1bnQgZm9yIHRoZSBgQlBGX0NBTExfMyhicGZfcmluZ2J1Zl9yZXNlcnZlLi4uYCBtYWNybyBkZWZpbml0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgZnVuY3Rpb24gbmFtZSB3aWxsIGJlIHJldmVhbGVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNTYwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjMwLjE5OTU4MzY2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU0MjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfQ0FMTF8zXFxcXChicGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jPTQ2Mz1zdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTM5LVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjU0MDpCUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTU0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjMwLjI0NzEzMjA4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjYzNjE1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGX0NBTEwgTWFjcm8gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBCUEYgY29kZSBhbmQgbm90aWNpbmcgc29tZXRoaW5nIGEgbGl0dGxlIHN0cmFuZ2Ugd2l0aCB0aGUgYEJQRl9DQUxMYCBtYWNyb3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYCBmdW5jdGlvbmFsaXR5LiBJdCBzZWVtcyBsaWtlIHRoZSBtYWNybyBleHBhbnNpb24gaXMgYmVoYXZpbmcgaW4gYW4gYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCB3YXkuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgYEJQRl9DQUxMYCBzaW1wbHkgZXhwYW5kcyB0byBgX19fX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGFuZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGJ1dCBub3cgSSdtIHNlZWluZyB0aGF0IGBCUEZfQ0FMTF8zYCBzcGVjaWZpY2FsbHkgZXhwYW5kcyBpbnRvIHRoZSB0d28sIGJ1dCBpbiBhIHdheSB0aGF0IGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLiBJJ20gdXNlZCB0byBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAgYmVpbmcgdGhlIHdyYXBwZXIsIGJ1dCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQuIEl0J3MgdW51c3VhbCBhbmQgd2FycmFudHMgY2xvc2VyIGluc3BlY3Rpb24uIFRvIGNsYXJpZnkgdGhlIHNpdHVhdGlvbiwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgQlBGX0NBTExfM2AgaXMgZGVmaW5lZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgYW5kIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGZsb3cuIExldCdzIHNlZSBob3cgdGhhdCBtYWNybyBpcyBhY3R1YWxseSBzZXQgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODozNC43NzM0OTYyODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTAxNDE1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQlBGX0NBTExfM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODozNC44MjEwMTAxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc3NzQ2NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgRnVuY3Rpb24gQ2FsbCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgQlBGX0NBTExfM2AgaXMgaW1wbGVtZW50ZWQsIHByb2JhYmx5IHRvIHVuZGVyc3RhbmQgYSBzcGVjaWZpYyBiZWhhdmlvciBvciBtYXliZSBkZWJ1ZyBhbiBpc3N1ZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBjb3JlIGRlZmluaXRpb25zLiBHaXZlbiB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBCUEYsIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBsb29raW5nIGFyZSBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAgYW5kIGBpbmNsdWRlL2xpbnV4L2JwZi5oYC4gVGhvc2UgaGVhZGVyIGZpbGVzIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIEJQRi1yZWxhdGVkIG1hY3Jvcywgc3RydWN0dXJlcywgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBtYWNybyBkZWZpbml0aW9uIGZvciBgQlBGX0NBTExfM2AgaW4gb25lIG9mIHRob3NlLCBvciBwZXJoYXBzIGEgcmVsYXRlZCBpbmxpbmUgZnVuY3Rpb24gb3Igc3RydWN0dXJlIHRoYXQgZXhwbGFpbnMgaG93IGl0J3MgaGFuZGxlZC4gTGV0J3Mgc3RhcnQgdGhlcmUuIEknbGwgcHJvYmFibHkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGFueSBzdXJyb3VuZGluZyBjb2RlIG9yIHJlbGF0ZWQgY29udGV4dCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6MzguNzk4NzU4NTk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQzMDUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQlBGX0NBTExfM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZmlsdGVyLmg9MjYwPXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYyNi0jZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goMiwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NjI3OiNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC02MjgtI2RlZmluZSBCUEZfQ0FMTF80KG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDQsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6MzguODQ1MTkzNzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODYxNzM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipFeGFtaW5pbmcgYEJQRl9DQUxMX3hgIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCoqXG5cblJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBCUEZfQ0FMTF94YCwgc3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUga2VybmVsIGRlZmluZXMgdGhvc2UgbWFjcm9zIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJQRiBjYWxsIG1lY2hhbmlzbSBpcy4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIHRoZSBhY3R1YWwgZnVuY3Rpb24gc2lnbmF0dXJlcyB0aGF0IHRoZSBCUEYgcHJvZ3JhbSB1c2VzIGFuZCB0aGUgc3RydWN0dXJlcyBvciBlbnVtcyB0aGF0IHRpZSB0aG9zZSBjYWxscyB0byB0aGUgdW5kZXJseWluZyBrZXJuZWwgZnVuY3Rpb25zLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBvbiBob3cgYXJndW1lbnRzIGFyZSBwYXNzZWQsIHdoYXQgdGhlIHJldHVybiB0eXBlcyBhcmUsIGFuZCBwb3RlbnRpYWxseSBhbnkgY29uc3RyYWludHMgb3IgbGltaXRhdGlvbnMgb24gdGhlIGF2YWlsYWJsZSBCUEYgZnVuY3Rpb25zLiBJIGFtIHRyeWluZyB0byBkZXRlcm1pbmUgYWxsIHRoZSB3YXlzIHRoYXQga2VybmVsIGZ1bmN0aW9ucyBjYW4gYmUgYWNjZXNzZWQgdmlhIEJQRiBhbmQgaG93IHRoZXkncmUgaGFuZGxlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBCUEYgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdG8gZXhwbG9pdCBpdCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODo0Mi4xOTM4MTQ1NjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDg2NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBCUEZfQ0FMTF94XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvZmlsdGVyLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9maWx0ZXIuaD0yNjA9c3RhdGljIGlubGluZSBib29sIGluc25faXNfY2FzdF91c2VyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjEwLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NjExOiNkZWZpbmUgQlBGX0NBTExfeCh4LCBhdHRyLCBuYW1lLCAuLi4pXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYxMi1cXHRzdGF0aWMgX19hbHdheXNfaW5saW5lXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6NDIuMjQwMzEzNDI2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Njc1MzI2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gQlBGIEZpbHRlcmluZyBTdHJ1Y3R1cmVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29yZSBzdHJ1Y3R1cmVzIGludm9sdmVkIGluIEJQRiBmaWx0ZXJpbmcsIGFuZCBzcGVjaWZpY2FsbHkgaG93IHRoZXkncmUgZGVmaW5lZC4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUncyBhIGxvdCBvZiBjcnVjaWFsIHN0dWZmIGx1cmtpbmcgYXJvdW5kIHRoYXQgc2VjdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZS4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGRpZ2dpbmcgaW50byBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAsIGFuZCwgYmFzZWQgb24gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgdXN1YWwgbGF5b3V0IG9mIHRoaW5ncywgaXQgc2VlbXMgbGlrZSBhcm91bmQgbGluZSA2MTEgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBkZWZpbml0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS4gSXQncyB0aW1lIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRob3NlIEJQRiBzdHJ1Y3R1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzM5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6NDUuOTA3ODQ4OTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwMDpcXHRcXHRcXHRcXHRcXHQgICAgICAodW5zaWduZWQgbG9uZykwLCAodCkwKSkpIGFcXG4gNjAxOlxcdCNkZWZpbmUgX19CUEZfViB2b2lkXFxuIDYwMjpcXHQjZGVmaW5lIF9fQlBGX05cXG4gNjAzOlxcdFxcbiA2MDQ6XFx0I2RlZmluZSBfX0JQRl9ERUNMX0FSR1ModCwgYSkgdCAgIGFcXG4gNjA1OlxcdCNkZWZpbmUgX19CUEZfREVDTF9SRUdTKHQsIGEpIHU2NCBhXFxuIDYwNjpcXHRcXG4gNjA3OlxcdCNkZWZpbmUgX19CUEZfUEFEKG4pXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG4gNjA4OlxcdFxcdF9fQlBGX01BUChuLCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX04sIHU2NCwgX191cl8xLCB1NjQsIF9fdXJfMiwgICAgICAgXFxcXFxcbiA2MDk6XFx0XFx0XFx0ICB1NjQsIF9fdXJfMywgdTY0LCBfX3VyXzQsIHU2NCwgX191cl81KVxcbiA2MTA6XFx0XFxuIDYxMTpcXHQjZGVmaW5lIEJQRl9DQUxMX3goeCwgYXR0ciwgbmFtZSwgLi4uKVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuIDYxMjpcXHRcXHRzdGF0aWMgX19hbHdheXNfaW5saW5lXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG4gNjEzOlxcdFxcdHU2NCBfX19fIyNuYW1lKF9fQlBGX01BUCh4LCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX1YsIF9fVkFfQVJHU19fKSk7ICAgXFxcXFxcbiA2MTQ6XFx0XFx0dHlwZWRlZiB1NjQgKCpidGZfIyNuYW1lKShfX0JQRl9NQVAoeCwgX19CUEZfREVDTF9BUkdTLCBfX0JQRl9WLCBfX1ZBX0FSR1NfXykpOyBcXFxcXFxuIDYxNTpcXHRcXHRhdHRyIHU2NCBuYW1lKF9fQlBGX1JFRyh4LCBfX0JQRl9ERUNMX1JFR1MsIF9fQlBGX04sIF9fVkFfQVJHU19fKSk7ICAgIFxcXFxcXG4gNjE2OlxcdFxcdGF0dHIgdTY0IG5hbWUoX19CUEZfUkVHKHgsIF9fQlBGX0RFQ0xfUkVHUywgX19CUEZfTiwgX19WQV9BUkdTX18pKSAgICAgXFxcXFxcbiA2MTc6XFx0XFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuIDYxODpcXHRcXHRcXHRyZXR1cm4gKChidGZfIyNuYW1lKV9fX18jI25hbWUpKF9fQlBGX01BUCh4LF9fQlBGX0NBU1QsX19CUEZfTixfX1ZBX0FSR1NfXykpO1xcXFxcXG4gNjE5OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcXFxcbiA2MjA6XFx0XFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuIDYyMTpcXHRcXHR1NjQgX19fXyMjbmFtZShfX0JQRl9NQVAoeCwgX19CUEZfREVDTF9BUkdTLCBfX0JQRl9WLCBfX1ZBX0FSR1NfXykpXFxuIDYyMjpcXHRcXG4gNjIzOlxcdCNkZWZpbmUgX19OT0FUVFJcXG4gNjI0OlxcdCNkZWZpbmUgQlBGX0NBTExfMChuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgwLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuIDYyNTpcXHQjZGVmaW5lIEJQRl9DQUxMXzEobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goMSwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbiA2MjY6XFx0I2RlZmluZSBCUEZfQ0FMTF8yKG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDIsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG4gNjI3OlxcdCNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuIDYyODpcXHQjZGVmaW5lIEJQRl9DQUxMXzQobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goNCwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbiA2Mjk6XFx0I2RlZmluZSBCUEZfQ0FMTF81KG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDUsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6NDUuOTA3OTYxMTI1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMTc1Nzc5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBSaW5nIEJ1ZmZlciBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQlBGIHJpbmcgYnVmZmVyIGZ1bmN0aW9ucyBhbmQgbWFraW5nIHN1cmUgSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBzeW1ib2xzLiBJdCBzZWVtcyBgbmFtZWAgaXMgcmVhbGx5IGp1c3QgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGFjdHVhbCBmdW5jdGlvbiBuYW1lLCBsaWtlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYC4gQW5kIHRoZW4sIHRoaXMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCBpcyBhbiBgX19hbHdheXNfaW5saW5lYCB2ZXJzaW9uLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZC4gU28sIHRoZSBcInJlYWxcIiBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgLCBgYnBmX3JpbmdidWZfb3V0cHV0YCwgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAuIEFsc28sIHRoZXJlJ3MgYF9fYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIHdoaWNoIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQgKmNvdWxkKiBiZSBpbmxpbmVkLiBJIG5lZWQgdG8ga2VlcCB0aGF0IHBvc3NpYmlsaXR5IGluIG1pbmQsIGV2ZW4gdGhvdWdoIGl0J3Mgbm90IGV4cGxpY2l0bHkgbWFya2VkIGZvciBpbmxpbmluZy5cblxuVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgYWN0aW9uIGlzIHRvIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBgRm9jdXNTeW1ib2xzYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC5cblxuTm93LCBJJ2xsIG1vdmUgb24gdG8gY2hlY2tpbmcgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gcmVseSBvbiB0aGF0IGZvciB0aGUgdGltZSBiZWluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjUyLjkyNTU0Mjg1NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyODg3NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmluZ2J1ZlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTc0PUNGTEFHU19SRU1PVkVfbHBtX3RyaWUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NzU6Q0ZMQUdTX1JFTU9WRV9yaW5nYnVmLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc2LUNGTEFHU19SRU1PVkVfcnFzcGlubG9jay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjUyLjk3MzgzNjg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0ODk1MjM1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFJpbmcgQnVmZmVyIEZpeCoqXG5cbk9rYXksIHNvIHRoZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBvcHRpb24gaXMgZGVmaW5pdGVseSByZWxldmFudCBoZXJlLCBubyBxdWVzdGlvbi4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0aGF0IGFkZHJlc3NlcyBhIHBvdGVudGlhbCBmbGF3IGluIHRoZSBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBmcm9tIGEgc2ltcGxlIGBwZW5kX3BvcyBcdTAwM2MgcHJvZF9wb3NgIGNvbXBhcmlzb24gdG8gYChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSBcdTAwM2UgMGAgaXMgc2lnbmlmaWNhbnQuIFRoZSB1c2Ugb2YgYSBzaWduZWQgbG9uZyBkaWZmZXJlbmNlIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIHdyYXAtYXJvdW5kIHNjZW5hcmlvcywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLlxuXG5HaXZlbiB0aGlzLCBJJ20gbWFya2luZyBpdCBhcyBXb3J0aEZ1enppbmc7IHRoZSBidWcgZml4IGluIHJlc2VydmF0aW9uIGxvZ2ljIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0LiBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBicGZfcmluZ2J1Zl9yZXNlcnZlYCwgYGJwZl9yaW5nYnVmX291dHB1dGAsIGFuZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJgLiBUaGV5IGFyZSB0aGUgZGlyZWN0IGVudHJ5IHBvaW50cy4gSSdsbCBtYWtlIHN1cmUgdG8gZXhwbGljaXRseSBlbmFibGUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGJlY2F1c2UgdGhlIGNvZGUgYmVpbmcgdG91Y2hlZCBpcyBvbmx5IGFjY2Vzc2libGUgdmlhIEJQRiBoZWxwZXJzLlxuXG5UaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBjb3JyZWN0cyBhIGZ1bmN0aW9uYWwgYnVnIHdpdGhpbiB0aGUgQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBuYW1lbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgc29saWQsIHRhcmdldGVkIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTcxLCJPdXRwdXRUb2tlbnMiOjEwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODo1OC40NjMzNjMyNzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTY3NjQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gICAgXCJicGZfcmluZ2J1Zl9vdXRwdXRcIixcbiAgICBcImJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB3cmFwLWFyb3VuZCBjb3JyZWN0bHkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgQlBGIGhlbHBlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gICAgXCJicGZfcmluZ2J1Zl9vdXRwdXRcIixcbiAgICBcImJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB3cmFwLWFyb3VuZCBjb3JyZWN0bHkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgQlBGIGhlbHBlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-06 13:56:45 +0000 UTC FinishedAt: 2026-08-06 14:18:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "31a420a822ff92e2090bd5d65efe8e34e2d6d9b8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git", "commit_hash": "31a420a822ff92e2090bd5d65efe8e34e2d6d9b8", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BPF_SYSCALL" ], "series_id": "259deb4a-220f-4ade-8ac1-fa647df8b237" }, "track": "KASAN", "fuzz": { "focus": [ "bpf" ], "focus_symbols": [ "bpf_ringbuf_reserve", "bpf_ringbuf_output", "bpf_ringbuf_reserve_dynptr" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-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+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JQRl9TWVNDQUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YnBmX3JpbmdidWZfcmVzZXJ2ZSYjMzQ7LAogICAgJiMzNDticGZfcmluZ2J1Zl9vdXRwdXQmIzM0OywKICAgICYjMzQ7YnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHImIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB3cmFwLWFyb3VuZCBjb3JyZWN0bHkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgQlBGIGhlbHBlcnMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYjI1YjE2OTQ2Yzc5ZDMyMTdmOGUxYjQ4ZDQ3NTg4OTJlMGI4MDY5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNDoxODoxMSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JpbmdidWYuYyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXG5pbmRleCAzNWFlNjRhZGUzNmI4Li4yYzA4YTk4MzcwZDVlIDEwMDY0NFxuLS0tIGEva2VybmVsL2JwZi9yaW5nYnVmLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXG5AQCAtNDgyLDcgJiM0Mzs0ODIsNyBAQCBzdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxuIFx0cHJvZF9wb3MgPSByYi1cdTAwM2Vwcm9kdWNlcl9wb3M7XG4gXHRuZXdfcHJvZF9wb3MgPSBwcm9kX3BvcyAmIzQzOyBsZW47XG4gXG4tXHR3aGlsZSAocGVuZF9wb3MgXHUwMDNjIHByb2RfcG9zKSB7XG4mIzQzO1x0d2hpbGUgKChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSBcdTAwM2UgMCkge1xuIFx0XHRoZHIgPSAodm9pZCAqKXJiLVx1MDAzZWRhdGEgJiM0MzsgKHBlbmRfcG9zIFx1MDAyNiByYi1cdTAwM2VtYXNrKTtcbiBcdFx0aGRyX2xlbiA9IFJFQURfT05DRShoZHItXHUwMDNlbGVuKTtcbiBcdFx0aWYgKGhkcl9sZW4gXHUwMDI2IEJQRl9SSU5HQlVGX0JVU1lfQklUKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtCUEZfU1lTQ0FMTCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2JwZl9yaW5nYnVmX3Jlc2VydmUmIzM0OywKICAgICYjMzQ7YnBmX3JpbmdidWZfb3V0cHV0JiMzNDssCiAgICAmIzM0O2JwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEJQRiBoZWxwZXJzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmIyNWIxNjk0NmM3OWQzMjE3ZjhlMWI0OGQ0NzU4ODkyZTBiODA2OQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBUaHUgQXVnIDYgMTQ6MTg6MTEgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JpbmdidWYuYyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jCmluZGV4IDM1YWU2NGFkZTM2YjguLjJjMDhhOTgzNzBkNWUgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9icGYvcmluZ2J1Zi5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jCkBAIC00ODIsNyAmIzQzOzQ4Miw3IEBAIHN0YXRpYyB2b2lkICpfX2JwZl9yaW5nYnVmX3Jlc2VydmUoc3RydWN0IGJwZl9yaW5nYnVmICpyYiwgdTY0IHNpemUpCiAJcHJvZF9wb3MgPSByYi0mZ3Q7cHJvZHVjZXJfcG9zOwogCW5ld19wcm9kX3BvcyA9IHByb2RfcG9zICYjNDM7IGxlbjsKIAotCXdoaWxlIChwZW5kX3BvcyAmbHQ7IHByb2RfcG9zKSB7CiYjNDM7CXdoaWxlICgobG9uZykocHJvZF9wb3MgLSBwZW5kX3BvcykgJmd0OyAwKSB7CiAJCWhkciA9ICh2b2lkICopcmItJmd0O2RhdGEgJiM0MzsgKHBlbmRfcG9zICZhbXA7IHJiLSZndDttYXNrKTsKIAkJaGRyX2xlbiA9IFJFQURfT05DRShoZHItJmd0O2xlbik7CiAJCWlmIChoZHJfbGVuICZhbXA7IEJQRl9SSU5HQlVGX0JVU1lfQklUKQo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDk1CgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogMTEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmluZyBCdWZmZXIgUmVzZXJ2YXRpb24gQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdGFyZ2V0aW5nIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AuIE15IGluaXRpYWwgc2NhbiBzdWdnZXN0cyBhIHN1YnRsZSBidXQgcG90ZW50aWFsbHkgY3JpdGljYWwgY2hhbmdlIHdpdGhpbiB0aGUgYF9fYnBmX3JpbmdidWZfcmVzZXJ2ZWAgZnVuY3Rpb24uIFRoZSBrZXkgaGVyZSBpcyB0aGUgbW9kaWZpY2F0aW9uIG9mIHRoZSBgd2hpbGVgIGxvb3AgY29uZGl0aW9uLiBUaGV5JiMzOTt2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IGNvbXBhcmlzb24gYHdoaWxlIChwZW5kX3BvcyAmbHQ7IHByb2RfcG9zKWAgd2l0aCBgd2hpbGUgKChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSAmZ3Q7IDApYC4KCk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IHJlbGF0ZWQgdG8gYSB3cmFwLWFyb3VuZCBpc3N1ZS4gV2l0aCBgcHJvZF9wb3NgIGFuZCBgcGVuZF9wb3NgIGJlaW5nIGluZGljZXMgd2l0aGluIGEgcmluZyBidWZmZXIsIHRoZXJlJiMzOTtzIHRoZSB2ZXJ5IHJlYWwgcG9zc2liaWxpdHkgb2YgdGhlbSAmIzM0O3dyYXBwaW5nJiMzNDsgYmFjayB0byB6ZXJvIGFmdGVyIHJlYWNoaW5nIHRoZSBidWZmZXImIzM5O3MgY2FwYWNpdHkuIFRoZSBvcmlnaW5hbCBjb21wYXJpc29uIGNvdWxkIGZhaWwgaW4gY2VydGFpbiBzY2VuYXJpb3MsIGFuZCBwb3RlbnRpYWxseSBhbGxvdyB1bnNhZmUgY29uZGl0aW9ucy4KClRoZSBjYXN0IHRvIGAobG9uZylgIGFuZCB0aGUgc3VidHJhY3Rpb24gKnRoZW4qIGNvbXBhcmlzb24gc3Ryb25nbHkgaGludHMgdGhhdCB0aGV5JiMzOTtyZSB0cnlpbmcgdG8gaGFuZGxlIHRoZSBtb2R1bG8gYXJpdGhtZXRpYyBpbmhlcmVudCBpbiByaW5nIGJ1ZmZlciBpbmRleGluZyBjb3JyZWN0bHkuIFRoaXMgaW5kaWNhdGVzIHRoZXkmIzM5O3JlIHdvcmtpbmcgdG8gcHJldmVudCBpbnRlZ2VyIG92ZXJmbG93IG9yIHVuZGVyZmxvdyBwcm9ibGVtcyB0aGF0IGNhbiBhcmlzZSB3aGVuIGRlYWxpbmcgd2l0aCB1bnNpZ25lZCBpbnRlZ2VycyByZXByZXNlbnRpbmcgYnVmZmVyIHBvc2l0aW9ucywgZXNwZWNpYWxseSBhZnRlciBsYXJnZSBhZHZhbmNlbWVudHMgYW5kIHBvdGVudGlhbCB3cmFwcy4gSSYjMzk7ZCBuZWVkIHRvIGRpdmUgZGVlcGVyLCB0byBjaGVjayB0aGVpciByYXRpb25hbGUsIGFuZCBwb3NzaWJseSBzZWUgdGhlIGNvbnRleHQsIGJ1dCBteSBndWVzcyBpcyB0aGlzIGZpeGVzIGEgY29ybmVyLWNhc2Ugd2hlcmUgYSBCUEYgcHJvZ3JhbSBtaWdodCBtYWtlIGluY29ycmVjdCByZXNlcnZhdGlvbiBhbmQgYWxsb2NhdGlvbiBkZWNpc2lvbnMgd2l0aGluIHRoZSByaW5nIGJ1ZmZlci4gSSYjMzk7bGwgbmVlZCB0byBjb25maXJtIHRoYXQgdGhpcyBpcyBhIGRlZmluaXRpdmUgZml4IGZvciBhIGRlbW9uc3RyYXRlZCBidWcsIG9yIHdoZXRoZXIgdGhpcyBpcyBhIGRlZmVuc2l2ZSBwcm9ncmFtbWluZyBtZWFzdXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fYnBmX3JpbmdidWZfcmVzZXJ2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jPTQ1Nz1zdGF0aWMgdTMyIGJwZl9yaW5nYnVmX3JvdW5kX3VwX2hkcl9sZW4odTMyIGhkcl9sZW4pXG4tLVxua2VybmVsL2JwZi9yaW5nYnVmLmMtNDYyLVxua2VybmVsL2JwZi9yaW5nYnVmLmM6NDYzOnN0YXRpYyB2b2lkICpfX2JwZl9yaW5nYnVmX3Jlc2VydmUoc3RydWN0IGJwZl9yaW5nYnVmICpyYiwgdTY0IHNpemUpXG5rZXJuZWwvYnBmL3JpbmdidWYuYy00NjQte1xuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTU0MD1CUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTU0Ny1cdHJiX21hcCA9IGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfcmluZ2J1Zl9tYXAsIG1hcCk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYzo1NDg6XHRyZXR1cm4gKHVuc2lnbmVkIGxvbmcpX19icGZfcmluZ2J1Zl9yZXNlcnZlKHJiX21hcC1cdTAwM2VyYiwgc2l6ZSk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYy01NDktfVxuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTYxMz1CUEZfQ0FMTF80KGJwZl9yaW5nYnVmX291dHB1dCwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSxcbi0tXG5rZXJuZWwvYnBmL3JpbmdidWYuYy02MjItXHRyYl9tYXAgPSBjb250YWluZXJfb2YobWFwLCBzdHJ1Y3QgYnBmX3JpbmdidWZfbWFwLCBtYXApO1xua2VybmVsL2JwZi9yaW5nYnVmLmM6NjIzOlx0cmVjID0gX19icGZfcmluZ2J1Zl9yZXNlcnZlKHJiX21hcC1cdTAwM2VyYiwgc2l6ZSk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYy02MjQtXHRpZiAoIXJlYylcbi0tXG5rZXJuZWwvYnBmL3JpbmdidWYuYz02NzA9QlBGX0NBTExfNChicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0ciwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB1MzIsIHNpemUsIHU2NCwgZmxhZ3MsXG4tLVxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjg5LVxua2VybmVsL2JwZi9yaW5nYnVmLmM6NjkwOlx0c2FtcGxlID0gX19icGZfcmluZ2J1Zl9yZXNlcnZlKHJiX21hcC1cdTAwM2VyYiwgc2l6ZSk7XG5rZXJuZWwvYnBmL3JpbmdidWYuYy02OTEtXHRpZiAoIXNhbXBsZSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAxMDMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhlc2UgdGhvdWdodHMsIHB1dHRpbmcgbXlzZWxmIGluIHRoZSByb2xlIG9mIGFuIGV4cGVydDoKCioqSW52ZXN0aWdhdGluZyBCUEYgUmluZyBCdWZmZXIgUmVzZXJ2YXRpb24qKgoKUmlnaHQsIHNvIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGlzIGNsZWFybHkgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhcyBpdCYjMzk7cyBiZWluZyBjYWxsZWQgZnJvbSBzZXZlcmFsIGltcG9ydGFudCBCUEYgaGVscGVyczogYGJwZl9yaW5nYnVmX3Jlc2VydmVgLCBgYnBmX3JpbmdidWZfb3V0cHV0YCwgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAuIFRoYXQgdGVsbHMgbWUgaXQmIzM5O3MgYXQgdGhlIGhlYXJ0IG9mIGhvdyBCUEYgaW50ZXJhY3RzIHdpdGggcmluZyBidWZmZXJzIGF0IGEgZnVuZGFtZW50YWwgbGV2ZWwuIEkmIzM5O20gYXNzdW1pbmcgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aGluIHRoZSBjb250ZXh0IG9mIGEgQlBGIHByb2dyYW0sIGxpa2VseSBlbmFibGVkIGJ5IGBDT05GSUdfQlBGX1NZU0NBTExgLCBvZiBjb3Vyc2UuCgpJIG5lZWQgdG8gY29uZmlybSBpZiB0aGF0IGNvbmZpZyBpcyB0aGUga2V5IHRvIGVuYWJsaW5nIHRoZXNlIGZ1bmN0aW9ucy4gSSYjMzk7bGwgcXVpY2tseSBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBhbmQgYGluaXQvS2NvbmZpZ2AgdG8gc2VlIGlmIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZCB0aGVyZSBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gcmluZ2J1ZiBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBjb250ZXh0IG9uIGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCBjb250cm9sbGVkLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGUgZGVmaW5pdGlvbnMuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0aGVyZSBhcmUgbm8gb3RoZXIgZGVwZW5kZW50IGNvbmZpZ3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEJQRl9TWVNDQUxMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvS2NvbmZpZz0yNT1tZW51IFwmIzM0O0JQRiBzdWJzeXN0ZW1cJiMzNDtcbmtlcm5lbC9icGYvS2NvbmZpZy0yNi1cbmtlcm5lbC9icGYvS2NvbmZpZzoyNzpjb25maWcgQlBGX1NZU0NBTExcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cdGJvb2wgXCYjMzQ7RW5hYmxlIGJwZigpIHN5c3RlbSBjYWxsXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzU2MAoJCQkJCQkJb3V0cHV0OiA0MwoJCQkJCQkJdGhvdWdodHM6IDE1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgQlBGIFJpbmcgQnVmZmVyIFJlc2VydmF0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIEJQRiBjb2RlIGFuZCB0aGUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgIGZ1bmN0aW9uIGtlZXBzIHBvcHBpbmcgdXAuIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGl0JiMzOTtzIGEgQlBGIGhlbHBlciwgd2hpY2ggaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50LiBJIHNob3VsZCBwcm9iYWJseSBmb2N1cyBvbiB0aGF0IGFuZCBpdHMgcmVsYXRlZCBmdW5jdGlvbnMuIEkmIzM5O2xsIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBteSBzeW1ib2wgbGlzdCwgYEZvY3VzU3ltYm9sc2AuCgpXYWl0IGEgbWludXRlLCBJJiMzOTttIHByZXR0eSBzdXJlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYCBpcyBkZWZpbmVkIGFzIGEgYEJQRl9DQUxMX3hgIG1hY3JvLiBUaGF0IG1lYW5zIHRoZSBhY3R1YWwgZnVuY3Rpb24gbmFtZSBtaWdodCBiZSBkaWZmZXJlbnQgZnJvbSB3aGF0JiMzOTtzIGRpcmVjdGx5IGluIHRoZSBjb2RlLCBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgbmFtZSB0aGUga2VybmVsIGtub3dzIGFib3V0LiBJcyBpdCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIG9yIHBlcmhhcHMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCwgb3IgZXZlbiBgYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJgPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZXhhY3Qga2VybmVsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgYW5kIGh1bnQgZm9yIHRoZSBgQlBGX0NBTExfMyhicGZfcmluZ2J1Zl9yZXNlcnZlLi4uYCBtYWNybyBkZWZpbml0aW9uLiBUaGF0JiMzOTtzIHdoZXJlIHRoZSByZWFsIGZ1bmN0aW9uIG5hbWUgd2lsbCBiZSByZXZlYWxlZCEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCUEZfQ0FMTF8zXFwoYnBmX3JpbmdidWZfcmVzZXJ2ZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvcmluZ2J1Zi5jPTQ2Mz1zdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxuLS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTUzOS1cbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjU0MDpCUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTQxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTYyCgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogOTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQlBGX0NBTEwgTWFjcm8gQW5hbHlzaXMqKgoKT2theSwgc28gSSYjMzk7bSBkaXZpbmcgaW50byB0aGlzIEJQRiBjb2RlIGFuZCBub3RpY2luZyBzb21ldGhpbmcgYSBsaXR0bGUgc3RyYW5nZSB3aXRoIHRoZSBgQlBGX0NBTExgIG1hY3Jvcywgc3BlY2lmaWNhbGx5IHJlZ2FyZGluZyB0aGUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgIGZ1bmN0aW9uYWxpdHkuIEl0IHNlZW1zIGxpa2UgdGhlIG1hY3JvIGV4cGFuc2lvbiBpcyBiZWhhdmluZyBpbiBhbiBhcmNoaXRlY3R1cmUtZGVwZW5kZW50IHdheS4gSW5pdGlhbGx5LCBJIHRob3VnaHQgdGhhdCBgQlBGX0NBTExgIHNpbXBseSBleHBhbmRzIHRvIGBfX19fYnBmX3JpbmdidWZfcmVzZXJ2ZWAgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlYCwgYnV0IG5vdyBJJiMzOTttIHNlZWluZyB0aGF0IGBCUEZfQ0FMTF8zYCBzcGVjaWZpY2FsbHkgZXhwYW5kcyBpbnRvIHRoZSB0d28sIGJ1dCBpbiBhIHdheSB0aGF0IGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLiBJJiMzOTttIHVzZWQgdG8gYGJwZl9yaW5nYnVmX3Jlc2VydmVgIGJlaW5nIHRoZSB3cmFwcGVyLCBidXQgSSYjMzk7bGwgbmVlZCB0byBkb3VibGUgY2hlY2sgdGhhdC4gSXQmIzM5O3MgdW51c3VhbCBhbmQgd2FycmFudHMgY2xvc2VyIGluc3BlY3Rpb24uIFRvIGNsYXJpZnkgdGhlIHNpdHVhdGlvbiwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgQlBGX0NBTExfM2AgaXMgZGVmaW5lZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgYW5kIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGZsb3cuIExldCYjMzk7cyBzZWUgaG93IHRoYXQgbWFjcm8gaXMgYWN0dWFsbHkgc2V0IHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF8zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9icGYuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ1MTYKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAzMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDoKCioqSW52ZXN0aWdhdGluZyBCUEYgRnVuY3Rpb24gQ2FsbCBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJIG5lZWQgdG8gdHJhY2sgZG93biBob3cgYEJQRl9DQUxMXzNgIGlzIGltcGxlbWVudGVkLCBwcm9iYWJseSB0byB1bmRlcnN0YW5kIGEgc3BlY2lmaWMgYmVoYXZpb3Igb3IgbWF5YmUgZGVidWcgYW4gaXNzdWUuIE15IGluaXRpYWwgaW5zdGluY3QgaXMgdG8gaGVhZCBzdHJhaWdodCB0byB0aGUgY29yZSBkZWZpbml0aW9ucy4gR2l2ZW4gdGhhdCB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIEJQRiwgdGhlIGxvZ2ljYWwgcGxhY2VzIHRvIHN0YXJ0IGxvb2tpbmcgYXJlIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCBhbmQgYGluY2x1ZGUvbGludXgvYnBmLmhgLiBUaG9zZSBoZWFkZXIgZmlsZXMgYXJlIHRoZSB1c3VhbCBzdXNwZWN0cyBmb3IgQlBGLXJlbGF0ZWQgbWFjcm9zLCBzdHJ1Y3R1cmVzLCBhbmQgZnVuY3Rpb24gcHJvdG90eXBlcyB3aXRoaW4gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2UuIEkgZXhwZWN0IHRvIGZpbmQgdGhlIG1hY3JvIGRlZmluaXRpb24gZm9yIGBCUEZfQ0FMTF8zYCBpbiBvbmUgb2YgdGhvc2UsIG9yIHBlcmhhcHMgYSByZWxhdGVkIGlubGluZSBmdW5jdGlvbiBvciBzdHJ1Y3R1cmUgdGhhdCBleHBsYWlucyBob3cgaXQmIzM5O3MgaGFuZGxlZC4gTGV0JiMzOTtzIHN0YXJ0IHRoZXJlLiBJJiMzOTtsbCBwcm9iYWJseSBhbHNvIG5lZWQgdG8gY29uc2lkZXIgYW55IHN1cnJvdW5kaW5nIGNvZGUgb3IgcmVsYXRlZCBjb250ZXh0IGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF8zJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI2MD1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjI2LSNkZWZpbmUgQlBGX0NBTExfMihuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDIsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NjI3OiNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDMsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjI4LSNkZWZpbmUgQlBGX0NBTExfNChuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDQsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk1NwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDIyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzIG9uIHRoaXM6CgoqKkV4YW1pbmluZyBgQlBGX0NBTExfeGAgaW4gYGluY2x1ZGUvbGludXgvZmlsdGVyLmhgKioKClJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBCUEZfQ0FMTF94YCwgc3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUga2VybmVsIGRlZmluZXMgdGhvc2UgbWFjcm9zIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJQRiBjYWxsIG1lY2hhbmlzbSBpcy4gSSYjMzk7bSBwcm9iYWJseSBsb29raW5nIGZvciB0aGUgYWN0dWFsIGZ1bmN0aW9uIHNpZ25hdHVyZXMgdGhhdCB0aGUgQlBGIHByb2dyYW0gdXNlcyBhbmQgdGhlIHN0cnVjdHVyZXMgb3IgZW51bXMgdGhhdCB0aWUgdGhvc2UgY2FsbHMgdG8gdGhlIHVuZGVybHlpbmcga2VybmVsIGZ1bmN0aW9ucy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCBkZXRhaWxzIG9uIGhvdyBhcmd1bWVudHMgYXJlIHBhc3NlZCwgd2hhdCB0aGUgcmV0dXJuIHR5cGVzIGFyZSwgYW5kIHBvdGVudGlhbGx5IGFueSBjb25zdHJhaW50cyBvciBsaW1pdGF0aW9ucyBvbiB0aGUgYXZhaWxhYmxlIEJQRiBmdW5jdGlvbnMuIEkgYW0gdHJ5aW5nIHRvIGRldGVybWluZSBhbGwgdGhlIHdheXMgdGhhdCBrZXJuZWwgZnVuY3Rpb25zIGNhbiBiZSBhY2Nlc3NlZCB2aWEgQlBGIGFuZCBob3cgdGhleSYjMzk7cmUgaGFuZGxlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBCUEYgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdG8gZXhwbG9pdCBpdCBjb3JyZWN0bHkuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlZmluZSBCUEZfQ0FMTF94JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7aW5jbHVkZS9saW51eC9maWx0ZXIuaCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oPTI2MD1zdGF0aWMgaW5saW5lIGJvb2wgaW5zbl9pc19jYXN0X3VzZXIoY29uc3Qgc3RydWN0IGJwZl9pbnNuICppbnNuKVxuLS1cbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjEwLVxuaW5jbHVkZS9saW51eC9maWx0ZXIuaDo2MTE6I2RlZmluZSBCUEZfQ0FMTF94KHgsIGF0dHIsIG5hbWUsIC4uLilcdFx0XHRcdFx0ICAgICAgIFxcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYxMi1cdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcdFx0XHRcdFx0XHQgICAgICAgXFxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTMzOQoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDIwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqRGl2aW5nIGludG8gQlBGIEZpbHRlcmluZyBTdHJ1Y3R1cmVzKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgZG93biB0byBicmFzcyB0YWNrcy4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBjb3JlIHN0cnVjdHVyZXMgaW52b2x2ZWQgaW4gQlBGIGZpbHRlcmluZywgYW5kIHNwZWNpZmljYWxseSBob3cgdGhleSYjMzk7cmUgZGVmaW5lZC4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUmIzM5O3MgYSBsb3Qgb2YgY3J1Y2lhbCBzdHVmZiBsdXJraW5nIGFyb3VuZCB0aGF0IHNlY3Rpb24gb2YgdGhlIGtlcm5lbCBzb3VyY2UuIEkmIzM5O20gdGhpbmtpbmcgSSBzaG91bGQgc3RhcnQgZGlnZ2luZyBpbnRvIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCwgYW5kLCBiYXNlZCBvbiBteSBmYW1pbGlhcml0eSB3aXRoIHRoZSB1c3VhbCBsYXlvdXQgb2YgdGhpbmdzLCBpdCBzZWVtcyBsaWtlIGFyb3VuZCBsaW5lIDYxMSBzaG91bGQgYmUgYSBnb29kIHN0YXJ0aW5nIHBvaW50IHRvIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGRlZmluaXRpb25zLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS4gSXQmIzM5O3MgdGltZSB0byBnZXQgYSBnb29kIGhhbmRsZSBvbiB0aG9zZSBCUEYgc3RydWN0dXJlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtpbmNsdWRlL2xpbnV4L2ZpbHRlci5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyA2MDA6XHRcdFx0XHRcdCAgICAgICh1bnNpZ25lZCBsb25nKTAsICh0KTApKSkgYVxuIDYwMTpcdCNkZWZpbmUgX19CUEZfViB2b2lkXG4gNjAyOlx0I2RlZmluZSBfX0JQRl9OXG4gNjAzOlx0XG4gNjA0Olx0I2RlZmluZSBfX0JQRl9ERUNMX0FSR1ModCwgYSkgdCAgIGFcbiA2MDU6XHQjZGVmaW5lIF9fQlBGX0RFQ0xfUkVHUyh0LCBhKSB1NjQgYVxuIDYwNjpcdFxuIDYwNzpcdCNkZWZpbmUgX19CUEZfUEFEKG4pXHRcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MDg6XHRcdF9fQlBGX01BUChuLCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX04sIHU2NCwgX191cl8xLCB1NjQsIF9fdXJfMiwgICAgICAgXFxcbiA2MDk6XHRcdFx0ICB1NjQsIF9fdXJfMywgdTY0LCBfX3VyXzQsIHU2NCwgX191cl81KVxuIDYxMDpcdFxuIDYxMTpcdCNkZWZpbmUgQlBGX0NBTExfeCh4LCBhdHRyLCBuYW1lLCAuLi4pXHRcdFx0XHRcdCAgICAgICBcXFxuIDYxMjpcdFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVx0XHRcdFx0XHRcdCAgICAgICBcXFxuIDYxMzpcdFx0dTY0IF9fX18jI25hbWUoX19CUEZfTUFQKHgsIF9fQlBGX0RFQ0xfQVJHUywgX19CUEZfViwgX19WQV9BUkdTX18pKTsgICBcXFxuIDYxNDpcdFx0dHlwZWRlZiB1NjQgKCpidGZfIyNuYW1lKShfX0JQRl9NQVAoeCwgX19CUEZfREVDTF9BUkdTLCBfX0JQRl9WLCBfX1ZBX0FSR1NfXykpOyBcXFxuIDYxNTpcdFx0YXR0ciB1NjQgbmFtZShfX0JQRl9SRUcoeCwgX19CUEZfREVDTF9SRUdTLCBfX0JQRl9OLCBfX1ZBX0FSR1NfXykpOyAgICBcXFxuIDYxNjpcdFx0YXR0ciB1NjQgbmFtZShfX0JQRl9SRUcoeCwgX19CUEZfREVDTF9SRUdTLCBfX0JQRl9OLCBfX1ZBX0FSR1NfXykpICAgICBcXFxuIDYxNzpcdFx0e1x0XHRcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MTg6XHRcdFx0cmV0dXJuICgoYnRmXyMjbmFtZSlfX19fIyNuYW1lKShfX0JQRl9NQVAoeCxfX0JQRl9DQVNULF9fQlBGX04sX19WQV9BUkdTX18pKTtcXFxuIDYxOTpcdFx0fVx0XHRcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MjA6XHRcdHN0YXRpYyBfX2Fsd2F5c19pbmxpbmVcdFx0XHRcdFx0XHQgICAgICAgXFxcbiA2MjE6XHRcdHU2NCBfX19fIyNuYW1lKF9fQlBGX01BUCh4LCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX1YsIF9fVkFfQVJHU19fKSlcbiA2MjI6XHRcbiA2MjM6XHQjZGVmaW5lIF9fTk9BVFRSXG4gNjI0Olx0I2RlZmluZSBCUEZfQ0FMTF8wKG5hbWUsIC4uLilcdEJQRl9DQUxMX3goMCwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxuIDYyNTpcdCNkZWZpbmUgQlBGX0NBTExfMShuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDEsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbiA2MjY6XHQjZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVx0QlBGX0NBTExfeCgyLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG4gNjI3Olx0I2RlZmluZSBCUEZfQ0FMTF8zKG5hbWUsIC4uLilcdEJQRl9DQUxMX3goMywgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxuIDYyODpcdCNkZWZpbmUgQlBGX0NBTExfNChuYW1lLCAuLi4pXHRCUEZfQ0FMTF94KDQsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcbiA2Mjk6XHQjZGVmaW5lIEJQRl9DQUxMXzUobmFtZSwgLi4uKVx0QlBGX0NBTExfeCg1LCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYzODUKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAxOTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEJQRiBSaW5nIEJ1ZmZlciBTeW1ib2xzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBCUEYgcmluZyBidWZmZXIgZnVuY3Rpb25zIGFuZCBtYWtpbmcgc3VyZSBJJiMzOTt2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBzeW1ib2xzLiBJdCBzZWVtcyBgbmFtZWAgaXMgcmVhbGx5IGp1c3QgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGFjdHVhbCBmdW5jdGlvbiBuYW1lLCBsaWtlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYC4gQW5kIHRoZW4sIHRoaXMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCBpcyBhbiBgX19hbHdheXNfaW5saW5lYCB2ZXJzaW9uLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZC4gU28sIHRoZSAmIzM0O3JlYWwmIzM0OyBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgLCBgYnBmX3JpbmdidWZfb3V0cHV0YCwgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAuIEFsc28sIHRoZXJlJiMzOTtzIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgLCB3aGljaCBpcyBhIHN0YXRpYyBmdW5jdGlvbiB0aGF0ICpjb3VsZCogYmUgaW5saW5lZC4gSSBuZWVkIHRvIGtlZXAgdGhhdCBwb3NzaWJpbGl0eSBpbiBtaW5kLCBldmVuIHRob3VnaCBpdCYjMzk7cyBub3QgZXhwbGljaXRseSBtYXJrZWQgZm9yIGlubGluaW5nLgoKVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgYWN0aW9uIGlzIHRvIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBgRm9jdXNTeW1ib2xzYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuCgpOb3csIEkmIzM5O2xsIG1vdmUgb24gdG8gY2hlY2tpbmcgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gcmVseSBvbiB0aGF0IGZvciB0aGUgdGltZSBiZWluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDYgMTQ6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmluZ2J1ZlxcLm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtrZXJuZWwvYnBmL01ha2VmaWxlJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2tlcm5lbC9icGYvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gaGFzaHRhYi5vIGFycmF5bWFwLm8gcGVyY3B1X2ZyZWVsaXN0Lm8gYnBmX2xydV9saXN0Lm8gbHBtX3RyaWUubyBtYXBfaW5fbWFwLm8gYmxvb21fZmlsdGVyLm9cbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSAmIzQzOz0gbG9jYWxfc3RvcmFnZS5vIHF1ZXVlX3N0YWNrX21hcHMubyByaW5nYnVmLm8gYnBmX2luc25fYXJyYXkub1xua2VybmVsL2JwZi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICYjNDM7PSBicGZfbG9jYWxfc3RvcmFnZS5vIGJwZl90YXNrX3N0b3JhZ2Uub1xuLS1cbmtlcm5lbC9icGYvTWFrZWZpbGU9NzQ9Q0ZMQUdTX1JFTU9WRV9scG1fdHJpZS5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlOjc1OkNGTEFHU19SRU1PVkVfcmluZ2J1Zi5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc2LUNGTEFHU19SRU1PVkVfcnFzcGlubG9jay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA2IDE0OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcxNzEKCQkJCQkJCW91dHB1dDogMTAyCgkJCQkJCQl0aG91Z2h0czogMTYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIEJQRiBSaW5nIEJ1ZmZlciBGaXgqKgoKT2theSwgc28gdGhlIGBDT05GSUdfQlBGX1NZU0NBTExgIG9wdGlvbiBpcyBkZWZpbml0ZWx5IHJlbGV2YW50IGhlcmUsIG5vIHF1ZXN0aW9uLiBUaGlzIGxvb2tzIGxpa2UgYSBmdW5jdGlvbmFsIGltcHJvdmVtZW50IHRoYXQgYWRkcmVzc2VzIGEgcG90ZW50aWFsIGZsYXcgaW4gdGhlIEJQRiByaW5nIGJ1ZmZlciByZXNlcnZhdGlvbiBsb2dpYy4gU3BlY2lmaWNhbGx5LCB0aGUgY2hhbmdlIGZyb20gYSBzaW1wbGUgYHBlbmRfcG9zICZsdDsgcHJvZF9wb3NgIGNvbXBhcmlzb24gdG8gYChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSAmZ3Q7IDBgIGlzIHNpZ25pZmljYW50LiBUaGUgdXNlIG9mIGEgc2lnbmVkIGxvbmcgZGlmZmVyZW5jZSBpcyBjcnVjaWFsIGJlY2F1c2UgaXQgY29ycmVjdGx5IGFjY291bnRzIGZvciB3cmFwLWFyb3VuZCBzY2VuYXJpb3MsIHdoaWNoIGlzIGV4YWN0bHkgd2hhdCBJIHdhcyBsb29raW5nIGZvci4KCkdpdmVuIHRoaXMsIEkmIzM5O20gbWFya2luZyBpdCBhcyBXb3J0aEZ1enppbmc7IHRoZSBidWcgZml4IGluIHJlc2VydmF0aW9uIGxvZ2ljIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0LiBJJiMzOTtsbCBuZWVkIHRvIGZvY3VzIG15IGZ1enppbmcgZWZmb3J0cyBvbiB0aGVzZSBzcGVjaWZpYyBzeW1ib2xzOiBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYC4gVGhleSBhcmUgdGhlIGRpcmVjdCBlbnRyeSBwb2ludHMuIEkmIzM5O2xsIG1ha2Ugc3VyZSB0byBleHBsaWNpdGx5IGVuYWJsZSB0aGUgYEJQRl9TWVNDQUxMYCBjb25maWcgYmVjYXVzZSB0aGUgY29kZSBiZWluZyB0b3VjaGVkIGlzIG9ubHkgYWNjZXNzaWJsZSB2aWEgQlBGIGhlbHBlcnMuCgpUaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBjb3JyZWN0cyBhIGZ1bmN0aW9uYWwgYnVnIHdpdGhpbiB0aGUgQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBuYW1lbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgc29saWQsIHRhcmdldGVkIGFwcHJvYWNoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNiAxNDoxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlJiMzNDssCiAgICAmIzM0O2JwZl9yaW5nYnVmX291dHB1dCYjMzQ7LAogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIEJQRiByaW5nIGJ1ZmZlciByZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHdyYXAtYXJvdW5kIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBCUEYgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QlBGX1NZU0NBTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlJiMzNDssCiAgICAmIzM0O2JwZl9yaW5nYnVmX291dHB1dCYjMzQ7LAogICAgJiMzNDticGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0ciYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGZ1bmN0aW9uYWwgYnVnIGluIEJQRiByaW5nIGJ1ZmZlciByZXNlcnZhdGlvbiBsb2dpYywgc3BlY2lmaWNhbGx5IGhhbmRsaW5nIHdyYXAtYXJvdW5kIGNvcnJlY3RseS4gVGhlIG1vZGlmaWVkIGNvZGUgaXMgcmVhY2hhYmxlIHZpYSBCUEYgaGVscGVycy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjEyLjI0OTU1ODQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2Mjk1NDk0MDM1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3JpbmdidWZfcmVzZXJ2ZVwiLFxuICAgIFwiYnBmX3JpbmdidWZfb3V0cHV0XCIsXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0clwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEJQRiBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODoxMi4yNDk1NjQwMTNaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM4NTQ0NDQ0MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGZiMjViMTY5NDZjNzlkMzIxN2Y4ZTFiNDhkNDc1ODg5MmUwYjgwNjlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFRodSBBdWcgNiAxNDoxODoxMSAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9rZXJuZWwvYnBmL3JpbmdidWYuYyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXFxuaW5kZXggMzVhZTY0YWRlMzZiOC4uMmMwOGE5ODM3MGQ1ZSAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvYnBmL3JpbmdidWYuY1xcbisrKyBiL2tlcm5lbC9icGYvcmluZ2J1Zi5jXFxuQEAgLTQ4Miw3ICs0ODIsNyBAQCBzdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxcbiBcXHRwcm9kX3BvcyA9IHJiLVxcdTAwM2Vwcm9kdWNlcl9wb3M7XFxuIFxcdG5ld19wcm9kX3BvcyA9IHByb2RfcG9zICsgbGVuO1xcbiBcXG4tXFx0d2hpbGUgKHBlbmRfcG9zIFxcdTAwM2MgcHJvZF9wb3MpIHtcXG4rXFx0d2hpbGUgKChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSBcXHUwMDNlIDApIHtcXG4gXFx0XFx0aGRyID0gKHZvaWQgKilyYi1cXHUwMDNlZGF0YSArIChwZW5kX3BvcyBcXHUwMDI2IHJiLVxcdTAwM2VtYXNrKTtcXG4gXFx0XFx0aGRyX2xlbiA9IFJFQURfT05DRShoZHItXFx1MDAzZWxlbik7XFxuIFxcdFxcdGlmIChoZHJfbGVuIFxcdTAwMjYgQlBGX1JJTkdCVUZfQlVTWV9CSVQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjEyLjYzNTY4NTA1M1oiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjQ1OTA5MzU4NjI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJQRl9TWVNDQUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYnBmX3JpbmdidWZfcmVzZXJ2ZVwiLFxuICAgIFwiYnBmX3JpbmdidWZfb3V0cHV0XCIsXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0clwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgZnVuY3Rpb25hbCBidWcgaW4gQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBzcGVjaWZpY2FsbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyByZWFjaGFibGUgdmlhIEJQRiBoZWxwZXJzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYjI1YjE2OTQ2Yzc5ZDMyMTdmOGUxYjQ4ZDQ3NTg4OTJlMGI4MDY5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFRodSBBdWcgNiAxNDoxODoxMSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2tlcm5lbC9icGYvcmluZ2J1Zi5jIGIva2VybmVsL2JwZi9yaW5nYnVmLmNcbmluZGV4IDM1YWU2NGFkZTM2YjguLjJjMDhhOTgzNzBkNWUgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvYnBmL3JpbmdidWYuY1xuKysrIGIva2VybmVsL2JwZi9yaW5nYnVmLmNcbkBAIC00ODIsNyArNDgyLDcgQEAgc3RhdGljIHZvaWQgKl9fYnBmX3JpbmdidWZfcmVzZXJ2ZShzdHJ1Y3QgYnBmX3JpbmdidWYgKnJiLCB1NjQgc2l6ZSlcbiBcdHByb2RfcG9zID0gcmItXHUwMDNlcHJvZHVjZXJfcG9zO1xuIFx0bmV3X3Byb2RfcG9zID0gcHJvZF9wb3MgKyBsZW47XG4gXG4tXHR3aGlsZSAocGVuZF9wb3MgXHUwMDNjIHByb2RfcG9zKSB7XG4rXHR3aGlsZSAoKGxvbmcpKHByb2RfcG9zIC0gcGVuZF9wb3MpIFx1MDAzZSAwKSB7XG4gXHRcdGhkciA9ICh2b2lkICopcmItXHUwMDNlZGF0YSArIChwZW5kX3BvcyBcdTAwMjYgcmItXHUwMDNlbWFzayk7XG4gXHRcdGhkcl9sZW4gPSBSRUFEX09OQ0UoaGRyLVx1MDAzZWxlbik7XG4gXHRcdGlmIChoZHJfbGVuIFx1MDAyNiBCUEZfUklOR0JVRl9CVVNZX0JJVClcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjEyLjYzNTY4NjMyM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjYyNjYyNzIxMTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSaW5nIEJ1ZmZlciBSZXNlcnZhdGlvbiBDaGFuZ2UqKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRhcmdldGluZyBga2VybmVsL2JwZi9yaW5nYnVmLmNgLiBNeSBpbml0aWFsIHNjYW4gc3VnZ2VzdHMgYSBzdWJ0bGUgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsIGNoYW5nZSB3aXRoaW4gdGhlIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGZ1bmN0aW9uLiBUaGUga2V5IGhlcmUgaXMgdGhlIG1vZGlmaWNhdGlvbiBvZiB0aGUgYHdoaWxlYCBsb29wIGNvbmRpdGlvbi4gVGhleSd2ZSByZXBsYWNlZCB0aGUgZGlyZWN0IGNvbXBhcmlzb24gYHdoaWxlIChwZW5kX3BvcyBcdTAwM2MgcHJvZF9wb3MpYCB3aXRoIGB3aGlsZSAoKGxvbmcpKHByb2RfcG9zIC0gcGVuZF9wb3MpIFx1MDAzZSAwKWAuXG5cbk15IGltbWVkaWF0ZSB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBhbG1vc3QgY2VydGFpbmx5IHJlbGF0ZWQgdG8gYSB3cmFwLWFyb3VuZCBpc3N1ZS4gV2l0aCBgcHJvZF9wb3NgIGFuZCBgcGVuZF9wb3NgIGJlaW5nIGluZGljZXMgd2l0aGluIGEgcmluZyBidWZmZXIsIHRoZXJlJ3MgdGhlIHZlcnkgcmVhbCBwb3NzaWJpbGl0eSBvZiB0aGVtIFwid3JhcHBpbmdcIiBiYWNrIHRvIHplcm8gYWZ0ZXIgcmVhY2hpbmcgdGhlIGJ1ZmZlcidzIGNhcGFjaXR5LiBUaGUgb3JpZ2luYWwgY29tcGFyaXNvbiBjb3VsZCBmYWlsIGluIGNlcnRhaW4gc2NlbmFyaW9zLCBhbmQgcG90ZW50aWFsbHkgYWxsb3cgdW5zYWZlIGNvbmRpdGlvbnMuXG5cblRoZSBjYXN0IHRvIGAobG9uZylgIGFuZCB0aGUgc3VidHJhY3Rpb24gKnRoZW4qIGNvbXBhcmlzb24gc3Ryb25nbHkgaGludHMgdGhhdCB0aGV5J3JlIHRyeWluZyB0byBoYW5kbGUgdGhlIG1vZHVsbyBhcml0aG1ldGljIGluaGVyZW50IGluIHJpbmcgYnVmZmVyIGluZGV4aW5nIGNvcnJlY3RseS4gVGhpcyBpbmRpY2F0ZXMgdGhleSdyZSB3b3JraW5nIHRvIHByZXZlbnQgaW50ZWdlciBvdmVyZmxvdyBvciB1bmRlcmZsb3cgcHJvYmxlbXMgdGhhdCBjYW4gYXJpc2Ugd2hlbiBkZWFsaW5nIHdpdGggdW5zaWduZWQgaW50ZWdlcnMgcmVwcmVzZW50aW5nIGJ1ZmZlciBwb3NpdGlvbnMsIGVzcGVjaWFsbHkgYWZ0ZXIgbGFyZ2UgYWR2YW5jZW1lbnRzIGFuZCBwb3RlbnRpYWwgd3JhcHMuIEknZCBuZWVkIHRvIGRpdmUgZGVlcGVyLCB0byBjaGVjayB0aGVpciByYXRpb25hbGUsIGFuZCBwb3NzaWJseSBzZWUgdGhlIGNvbnRleHQsIGJ1dCBteSBndWVzcyBpcyB0aGlzIGZpeGVzIGEgY29ybmVyLWNhc2Ugd2hlcmUgYSBCUEYgcHJvZ3JhbSBtaWdodCBtYWtlIGluY29ycmVjdCByZXNlcnZhdGlvbiBhbmQgYWxsb2NhdGlvbiBkZWNpc2lvbnMgd2l0aGluIHRoZSByaW5nIGJ1ZmZlci4gSSdsbCBuZWVkIHRvIGNvbmZpcm0gdGhhdCB0aGlzIGlzIGEgZGVmaW5pdGl2ZSBmaXggZm9yIGEgZGVtb25zdHJhdGVkIGJ1Zywgb3Igd2hldGhlciB0aGlzIGlzIGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIG1lYXN1cmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTUsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODoxOC45MDE5NjA5OThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTA2ODAxODUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX19icGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jPTQ1Nz1zdGF0aWMgdTMyIGJwZl9yaW5nYnVmX3JvdW5kX3VwX2hkcl9sZW4odTMyIGhkcl9sZW4pXFxuLS1cXG5rZXJuZWwvYnBmL3JpbmdidWYuYy00NjItXFxua2VybmVsL2JwZi9yaW5nYnVmLmM6NDYzOnN0YXRpYyB2b2lkICpfX2JwZl9yaW5nYnVmX3Jlc2VydmUoc3RydWN0IGJwZl9yaW5nYnVmICpyYiwgdTY0IHNpemUpXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNDY0LXtcXG4tLVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTU0MD1CUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTQ3LVxcdHJiX21hcCA9IGNvbnRhaW5lcl9vZihtYXAsIHN0cnVjdCBicGZfcmluZ2J1Zl9tYXAsIG1hcCk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmM6NTQ4OlxcdHJldHVybiAodW5zaWduZWQgbG9uZylfX2JwZl9yaW5nYnVmX3Jlc2VydmUocmJfbWFwLVxcdTAwM2VyYiwgc2l6ZSk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTQ5LX1cXG4tLVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jPTYxMz1CUEZfQ0FMTF80KGJwZl9yaW5nYnVmX291dHB1dCwgc3RydWN0IGJwZl9tYXAgKiwgbWFwLCB2b2lkICosIGRhdGEsIHU2NCwgc2l6ZSxcXG4tLVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTYyMi1cXHRyYl9tYXAgPSBjb250YWluZXJfb2YobWFwLCBzdHJ1Y3QgYnBmX3JpbmdidWZfbWFwLCBtYXApO1xcbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjYyMzpcXHRyZWMgPSBfX2JwZl9yaW5nYnVmX3Jlc2VydmUocmJfbWFwLVxcdTAwM2VyYiwgc2l6ZSk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjI0LVxcdGlmICghcmVjKVxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmM9NjcwPUJQRl9DQUxMXzQoYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHIsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTMyLCBzaXplLCB1NjQsIGZsYWdzLFxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjg5LVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjY5MDpcXHRzYW1wbGUgPSBfX2JwZl9yaW5nYnVmX3Jlc2VydmUocmJfbWFwLVxcdTAwM2VyYiwgc2l6ZSk7XFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNjkxLVxcdGlmICghc2FtcGxlKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjE4Ljk1MjY0NjE2M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTg5OTEwODcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGVzZSB0aG91Z2h0cywgcHV0dGluZyBteXNlbGYgaW4gdGhlIHJvbGUgb2YgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgQlBGIFJpbmcgQnVmZmVyIFJlc2VydmF0aW9uKipcblxuUmlnaHQsIHNvIGBfX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGlzIGNsZWFybHkgYSBjcnVjaWFsIGZ1bmN0aW9uLCBhcyBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgaW1wb3J0YW50IEJQRiBoZWxwZXJzOiBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYC4gVGhhdCB0ZWxscyBtZSBpdCdzIGF0IHRoZSBoZWFydCBvZiBob3cgQlBGIGludGVyYWN0cyB3aXRoIHJpbmcgYnVmZmVycyBhdCBhIGZ1bmRhbWVudGFsIGxldmVsLiBJJ20gYXNzdW1pbmcgd2UncmUgd29ya2luZyB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYSBCUEYgcHJvZ3JhbSwgbGlrZWx5IGVuYWJsZWQgYnkgYENPTkZJR19CUEZfU1lTQ0FMTGAsIG9mIGNvdXJzZS5cblxuSSBuZWVkIHRvIGNvbmZpcm0gaWYgdGhhdCBjb25maWcgaXMgdGhlIGtleSB0byBlbmFibGluZyB0aGVzZSBmdW5jdGlvbnMuIEknbGwgcXVpY2tseSBjaGVjayBga2VybmVsL2JwZi9LY29uZmlnYCBhbmQgYGluaXQvS2NvbmZpZ2AgdG8gc2VlIGlmIGBCUEZfU1lTQ0FMTGAgaXMgZGVmaW5lZCB0aGVyZSBhbmQgaG93IGl0IHJlbGF0ZXMgdG8gcmluZ2J1ZiBmdW5jdGlvbmFsaXR5LiBUaGlzIHdpbGwgcHJvdmlkZSB2YWx1YWJsZSBjb250ZXh0IG9uIGhvdyB0aGUgZmVhdHVyZSBpcyBjb25maWd1cmVkIGFuZCBjb250cm9sbGVkLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZSBkZWZpbml0aW9ucy4gSSdsbCBtYWtlIHN1cmUgdGhlcmUgYXJlIG5vIG90aGVyIGRlcGVuZGVudCBjb25maWdzLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAxLCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjI0LjA3MTYzOTY1WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE3MTAxMDkyMTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJQRl9TWVNDQUxMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvYnBmL0tjb25maWc9MjU9bWVudSBcXFwiQlBGIHN1YnN5c3RlbVxcXCJcXG5rZXJuZWwvYnBmL0tjb25maWctMjYtXFxua2VybmVsL2JwZi9LY29uZmlnOjI3OmNvbmZpZyBCUEZfU1lTQ0FMTFxcbmtlcm5lbC9icGYvS2NvbmZpZy0yOC1cXHRib29sIFxcXCJFbmFibGUgYnBmKCkgc3lzdGVtIGNhbGxcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjI1Ljc4MTc1NzY0MloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MTc4MjM1NzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBSaW5nIEJ1ZmZlciBSZXNlcnZhdGlvbioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgQlBGIGNvZGUgYW5kIHRoZSBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAgZnVuY3Rpb24ga2VlcHMgcG9wcGluZyB1cC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgaXQncyBhIEJQRiBoZWxwZXIsIHdoaWNoIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gSSBzaG91bGQgcHJvYmFibHkgZm9jdXMgb24gdGhhdCBhbmQgaXRzIHJlbGF0ZWQgZnVuY3Rpb25zLiBJJ2xsIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBteSBzeW1ib2wgbGlzdCwgYEZvY3VzU3ltYm9sc2AuXG5cbldhaXQgYSBtaW51dGUsIEknbSBwcmV0dHkgc3VyZSBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAgaXMgZGVmaW5lZCBhcyBhIGBCUEZfQ0FMTF94YCBtYWNyby4gVGhhdCBtZWFucyB0aGUgYWN0dWFsIGZ1bmN0aW9uIG5hbWUgbWlnaHQgYmUgZGlmZmVyZW50IGZyb20gd2hhdCdzIGRpcmVjdGx5IGluIHRoZSBjb2RlLCBJIG5lZWQgdG8ga25vdyB0aGUgc3BlY2lmaWMgbmFtZSB0aGUga2VybmVsIGtub3dzIGFib3V0LiBJcyBpdCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIG9yIHBlcmhhcHMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCwgb3IgZXZlbiBgYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJgPyBJIG5lZWQgdG8gdHJhY2sgZG93biB0aGUgZXhhY3Qga2VybmVsIGltcGxlbWVudGF0aW9uLiBUaW1lIHRvIGNoZWNrIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgYW5kIGh1bnQgZm9yIHRoZSBgQlBGX0NBTExfMyhicGZfcmluZ2J1Zl9yZXNlcnZlLi4uYCBtYWNybyBkZWZpbml0aW9uLiBUaGF0J3Mgd2hlcmUgdGhlIHJlYWwgZnVuY3Rpb24gbmFtZSB3aWxsIGJlIHJldmVhbGVkIVxuXG5cbiIsIklucHV0VG9rZW5zIjozNTYwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTUwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjMwLjE5OTU4MzY2MVoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzU0MjI3NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCUEZfQ0FMTF8zXFxcXChicGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvcmluZ2J1Zi5jPTQ2Mz1zdGF0aWMgdm9pZCAqX19icGZfcmluZ2J1Zl9yZXNlcnZlKHN0cnVjdCBicGZfcmluZ2J1ZiAqcmIsIHU2NCBzaXplKVxcbi0tXFxua2VybmVsL2JwZi9yaW5nYnVmLmMtNTM5LVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jOjU0MDpCUEZfQ0FMTF8zKGJwZl9yaW5nYnVmX3Jlc2VydmUsIHN0cnVjdCBicGZfbWFwICosIG1hcCwgdTY0LCBzaXplLCB1NjQsIGZsYWdzKVxcbmtlcm5lbC9icGYvcmluZ2J1Zi5jLTU0MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjMwLjI0NzEzMjA4NloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ1MjYzNjE1MDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQlBGX0NBTEwgTWFjcm8gQW5hbHlzaXMqKlxuXG5Pa2F5LCBzbyBJJ20gZGl2aW5nIGludG8gdGhpcyBCUEYgY29kZSBhbmQgbm90aWNpbmcgc29tZXRoaW5nIGEgbGl0dGxlIHN0cmFuZ2Ugd2l0aCB0aGUgYEJQRl9DQUxMYCBtYWNyb3MsIHNwZWNpZmljYWxseSByZWdhcmRpbmcgdGhlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYCBmdW5jdGlvbmFsaXR5LiBJdCBzZWVtcyBsaWtlIHRoZSBtYWNybyBleHBhbnNpb24gaXMgYmVoYXZpbmcgaW4gYW4gYXJjaGl0ZWN0dXJlLWRlcGVuZGVudCB3YXkuIEluaXRpYWxseSwgSSB0aG91Z2h0IHRoYXQgYEJQRl9DQUxMYCBzaW1wbHkgZXhwYW5kcyB0byBgX19fX2JwZl9yaW5nYnVmX3Jlc2VydmVgIGFuZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGJ1dCBub3cgSSdtIHNlZWluZyB0aGF0IGBCUEZfQ0FMTF8zYCBzcGVjaWZpY2FsbHkgZXhwYW5kcyBpbnRvIHRoZSB0d28sIGJ1dCBpbiBhIHdheSB0aGF0IGRlcGVuZHMgb24gdGhlIHVuZGVybHlpbmcgYXJjaGl0ZWN0dXJlLiBJJ20gdXNlZCB0byBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAgYmVpbmcgdGhlIHdyYXBwZXIsIGJ1dCBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoYXQuIEl0J3MgdW51c3VhbCBhbmQgd2FycmFudHMgY2xvc2VyIGluc3BlY3Rpb24uIFRvIGNsYXJpZnkgdGhlIHNpdHVhdGlvbiwgSSBuZWVkIHRvIGNoZWNrIGhvdyBgQlBGX0NBTExfM2AgaXMgZGVmaW5lZCB0byB1bmRlcnN0YW5kIHRoaXMgY29uZGl0aW9uYWwgYmVoYXZpb3IgYW5kIGNvbmZpcm0gdGhlIGV4cGVjdGVkIGZsb3cuIExldCdzIHNlZSBob3cgdGhhdCBtYWNybyBpcyBhY3R1YWxseSBzZXQgdXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxNjIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODozNC43NzM0OTYyODVaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NTAxNDE1LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQlBGX0NBTExfM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2JwZi5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODozNC44MjEwMTAxNloiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozOTc3NzQ2NjA1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6XG5cbioqSW52ZXN0aWdhdGluZyBCUEYgRnVuY3Rpb24gQ2FsbCBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIEkgbmVlZCB0byB0cmFjayBkb3duIGhvdyBgQlBGX0NBTExfM2AgaXMgaW1wbGVtZW50ZWQsIHByb2JhYmx5IHRvIHVuZGVyc3RhbmQgYSBzcGVjaWZpYyBiZWhhdmlvciBvciBtYXliZSBkZWJ1ZyBhbiBpc3N1ZS4gTXkgaW5pdGlhbCBpbnN0aW5jdCBpcyB0byBoZWFkIHN0cmFpZ2h0IHRvIHRoZSBjb3JlIGRlZmluaXRpb25zLiBHaXZlbiB0aGF0IHdlJ3JlIGRlYWxpbmcgd2l0aCBCUEYsIHRoZSBsb2dpY2FsIHBsYWNlcyB0byBzdGFydCBsb29raW5nIGFyZSBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAgYW5kIGBpbmNsdWRlL2xpbnV4L2JwZi5oYC4gVGhvc2UgaGVhZGVyIGZpbGVzIGFyZSB0aGUgdXN1YWwgc3VzcGVjdHMgZm9yIEJQRi1yZWxhdGVkIG1hY3Jvcywgc3RydWN0dXJlcywgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZXMgd2l0aGluIHRoZSBMaW51eCBrZXJuZWwgc291cmNlLiBJIGV4cGVjdCB0byBmaW5kIHRoZSBtYWNybyBkZWZpbml0aW9uIGZvciBgQlBGX0NBTExfM2AgaW4gb25lIG9mIHRob3NlLCBvciBwZXJoYXBzIGEgcmVsYXRlZCBpbmxpbmUgZnVuY3Rpb24gb3Igc3RydWN0dXJlIHRoYXQgZXhwbGFpbnMgaG93IGl0J3MgaGFuZGxlZC4gTGV0J3Mgc3RhcnQgdGhlcmUuIEknbGwgcHJvYmFibHkgYWxzbyBuZWVkIHRvIGNvbnNpZGVyIGFueSBzdXJyb3VuZGluZyBjb2RlIG9yIHJlbGF0ZWQgY29udGV4dCBhcyB3ZWxsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NTE2LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6MzguNzk4NzU4NTk1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NjQzMDUxNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZWZpbmUgQlBGX0NBTExfM1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImluY2x1ZGUvbGludXgvZmlsdGVyLmg9MjYwPXN0YXRpYyBpbmxpbmUgYm9vbCBpbnNuX2lzX2Nhc3RfdXNlcihjb25zdCBzdHJ1Y3QgYnBmX2luc24gKmluc24pXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYyNi0jZGVmaW5lIEJQRl9DQUxMXzIobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goMiwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NjI3OiNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuaW5jbHVkZS9saW51eC9maWx0ZXIuaC02MjgtI2RlZmluZSBCUEZfQ0FMTF80KG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDQsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6MzguODQ1MTkzNzlaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0ODYxNzM2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMuIEhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3Mgb24gdGhpczpcblxuKipFeGFtaW5pbmcgYEJQRl9DQUxMX3hgIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYCoqXG5cblJpZ2h0LCB0aW1lIHRvIGdldCBteSBoYW5kcyBkaXJ0eS4gSSBuZWVkIHRvIHRha2UgYSBsb29rIGF0IGBCUEZfQ0FMTF94YCwgc3BlY2lmaWNhbGx5LCBJIG5lZWQgdG8gc2VlIGhvdyB0aGUga2VybmVsIGRlZmluZXMgdGhvc2UgbWFjcm9zIGluIGBpbmNsdWRlL2xpbnV4L2ZpbHRlci5oYC4gVGhpcyBpcyBsaWtlbHkgd2hlcmUgdGhlIGNvcmUgaW1wbGVtZW50YXRpb24gb2YgdGhlIEJQRiBjYWxsIG1lY2hhbmlzbSBpcy4gSSdtIHByb2JhYmx5IGxvb2tpbmcgZm9yIHRoZSBhY3R1YWwgZnVuY3Rpb24gc2lnbmF0dXJlcyB0aGF0IHRoZSBCUEYgcHJvZ3JhbSB1c2VzIGFuZCB0aGUgc3RydWN0dXJlcyBvciBlbnVtcyB0aGF0IHRpZSB0aG9zZSBjYWxscyB0byB0aGUgdW5kZXJseWluZyBrZXJuZWwgZnVuY3Rpb25zLiBJJ20gZXhwZWN0aW5nIHRvIGZpbmQgZGV0YWlscyBvbiBob3cgYXJndW1lbnRzIGFyZSBwYXNzZWQsIHdoYXQgdGhlIHJldHVybiB0eXBlcyBhcmUsIGFuZCBwb3RlbnRpYWxseSBhbnkgY29uc3RyYWludHMgb3IgbGltaXRhdGlvbnMgb24gdGhlIGF2YWlsYWJsZSBCUEYgZnVuY3Rpb25zLiBJIGFtIHRyeWluZyB0byBkZXRlcm1pbmUgYWxsIHRoZSB3YXlzIHRoYXQga2VybmVsIGZ1bmN0aW9ucyBjYW4gYmUgYWNjZXNzZWQgdmlhIEJQRiBhbmQgaG93IHRoZXkncmUgaGFuZGxlZC4gVGhpcyBpbmZvcm1hdGlvbiBpcyBjcml0aWNhbCBmb3IgdW5kZXJzdGFuZGluZyB0aGUgb3ZlcmFsbCBCUEYgYXJjaGl0ZWN0dXJlIGFuZCBob3cgdG8gZXhwbG9pdCBpdCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5NTcsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODo0Mi4xOTM4MTQ1NjFaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2NDg2NDY1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlZmluZSBCUEZfQ0FMTF94XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImluY2x1ZGUvbGludXgvZmlsdGVyLmhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9saW51eC9maWx0ZXIuaD0yNjA9c3RhdGljIGlubGluZSBib29sIGluc25faXNfY2FzdF91c2VyKGNvbnN0IHN0cnVjdCBicGZfaW5zbiAqaW5zbilcXG4tLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmgtNjEwLVxcbmluY2x1ZGUvbGludXgvZmlsdGVyLmg6NjExOiNkZWZpbmUgQlBGX0NBTExfeCh4LCBhdHRyLCBuYW1lLCAuLi4pXFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG5pbmNsdWRlL2xpbnV4L2ZpbHRlci5oLTYxMi1cXHRzdGF0aWMgX19hbHdheXNfaW5saW5lXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6NDIuMjQwMzEzNDI2WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2Njc1MzI2NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyByZXF1ZXN0ZWQ6XG5cbioqRGl2aW5nIGludG8gQlBGIEZpbHRlcmluZyBTdHJ1Y3R1cmVzKipcblxuQWxyaWdodCwgbGV0J3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byByZWZyZXNoIG15IG1lbW9yeSBvbiB0aGUgY29yZSBzdHJ1Y3R1cmVzIGludm9sdmVkIGluIEJQRiBmaWx0ZXJpbmcsIGFuZCBzcGVjaWZpY2FsbHkgaG93IHRoZXkncmUgZGVmaW5lZC4gTXkgaW50dWl0aW9uIHNheXMgdGhlcmUncyBhIGxvdCBvZiBjcnVjaWFsIHN0dWZmIGx1cmtpbmcgYXJvdW5kIHRoYXQgc2VjdGlvbiBvZiB0aGUga2VybmVsIHNvdXJjZS4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHN0YXJ0IGRpZ2dpbmcgaW50byBgaW5jbHVkZS9saW51eC9maWx0ZXIuaGAsIGFuZCwgYmFzZWQgb24gbXkgZmFtaWxpYXJpdHkgd2l0aCB0aGUgdXN1YWwgbGF5b3V0IG9mIHRoaW5ncywgaXQgc2VlbXMgbGlrZSBhcm91bmQgbGluZSA2MTEgc2hvdWxkIGJlIGEgZ29vZCBzdGFydGluZyBwb2ludCB0byB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBkZWZpbml0aW9ucy4gTGV0J3Mgc2VlIHdoYXQgd2UgZmluZCB0aGVyZS4gSXQncyB0aW1lIHRvIGdldCBhIGdvb2QgaGFuZGxlIG9uIHRob3NlIEJQRiBzdHJ1Y3R1cmVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MzM5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6NDUuOTA3ODQ4OTE1WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMDk5MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJpbmNsdWRlL2xpbnV4L2ZpbHRlci5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDYwMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDYwMDpcXHRcXHRcXHRcXHRcXHQgICAgICAodW5zaWduZWQgbG9uZykwLCAodCkwKSkpIGFcXG4gNjAxOlxcdCNkZWZpbmUgX19CUEZfViB2b2lkXFxuIDYwMjpcXHQjZGVmaW5lIF9fQlBGX05cXG4gNjAzOlxcdFxcbiA2MDQ6XFx0I2RlZmluZSBfX0JQRl9ERUNMX0FSR1ModCwgYSkgdCAgIGFcXG4gNjA1OlxcdCNkZWZpbmUgX19CUEZfREVDTF9SRUdTKHQsIGEpIHU2NCBhXFxuIDYwNjpcXHRcXG4gNjA3OlxcdCNkZWZpbmUgX19CUEZfUEFEKG4pXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG4gNjA4OlxcdFxcdF9fQlBGX01BUChuLCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX04sIHU2NCwgX191cl8xLCB1NjQsIF9fdXJfMiwgICAgICAgXFxcXFxcbiA2MDk6XFx0XFx0XFx0ICB1NjQsIF9fdXJfMywgdTY0LCBfX3VyXzQsIHU2NCwgX191cl81KVxcbiA2MTA6XFx0XFxuIDYxMTpcXHQjZGVmaW5lIEJQRl9DQUxMX3goeCwgYXR0ciwgbmFtZSwgLi4uKVxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuIDYxMjpcXHRcXHRzdGF0aWMgX19hbHdheXNfaW5saW5lXFx0XFx0XFx0XFx0XFx0XFx0ICAgICAgIFxcXFxcXG4gNjEzOlxcdFxcdHU2NCBfX19fIyNuYW1lKF9fQlBGX01BUCh4LCBfX0JQRl9ERUNMX0FSR1MsIF9fQlBGX1YsIF9fVkFfQVJHU19fKSk7ICAgXFxcXFxcbiA2MTQ6XFx0XFx0dHlwZWRlZiB1NjQgKCpidGZfIyNuYW1lKShfX0JQRl9NQVAoeCwgX19CUEZfREVDTF9BUkdTLCBfX0JQRl9WLCBfX1ZBX0FSR1NfXykpOyBcXFxcXFxuIDYxNTpcXHRcXHRhdHRyIHU2NCBuYW1lKF9fQlBGX1JFRyh4LCBfX0JQRl9ERUNMX1JFR1MsIF9fQlBGX04sIF9fVkFfQVJHU19fKSk7ICAgIFxcXFxcXG4gNjE2OlxcdFxcdGF0dHIgdTY0IG5hbWUoX19CUEZfUkVHKHgsIF9fQlBGX0RFQ0xfUkVHUywgX19CUEZfTiwgX19WQV9BUkdTX18pKSAgICAgXFxcXFxcbiA2MTc6XFx0XFx0e1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuIDYxODpcXHRcXHRcXHRyZXR1cm4gKChidGZfIyNuYW1lKV9fX18jI25hbWUpKF9fQlBGX01BUCh4LF9fQlBGX0NBU1QsX19CUEZfTixfX1ZBX0FSR1NfXykpO1xcXFxcXG4gNjE5OlxcdFxcdH1cXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICAgICAgXFxcXFxcbiA2MjA6XFx0XFx0c3RhdGljIF9fYWx3YXlzX2lubGluZVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgICBcXFxcXFxuIDYyMTpcXHRcXHR1NjQgX19fXyMjbmFtZShfX0JQRl9NQVAoeCwgX19CUEZfREVDTF9BUkdTLCBfX0JQRl9WLCBfX1ZBX0FSR1NfXykpXFxuIDYyMjpcXHRcXG4gNjIzOlxcdCNkZWZpbmUgX19OT0FUVFJcXG4gNjI0OlxcdCNkZWZpbmUgQlBGX0NBTExfMChuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgwLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuIDYyNTpcXHQjZGVmaW5lIEJQRl9DQUxMXzEobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goMSwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbiA2MjY6XFx0I2RlZmluZSBCUEZfQ0FMTF8yKG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDIsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG4gNjI3OlxcdCNkZWZpbmUgQlBGX0NBTExfMyhuYW1lLCAuLi4pXFx0QlBGX0NBTExfeCgzLCBfX05PQVRUUiwgbmFtZSwgX19WQV9BUkdTX18pXFxuIDYyODpcXHQjZGVmaW5lIEJQRl9DQUxMXzQobmFtZSwgLi4uKVxcdEJQRl9DQUxMX3goNCwgX19OT0FUVFIsIG5hbWUsIF9fVkFfQVJHU19fKVxcbiA2Mjk6XFx0I2RlZmluZSBCUEZfQ0FMTF81KG5hbWUsIC4uLilcXHRCUEZfQ0FMTF94KDUsIF9fTk9BVFRSLCBuYW1lLCBfX1ZBX0FSR1NfXylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDZUMTQ6MTg6NDUuOTA3OTYxMTI1WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcwMTc1Nzc5NjAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIEJQRiBSaW5nIEJ1ZmZlciBTeW1ib2xzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhlc2UgQlBGIHJpbmcgYnVmZmVyIGZ1bmN0aW9ucyBhbmQgbWFraW5nIHN1cmUgSSd2ZSBnb3QgYSBoYW5kbGUgb24gdGhlIGtleSBzeW1ib2xzLiBJdCBzZWVtcyBgbmFtZWAgaXMgcmVhbGx5IGp1c3QgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGFjdHVhbCBmdW5jdGlvbiBuYW1lLCBsaWtlIGBicGZfcmluZ2J1Zl9yZXNlcnZlYC4gQW5kIHRoZW4sIHRoaXMgYF9fX19icGZfcmluZ2J1Zl9yZXNlcnZlYCBpcyBhbiBgX19hbHdheXNfaW5saW5lYCB2ZXJzaW9uLCB3aGljaCBpcyBnb29kIHRvIGtlZXAgaW4gbWluZC4gU28sIHRoZSBcInJlYWxcIiBzeW1ib2xzIEkgbmVlZCB0byBmb2N1cyBvbiBhcmUgYGJwZl9yaW5nYnVmX3Jlc2VydmVgLCBgYnBmX3JpbmdidWZfb3V0cHV0YCwgYW5kIGBicGZfcmluZ2J1Zl9yZXNlcnZlX2R5bnB0cmAuIEFsc28sIHRoZXJlJ3MgYF9fYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIHdoaWNoIGlzIGEgc3RhdGljIGZ1bmN0aW9uIHRoYXQgKmNvdWxkKiBiZSBpbmxpbmVkLiBJIG5lZWQgdG8ga2VlcCB0aGF0IHBvc3NpYmlsaXR5IGluIG1pbmQsIGV2ZW4gdGhvdWdoIGl0J3Mgbm90IGV4cGxpY2l0bHkgbWFya2VkIGZvciBpbmxpbmluZy5cblxuVGhlcmVmb3JlLCBteSBpbW1lZGlhdGUgYWN0aW9uIGlzIHRvIGFkZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZWAsIGBicGZfcmluZ2J1Zl9vdXRwdXRgLCBhbmQgYGJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyYCB0byBgRm9jdXNTeW1ib2xzYC4gVGhhdCdzIHdoZXJlIEkgbmVlZCB0byBzdGFydC5cblxuTm93LCBJJ2xsIG1vdmUgb24gdG8gY2hlY2tpbmcgZm9yIGFueSByZWxhdGVkIGNvbmZpZ3VyYXRpb25zLiBJdCBsb29rcyBsaWtlIGBrZXJuZWwvYnBmL3JpbmdidWYuY2AgZ2V0cyBjb21waWxlZCB3aGVuIGBDT05GSUdfQlBGX1NZU0NBTExgIGlzIGVuYWJsZWQuIEkgc2hvdWxkIGJlIGFibGUgdG8gcmVseSBvbiB0aGF0IGZvciB0aGUgdGltZSBiZWluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6NjM4NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5OCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjUyLjkyNTU0Mjg1NVoiLCJTZXEiOjE4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDgyODg3NzUsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicmluZ2J1ZlxcXFwub1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJrZXJuZWwvYnBmL01ha2VmaWxlXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9icGYvTWFrZWZpbGU9MTE9b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBoYXNodGFiLm8gYXJyYXltYXAubyBwZXJjcHVfZnJlZWxpc3QubyBicGZfbHJ1X2xpc3QubyBscG1fdHJpZS5vIG1hcF9pbl9tYXAubyBibG9vbV9maWx0ZXIub1xcbmtlcm5lbC9icGYvTWFrZWZpbGU6MTI6b2JqLSQoQ09ORklHX0JQRl9TWVNDQUxMKSArPSBsb2NhbF9zdG9yYWdlLm8gcXVldWVfc3RhY2tfbWFwcy5vIHJpbmdidWYubyBicGZfaW5zbl9hcnJheS5vXFxua2VybmVsL2JwZi9NYWtlZmlsZS0xMy1vYmotJChDT05GSUdfQlBGX1NZU0NBTEwpICs9IGJwZl9sb2NhbF9zdG9yYWdlLm8gYnBmX3Rhc2tfc3RvcmFnZS5vXFxuLS1cXG5rZXJuZWwvYnBmL01ha2VmaWxlPTc0PUNGTEFHU19SRU1PVkVfbHBtX3RyaWUubyA9ICQoQ0NfRkxBR1NfRlRSQUNFKVxcbmtlcm5lbC9icGYvTWFrZWZpbGU6NzU6Q0ZMQUdTX1JFTU9WRV9yaW5nYnVmLm8gPSAkKENDX0ZMQUdTX0ZUUkFDRSlcXG5rZXJuZWwvYnBmL01ha2VmaWxlLTc2LUNGTEFHU19SRU1PVkVfcnFzcGlubG9jay5vID0gJChDQ19GTEFHU19GVFJBQ0UpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA2VDE0OjE4OjUyLjk3MzgzNjg4WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0ODk1MjM1MzcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgQlBGIFJpbmcgQnVmZmVyIEZpeCoqXG5cbk9rYXksIHNvIHRoZSBgQ09ORklHX0JQRl9TWVNDQUxMYCBvcHRpb24gaXMgZGVmaW5pdGVseSByZWxldmFudCBoZXJlLCBubyBxdWVzdGlvbi4gVGhpcyBsb29rcyBsaWtlIGEgZnVuY3Rpb25hbCBpbXByb3ZlbWVudCB0aGF0IGFkZHJlc3NlcyBhIHBvdGVudGlhbCBmbGF3IGluIHRoZSBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMuIFNwZWNpZmljYWxseSwgdGhlIGNoYW5nZSBmcm9tIGEgc2ltcGxlIGBwZW5kX3BvcyBcdTAwM2MgcHJvZF9wb3NgIGNvbXBhcmlzb24gdG8gYChsb25nKShwcm9kX3BvcyAtIHBlbmRfcG9zKSBcdTAwM2UgMGAgaXMgc2lnbmlmaWNhbnQuIFRoZSB1c2Ugb2YgYSBzaWduZWQgbG9uZyBkaWZmZXJlbmNlIGlzIGNydWNpYWwgYmVjYXVzZSBpdCBjb3JyZWN0bHkgYWNjb3VudHMgZm9yIHdyYXAtYXJvdW5kIHNjZW5hcmlvcywgd2hpY2ggaXMgZXhhY3RseSB3aGF0IEkgd2FzIGxvb2tpbmcgZm9yLlxuXG5HaXZlbiB0aGlzLCBJJ20gbWFya2luZyBpdCBhcyBXb3J0aEZ1enppbmc7IHRoZSBidWcgZml4IGluIHJlc2VydmF0aW9uIGxvZ2ljIG1ha2VzIGl0IGEgcHJpbWUgdGFyZ2V0LiBJJ2xsIG5lZWQgdG8gZm9jdXMgbXkgZnV6emluZyBlZmZvcnRzIG9uIHRoZXNlIHNwZWNpZmljIHN5bWJvbHM6IGBicGZfcmluZ2J1Zl9yZXNlcnZlYCwgYGJwZl9yaW5nYnVmX291dHB1dGAsIGFuZCBgYnBmX3JpbmdidWZfcmVzZXJ2ZV9keW5wdHJgLiBUaGV5IGFyZSB0aGUgZGlyZWN0IGVudHJ5IHBvaW50cy4gSSdsbCBtYWtlIHN1cmUgdG8gZXhwbGljaXRseSBlbmFibGUgdGhlIGBCUEZfU1lTQ0FMTGAgY29uZmlnIGJlY2F1c2UgdGhlIGNvZGUgYmVpbmcgdG91Y2hlZCBpcyBvbmx5IGFjY2Vzc2libGUgdmlhIEJQRiBoZWxwZXJzLlxuXG5UaGUgcmVhc29uaW5nIGlzIHN0cmFpZ2h0Zm9yd2FyZDogdGhpcyBwYXRjaCBjb3JyZWN0cyBhIGZ1bmN0aW9uYWwgYnVnIHdpdGhpbiB0aGUgQlBGIHJpbmcgYnVmZmVyIHJlc2VydmF0aW9uIGxvZ2ljLCBuYW1lbHkgaGFuZGxpbmcgd3JhcC1hcm91bmQgY29ycmVjdGx5LiBUaGUgbW9kaWZpZWQgY29kZSBpcyBkZWZpbml0ZWx5IHJlYWNoYWJsZSB0aHJvdWdoIEJQRiBoZWxwZXJzLiBUaGlzIGlzIGEgc29saWQsIHRhcmdldGVkIGFwcHJvYWNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3MTcxLCJPdXRwdXRUb2tlbnMiOjEwMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2MCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNlQxNDoxODo1OC40NjMzNjMyNzdaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MTY3NjQ3MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gICAgXCJicGZfcmluZ2J1Zl9vdXRwdXRcIixcbiAgICBcImJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB3cmFwLWFyb3VuZCBjb3JyZWN0bHkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgQlBGIGhlbHBlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQlBGX1NZU0NBTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJicGZfcmluZ2J1Zl9yZXNlcnZlXCIsXG4gICAgXCJicGZfcmluZ2J1Zl9vdXRwdXRcIixcbiAgICBcImJwZl9yaW5nYnVmX3Jlc2VydmVfZHlucHRyXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBmdW5jdGlvbmFsIGJ1ZyBpbiBCUEYgcmluZyBidWZmZXIgcmVzZXJ2YXRpb24gbG9naWMsIHNwZWNpZmljYWxseSBoYW5kbGluZyB3cmFwLWFyb3VuZCBjb3JyZWN0bHkuIFRoZSBtb2RpZmllZCBjb2RlIGlzIHJlYWNoYWJsZSB2aWEgQlBGIGhlbHBlcnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[1] Phase: Succeeded StartedAt: 2026-08-06 14:19:09 +0000 UTC FinishedAt: 2026-08-06 14:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-06 14:19:09 +0000 UTC FinishedAt: 2026-08-06 14:19:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2] Phase: Succeeded StartedAt: 2026-08-06 14:19:09 +0000 UTC FinishedAt: 2026-08-06 18:00:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-06 14:19:09 +0000 UTC FinishedAt: 2026-08-06 18:00:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-06 14:19:09 +0000 UTC FinishedAt: 2026-08-06 14:19:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-06 14:19:09 +0000 UTC FinishedAt: 2026-08-06 14:19:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflow27bxb/series-workflow27bxb-convert-artifact-219906415/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-06 14:19:19 +0000 UTC FinishedAt: 2026-08-06 14:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-06 14:19:19 +0000 UTC FinishedAt: 2026-08-06 14:35:44 +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:*8aad16fd-1d8c-4fe2-86bf-6e5faa842a05,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-workflow27bxb/series-workflow27bxb-convert-artifact-219906415/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": "88f72c35-3dab-443a-a6ae-e6c5903239d7", "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-workflow27bxb/series-workflow27bxb-build-action-2233089589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-06 14:19:19 +0000 UTC FinishedAt: 2026-08-06 14:35:34 +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:*8aad16fd-1d8c-4fe2-86bf-6e5faa842a05,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-workflow27bxb/series-workflow27bxb-convert-artifact-219906415/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": "88f72c35-3dab-443a-a6ae-e6c5903239d7", "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-workflow27bxb/series-workflow27bxb-build-action-2233089589/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-06 14:35:44 +0000 UTC FinishedAt: 2026-08-06 14:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-06 14:35:44 +0000 UTC FinishedAt: 2026-08-06 14:35:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-06 14:35:44 +0000 UTC FinishedAt: 2026-08-06 14:35:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-06 14:35:44 +0000 UTC FinishedAt: 2026-08-06 14:35:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.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-workflow27bxb/series-workflow27bxb-convert-artifact-4069505470/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-06 14:35:54 +0000 UTC FinishedAt: 2026-08-06 14:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-06 14:35:54 +0000 UTC FinishedAt: 2026-08-06 14:37:51 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*88f72c35-3dab-443a-a6ae-e6c5903239d7,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-workflow27bxb/series-workflow27bxb-build-action-2233089589/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-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-06 14:38:01 +0000 UTC FinishedAt: 2026-08-06 14:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-06 14:38:01 +0000 UTC FinishedAt: 2026-08-06 14:38:01 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-06 14:38:01 +0000 UTC FinishedAt: 2026-08-06 14:54:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-06 14:38:01 +0000 UTC FinishedAt: 2026-08-06 14:54:44 +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:*8aad16fd-1d8c-4fe2-86bf-6e5faa842a05,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-workflow27bxb/series-workflow27bxb-convert-artifact-4069505470/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": "eece8bca-41bc-4be1-8946-31924d3c78ac", "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-workflow27bxb/series-workflow27bxb-build-action-1827304210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-06 14:38:01 +0000 UTC FinishedAt: 2026-08-06 14:54:34 +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:*8aad16fd-1d8c-4fe2-86bf-6e5faa842a05,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-workflow27bxb/series-workflow27bxb-convert-artifact-4069505470/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": "eece8bca-41bc-4be1-8946-31924d3c78ac", "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-workflow27bxb/series-workflow27bxb-build-action-1827304210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-06 14:54:44 +0000 UTC FinishedAt: 2026-08-06 14:54:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-06 14:54:44 +0000 UTC FinishedAt: 2026-08-06 14:54:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-06 14:54:44 +0000 UTC FinishedAt: 2026-08-06 14:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-06 14:54:44 +0000 UTC FinishedAt: 2026-08-06 14:57:33 +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:*eece8bca-41bc-4be1-8946-31924d3c78ac,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-workflow27bxb/series-workflow27bxb-build-action-1827304210/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-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 18:00:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 18:00:32 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"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:*88f72c35-3dab-443a-a6ae-e6c5903239d7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eece8bca-41bc-4be1-8946-31924d3c78ac,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-workflow27bxb/series-workflow27bxb-build-action-2233089589/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-workflow27bxb/series-workflow27bxb-build-action-1827304210/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 14:57:53 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 14:57:48 +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-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"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-workflow27bxb/series-workflow27bxb-convert-artifact-2869351363/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 14:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 14:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-06 14:57:43 +0000 UTC FinishedAt: 2026-08-06 14:57:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-06 14:57:53 +0000 UTC FinishedAt: 2026-08-06 18:00:32 +0000 UTC Input: nil Output: nil --------- Name: series-workflow27bxb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-bpf-kasan-gce-corpus.db"],"focus":["bpf"],"focus_symbols":["bpf_ringbuf_reserve","bpf_ringbuf_output","bpf_ringbuf_reserve_dynptr"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"31a420a822ff92e2090bd5d65efe8e34e2d6d9b8","config_name":"upstream-apparmor-kasan.config","enable_configs":["BPF_SYSCALL"],"series_id":"259deb4a-220f-4ade-8ac1-fa647df8b237","tree_name":"bpf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-06 14:57:53 +0000 UTC FinishedAt: 2026-08-06 18:00:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*88f72c35-3dab-443a-a6ae-e6c5903239d7,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*eece8bca-41bc-4be1-8946-31924d3c78ac,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-workflow27bxb/series-workflow27bxb-build-action-2233089589/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-workflow27bxb/series-workflow27bxb-build-action-1827304210/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-workflow27bxb/series-workflow27bxb-convert-artifact-2869351363/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,}