Name: series-workflowt8f4m Phase: Succeeded StartedAt: 2026-07-21 11:13:20 +0000 UTC FinishedAt: 2026-07-21 15:52:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[0] Phase: Succeeded StartedAt: 2026-07-21 11:13:20 +0000 UTC FinishedAt: 2026-07-21 11:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[0].run-triage Phase: Succeeded StartedAt: 2026-07-21 11:13:20 +0000 UTC FinishedAt: 2026-07-21 11:33:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "df2123bf-e2c2-4236-8ad1-2b7d3fbfc144" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "sta_apply_auth_flags" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBpbiBtYWM4MDIxMSB0byBhZGQgY2hlY2tzIGZvciBNTEQgKE11bHRpLUxpbmsgRGV2aWNlKSBhbmQgY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gYmVmb3JlIGluaXRpYWxpemluZyByYXRlIGNvbnRyb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBsb2dpYywgcmVhY2hhYmxlIHZpYSBubDgwMjExIGFuZCBtYWM4MDIxMV9od3NpbSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkOGM1ZGExOTNhNTI3NmI2MDFhMzJlNzAyY2E1ZjBhMDE1YjM0MjU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMTE6MzI6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAzYjU4YWY1OWY3ZTQyOS4uZDQzMzFmYmFlMGQ4OTIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTIxNDgsOCAmIzQzOzIxNDgsMTQgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbiYjNDM7XHRcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXG4mIzQzO1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRcdFx0cmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xuIFx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaW4gbWFjODAyMTEgdG8gYWRkIGNoZWNrcyBmb3IgTUxEIChNdWx0aS1MaW5rIERldmljZSkgYW5kIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXppbmcgcmF0ZSBjb250cm9sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgbG9naWMsIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBhbmQgbWFjODAyMTFfaHdzaW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOGM1ZGExOTNhNTI3NmI2MDFhMzJlNzAyY2E1ZjBhMDE1YjM0MjU2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjEgMTE6MzI6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmMKaW5kZXggM2I1OGFmNTlmN2U0MjkuLmQ0MzMxZmJhZTBkODkyIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2NmZy5jCkBAIC0yMTQ4LDggJiM0MzsyMTQ4LDE0IEBAIHN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCSAqIHdlbGwuIFNvbWUgZHJpdmVycyByZXF1aXJlIHJhdGUgY29udHJvbCBpbml0aWFsaXplZAogCQkgKiBiZWZvcmUgZHJ2X3N0YV9zdGF0ZSgpIGlzIGNhbGxlZC4KIAkJICovCi0JCWlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpCiYjNDM7CQlpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7CiYjNDM7CQkJaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZikgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKAomIzQzOwkJCQkgICAgc3RhLSZndDtzZGF0YS0mZ3Q7dmlmLmJzc19jb25mLmNoYW5jdHhfY29uZikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQkJcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTsKJiM0MzsJCX0KIAogCQlyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7CiAJCWlmIChyZXQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDODAyMTEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AsIHNwZWNpZmljYWxseSB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYWRkIGEgbmV3IGNoZWNrLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGNoYW5nZXMgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIGBtYWM4MDIxMWAsIGFmZmVjdGluZyBob3cgd2UgaGFuZGxlIGF1dGhlbnRpY2F0aW9uIGZsYWdzIGZvciBzdGF0aW9ucy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQ6CgpgYGBjCgkJaWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkgewoJCQlpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKCZhbXA7c3RhLSZndDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CgkJCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKAoJCQkJICAgIHN0YS0mZ3Q7c2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKQoJCQkJcmV0dXJuIC1FSU5WQUw7CgoJCQlyYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpOwoJCX0KYGBgCgpFc3NlbnRpYWxseSwgaWYgYSBzdGF0aW9uIGlzbiYjMzk7dCB1c2luZyByYXRlIGNvbnRyb2wsIGFuZCBpdCYjMzk7cyAqbm90KiBhIG1lc2ggbGluaywgYW5kIGl0ICpkb2VzbiYjMzk7dCogaGF2ZSBhIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uLCB0aGVuIGl0JiMzOTtzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIFRoaXMgdHJpZ2dlcnMgYHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSlgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIHBvdGVudGlhbGx5IGltcGFjdHMgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgd2hlcmUgdGhlc2UgY29uZGl0aW9ucyBhcmUgbm90IG1ldCwgc28gYSBkZWVwIGRpdmUgaW50byB0aGUgaW1wbGljYXRpb25zIGlzIHdhcnJhbnRlZC4gVGhpcyBpcyBmdW5jdGlvbmFsbHkgYSBjaGFuZ2UgaW4gdGhlIGRyaXZlciBhbmQgcmVhY2hhYmxlIHZpYSB0aGUgYG1hYzgwMjExX2h3c2ltYCBtb2R1bGUsIHdoaWNoIG1lYW5zIEkgY2FuIHJlYWRpbHkgdGVzdCB0aGlzIG5ldyBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjaGVjayYjMzk7cyBwdXJwb3NlIGFuZCBob3cgaXQgYWx0ZXJzIHRoZSBleGlzdGluZyBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGFuZCB0cmFjZSBpdHMgY2FsbGVycyB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBhbmQgdGhlIHNpdHVhdGlvbnMgaW4gd2hpY2ggaXQgd2lsbCBiZSBleGVjdXRlZCB3aWxsIGJlIGNyaXRpY2FsLiBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB1bmRlciB3aGljaCBjaXJjdW1zdGFuY2VzIHRoaXMgcGFydGljdWxhciBjb25kaXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yMDEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3BfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI5OnN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEzMC1cdFx0XHRcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNDU1PXN0YXRpYyBpbnQgc3RhX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI1MDAtXHQgICAgICAoc2V0IFx1MDAyNiBCSVQoTkw4MDIxMV9TVEFfRkxBR19BU1NPQ0lBVEVEKSkpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUwMTpcdFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTAyLVx0XHRpZiAocmV0KVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjIzLVx0ICAgIHNldCBcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNjI0Olx0XHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xubmV0L21hYzgwMjExL2NmZy5jLTI2MjUtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgQXV0aGVudGljYXRpb24gRmxhZ3MgQXBwbGljYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzICp3aGVyZSogaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20uIEl0IGxvb2tzIGxpa2UgYHN0YV9hcHBseV9wYXJhbWV0ZXJzYCBpcyB0aGUgbGlrZWx5IGN1bHByaXQsIHdoaWNoIG1ha2VzIHNlbnNlLiBCYXNlZCBvbiB0aGUgbmFtaW5nLCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgIHNlZW1zIGxpa2UgdGhlIGZ1bmN0aW9uIHRoYXQgd291bGQgaGFuZGxlIGFwcGx5aW5nIG5ldyBwYXJhbWV0ZXJzIHRvIGEgc3RhdGlvbi4gVGhhdCBmdW5jdGlvbiBpcyBwcm9iYWJseSBiZWluZyB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGxpa2UgYG5sODAyMTFfc2V0X3N0YXRpb25gIG9yIGEgc2ltaWxhciBmdW5jdGlvbiBjYWxsLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGNoYWluLiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSBmbG93IGZvciBzZXR0aW5nIHN0YXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYW5kIGF1dGhlbnRpY2F0aW9uIGlzIGEgbWFqb3IgYXNwZWN0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9MjI2Nj1zdGF0aWMgaW50IHN0YV9saW5rX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI0NTQtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjQ1NTpzdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTI0NTYtXHRcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjYzNj1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjg2LVx0LyogVGhvdWdoIHRoZSBtdXRleCBpcyBub3QgbmVlZGVkIGhlcmUgKHNpbmNlIHRoZSBzdGF0aW9uIGlzIG5vdFxubmV0L21hYzgwMjExL2NmZy5jOjI2ODc6XHQgKiB2aXNpYmxlIHlldCksIHN0YV9hcHBseV9wYXJhbWV0ZXJzIChhbmQgaW5uZXIgZnVuY3Rpb25zKSByZXF1aXJlXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY4OC1cdCAqIHRoZSBtdXRleCBkdWUgdG8gb3RoZXIgcGF0aHMuXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY4OS1cdCAqL1xubmV0L21hYzgwMjExL2NmZy5jOjI2OTA6XHRlcnIgPSBzdGFfYXBwbHlfcGFyYW1ldGVycyhsb2NhbCwgc3RhLCBwYXJhbXMpO1xubmV0L21hYzgwMjExL2NmZy5jLTI2OTEtXHRpZiAoZXJyKSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI3MDctXHQvKlxubmV0L21hYzgwMjExL2NmZy5jOjI3MDg6XHQgKiBpZWVlODAyMTFfbmFuX3VwZGF0ZV9uZGlfY2FycmllciB3YXMgY2FsbGVkIGZyb20gc3RhX2FwcGx5X3BhcmFtZXRlcnMsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcwOS1cdCAqIGJ1dCB0aGVuIHdlIGRpZCBub3QgaGF2ZSB0aGUgU1RBIGluIHRoZSBsaXN0LlxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNzg5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI4ODItXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjg4MzpcdGVyciA9IHN0YV9hcHBseV9wYXJhbWV0ZXJzKGxvY2FsLCBzdGEsIHBhcmFtcyk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg4NC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCB0aGlua2luZyBpdCB0aHJvdWdoIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBTdGF0aW9uIFBhcmFtZXRlciBBcHBsaWNhdGlvbioqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBJJiMzOTttIHRyYWNpbmcgc29tZSBpbnRlcmFjdGlvbnMgcmVsYXRlZCB0byBzdGF0aW9uIG1hbmFnZW1lbnQgaW4gdGhlIDgwMi4xMSBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGllZWU4MDIxMV9hZGRfc3RhdGlvbmAgYW5kIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gIGFyZSBjYWxsaW5nIGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhlc2UgZnVuY3Rpb25zLCBhbmQgdGhlcmVmb3JlIGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AsIHVsdGltYXRlbHkgaW50ZXJhY3Qgd2l0aCBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLiBJIGtub3cgdGhlc2UgYXJlIGFsbCBsaWtlbHkgcmVhY2hhYmxlIHZpYSBgbmw4MDIxMWAsIHdoaWNoIGlzbiYjMzk7dCBzdXJwcmlzaW5nLgoKR2l2ZW4gdGhpcyBwYXRoLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIGJlaGF2aW9yIGlzIGNvbmZpZ3VyZWQuIEkga25vdyB0aGF0IHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gaXMgYE1BQzgwMjExYC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZXNlIHN0YXRpb24gcGFyYW1ldGVyIGFwcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBhc3BlY3RzIGFyZSBjb250cm9sbGVkIHRoZXJlIGFuZCBob3cgdGhlc2UgY2FsbHMgdHJhbnNsYXRlIGludG8gYWN0dWFsIGJlaGF2aW9yIGJhc2VkIG9uIHRoaXMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BQzgwMjExIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKioKCk9rYXksIHNvIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBkZWZpbml0ZWx5IE1BQzgwMjExLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZC4gVGhlIG1lbnRpb24gb2YgTUFDODAyMTFfSFdTSU0gaXMgdXNlZnVsOyB3ZSBjYW4gbGV2ZXJhZ2UgdGhhdCBmb3IgdGhvcm91Z2ggdGVzdGluZy4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBwYXRjaCBpdHNlbGYsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSBtYWtlIHN1cmUgd2UgY292ZXIgYWxsIG91ciBiYXNlcy4KClJpZ2h0LCB0aGUgY29yZSBjaGFuZ2UgaXMgaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AsIHNwZWNpZmljYWxseSB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uZmlybSBmcm9tIHRoZSBvdXRzZXQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZilgLiBBaCwgTUxELi4uIE11bHRpLUxpbmsgRGV2aWNlLiBUaGF0JiMzOTtzIFdpLUZpIDcgdGVycml0b3J5LgoKVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgTUxEIHRoYXQmIzM5O3MgcmVsYXRlZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHBvc3NpYmx5IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBmbGFnIG9yIHNldHRpbmcgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIHRoaXMuIE1ha2luZyBzdXJlIHRoaXMgZmVhdHVyZSBpcyBwcm9wZXJseSBlbmFibGVkIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGxpY2F0aW9uIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3ZpZl9pc19tbGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9hcC5jPTUxPWllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvYXAuYy02OC1cbm5ldC9tYWM4MDIxMS9hcC5jOjY5Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL2FwLmMtNzAtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc9aWVlZTgwMjExX2xpbmtfb3JfZGVmbGluayhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgaW50IGxpbmtfaWQsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM3LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9jZmcuYzozODpcdFx0aWYgKHJlcXVpcmVfdmFsaWQgXHUwMDI2XHUwMDI2IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzktXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIxMjk9c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1MS1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjIxNTI6XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUzLVx0XHRcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTEyPWludCBfX2llZWU4MDIxMV9yZXF1ZXN0X3NtcHNfbWdkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc0LVx0XHRcdFx0XHQgYXAsIGFwLFxubmV0L21hYzgwMjExL2NmZy5jOjM5NzU6XHRcdFx0XHRcdCBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpID9cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc2LVx0XHRcdFx0XHQgbGluay1cdTAwM2VsaW5rX2lkIDogLTEpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTU4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX2NsaWVudChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg3LVxubmV0L21hYzgwMjExL2NmZy5jOjQ5ODg6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL2NmZy5jLTQ5ODktXHRcdGlmIChzdGEtXHUwMDNlc3RhLm1sbykge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQyLVx0bWVtY3B5KG51bGxmdW5jLVx1MDAzZWFkZHIxLCBzdGEtXHUwMDNlc3RhLmFkZHIsIEVUSF9BTEVOKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDQzOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLm1sbykge1xubmV0L21hYzgwMjExL2NmZy5jLTUwNDQtXHRcdG1lbWNweShudWxsZnVuYy1cdTAwM2VhZGRyMiwgY29uZi1cdTAwM2VhZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTEzOS1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0MDpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQxLVx0XHRcdF9zZGF0YV9pbmZvKChsaW5rKS1cdTAwM2VzZGF0YSwgXCYjMzQ7W2xpbmsgJWRdIFwmIzM0OyBmbXQsXHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0OC1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0OTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTUwLVx0XHRcdF9zZGF0YV9lcnIoKGxpbmspLVx1MDAzZXNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTU5LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTYwOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTYxLVx0XHRcdF9zZGF0YV9pbmZvKHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCwgbGlua19pZCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY3LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTY4Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KHNkYXRhKS1cdTAwM2V2aWYpKVx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY5LVx0XHRcdF9zZGF0YV9kYmcocHJpbnQsIHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTczOT1pZWVlODAyMTFfZ2V0X3NiYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDQtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNzQ1Olx0V0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDYtXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTYyLVxubmV0L21hYzgwMjExL2lmYWNlLmM6NTYzOlx0V0FSTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpLFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTY0LVx0ICAgICBcJiMzNDtkZXN0cm95aW5nIGludGVyZmFjZSB3aXRoIHZhbGlkIGxpbmtzIDB4JTA0eFxcblwmIzM0Oyxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTc0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg3LVx0LyogZm9yIG5vdywgZG9uJiMzOTt0IHN1cHBvcnQgY2hhbmdpbmcgd2hpbGUgbGlua3MgZXhpc3QgKi9cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5ODg6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODktXHRcdHJldHVybiAtRUJVU1k7XG4tLVxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Mi1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQzOlx0V0FSTl9PTl9PTkNFKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpO1xubmV0L21hYzgwMjExL21haW4uYy0zNDQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0yNDE0PWllZWU4MDIxMV9hc3NvY19hZGRfbWxfZWxlbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MjgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI0Mjk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MzAtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODI9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2MzktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI2NDA6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0yNjQxLVx0XHQvKiBjb25zaWRlciB0aGUgbXVsdGktbGluayBlbGVtZW50IHdpdGggU1RBIHByb2ZpbGUgKi9cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQzOTQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9hc3NvY2lhdGVkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQxNTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTYtXHRcdCAgICAhKGllZWU4MDIxMV92aWZfdXNhYmxlX2xpbmtzKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2IEJJVChsaW5rX2lkKSkpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDM2LVxubmV0L21hYzgwMjExL21sbWUuYzo0NDM3Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzOC1cdFx0Zm9yIChsaW5rX2lkID0gMDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NjgtXHQvKiBsZWF2ZSB0aGlzIGhlcmUgdG8gbm90IGNoYW5nZSBvcmRlcmluZyBpbiBub24tTUxPIGNhc2VzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NzAtXHRcdGllZWU4MDIxMV9yZWNhbGNfc21wcyhzZGF0YSwgXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluayk7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00NDc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZfcmVzZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDgwLVxubmV0L21hYzgwMjExL21sbWUuYzo0NDgxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODItXHQgICAgIShzZGF0YS1cdTAwM2V1Lm1nZC5yZWNvbmYuYWRkZWRfbGlua3MgfFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzMi1cdC8qIGZpbmFsbHkgcmVzZXQgYWxsIEJTUyAvIGNvbmZpZyBwYXJhbWV0ZXJzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MzM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzQtXHRcdGNoYW5nZWQgfD0gaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTctXHQgICAgICAgc2l6ZW9mKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5tdV9ncm91cC5wb3NpdGlvbikpO1xubmV0L21hYzgwMjExL21sbWUuYzo0NjU4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy00NjU5LVx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX01VX0dST1VQUztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzEtXHRzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYucW9zID0gZmFsc2U7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NzI6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3My1cdFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9RT1M7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00OTcyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfYXBfcHJvYmVyZXFfZ2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4NC1cdGlmIChXQVJOX09OKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDk4NTpcdFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpKVxubmV0L21hYzgwMjExL21sbWUuYy00OTg2LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzMDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzUtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjUzMzY6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzctXHRcdFx0XHRkYXRhLmFwX21sZF9hZGRyID0gYXNzb2NfZGF0YS1cdTAwM2VhcF9hZGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkyND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NDgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY5NDk6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy02OTUwLVx0XHRpZiAoIWVsZW1zLVx1MDAzZW1sX2Jhc2ljKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzAxMTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTItXHRcdFx0bGlua19pbmZvKGxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03MTM1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MjcyLVxubmV0L21hYzgwMjExL21sbWUuYzo3MjczOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy03Mjc0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfbWxlX2Jhc2ljX2NvbW1vbl9pbmZvICpjb21tb247XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MzM5LVxubmV0L21hYzgwMjExL21sbWUuYzo3MzQwOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzM0MS1cdFx0ZXRoZXJfYWRkcl9jb3B5KGFwX21sZF9hZGRyLCBzZGF0YS1cdTAwM2V2aWYuY2ZnLmFwX2FkZHIpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzYzMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25maWd1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYzOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzY0MDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fCAhZWxlbXMtXHUwMDNlbWxfcmVjb25mKVxubmV0L21hYzgwMjExL21sbWUuYy03NjQxLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03ODAxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2Fkdl90dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwNy1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzgwODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwOS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA1Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MTE3LVx0aWYgKGlmbWdkLVx1MDAzZWFzc29jX2RhdGEgXHUwMDI2XHUwMDI2IGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbmVlZF9iZWFjb24gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTg6XHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTktXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbGlua1swXS5ic3MpKSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04NTQxPWludCBpZWVlODAyMTFfcmVxX25lZ190dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0Ni1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODU0NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ4LVx0ICAgICEoc2RhdGEtXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3MDk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODcyMTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMi1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODc3Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04Nzc2LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODc3NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc4LVx0ICAgIG1nbXQtXHUwMDNldS5hY3Rpb24udHRsbV9yZXMuZGlhbG9nX3Rva2VuICE9IHNkYXRhLVx1MDAzZXUubWdkLmRpYWxvZ190b2tlbl9hbGxvYylcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg4OTU9c3RhdGljIGludCBpZWVlODAyMTFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTItXHRpZiAoYXV0aF9kYXRhLVx1MDAzZWFsZ29yaXRobSA9PSBXTEFOX0FVVEhfRVBQS0UgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjg5MTM6XHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNC1cdCAgICAhY2ZnODAyMTFfZmluZF9leHRfZWxlbShXTEFOX0VJRF9FWFRfRUhUX01VTFRJX0xJTkssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz05ODQyPWludCBpZWVlODAyMTFfbWdkX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0MC0gZXJyX2NsZWFyOlxubmV0L21hYzgwMjExL21sbWUuYzoxMDA0MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0xMDA0Mi1cdFx0ZXRoX3plcm9fYWRkcihzZGF0YS1cdTAwM2VkZWZsaW5rLnUubWdkLmJzc2lkKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODY4PWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODQtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwODg1Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg2LVx0ICAgIGxlbiBcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShtbF9yZWNvbmZfcmVzcCkgfHxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExMzMwPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQxLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTM0MjpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0My1cdCAgICAhKHNkYXRhLVx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXHUwMDI2XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTU1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWdkX2VwY3Nfc3VwcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYwLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTU2MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNjI4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9lcGNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzYtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNjM3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8ICFlbGVtcy1cdTAwM2VtbF9lcGNzKVxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzOC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE3NDY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzQ5LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE3NTA6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NTEtXHQgICAgIXNkYXRhLVx1MDAzZXUubWdkLmVwY3MuZW5hYmxlZClcbi0tXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTMxPXZvaWQgcmF0ZV9jb250cm9sX3JhdGVfaW5pdChzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYy00NC1cdC8qIFNXIHJhdGUgY29udHJvbCBpc24mIzM5O3Qgc3VwcG9ydGVkIHdpdGggTUxPIHJpZ2h0IG5vdyAqL1xubmV0L21hYzgwMjExL3JhdGUuYzo0NTpcdGlmIChXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSlcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDYtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xNTIxPWllZWU4MDIxMV9yeF9oX2NoZWNrX2R1cChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTAtXG5uZXQvbWFjODAyMTEvcnguYzoxNTUxOlx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTItXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI2ODQ9Ym9vbCBpZWVlODAyMTFfaXNfb3VyX2FkZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjY5Mi1cbm5ldC9tYWM4MDIxMS9yeC5jOjI2OTM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvcnguYy0yNjk0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDM0MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZGF0YV9zZXRfc3RhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDM1Ni1cdGlmIChsaW5rX2lkIFx1MDAzYyAwKSB7XG5uZXQvbWFjODAyMTEvcnguYzo0MzU3Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTgtXHRcdCAgICBzdGEgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLnZhbGlkX2xpbmtzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTUyOTY9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01MzE5LVx0XHRcdGxpbmtfaWQgPSBzdGF0dXMtXHUwMDNlbGlua19pZDtcbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjA6XHRcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXHRcdFx0ICAgc3RhdHVzLVx1MDAzZWZyZXEpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTE2OD1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA1LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6MjA2Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2Nhbl9zZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNy1cdFx0XHRpZiAocnhfc3RhdHVzLVx1MDAzZWxpbmtfdmFsaWQpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTczMT1zdGF0aWMgaW50IF9faWVlZTgwMjExX3N0YXJ0X3NjYW4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3NjYW4uYy03NDUtXHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6NzQ2Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2IHJlcS1cdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3NjYW4uYy03NDctXHQgICAgIShzZGF0YS1cdTAwM2V2aWYuYWN0aXZlX2xpbmtzIFx1MDAyNiBCSVQocmVxLVx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCkpKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTgyMD1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTg0Ny1cdGlmICh1bmxpa2VseShpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmM6ODQ4Olx0XHQgICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKGluZm8tXHUwMDNlY29udHJvbC52aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmMtODQ5LVx0XHQgICAgIGluZm8tXHUwMDNlY29udHJvbC52aWYtXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkpIHtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjY3LVxubmV0L21hYzgwMjExL3R4LmM6MjY2ODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjktXHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjY4NC1cdFx0fVxubmV0L21hYzgwMjExL3R4LmM6MjY4NTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yNjg2LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX3NkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTI3MDItXG5uZXQvbWFjODAyMTEvdHguYzoyNzAzOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgc3RhIFx1MDAyNlx1MDAyNiAhc3RhLVx1MDAzZXN0YS5tbG8pIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDQtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbms7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjg4MS1cdFx0XHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XG5uZXQvbWFjODAyMTEvdHguYzoyODgyOlx0XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yODgzLVx0XHRcdHJldCA9IC1FTk9UQ09OTjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMDc4PXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zMTI3LVxubmV0L21hYzgwMjExL3R4LmM6MzEyODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtMzEyOS1cdFx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMyMDYtXHRcdGJ1aWxkLmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjEpO1xubmV0L21hYzgwMjExL3R4LmM6MzIwNzpcdFx0aWYgKHN0YS1cdTAwM2VzdGEubWxvIHx8ICFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0zMjA4LVx0XHRcdG1lbWNweShoZHItXHUwMDNlYWRkcjIsIHNkYXRhLVx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDU2MT1uZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODMtXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbm5ldC9tYWM4MDIxMS90eC5jOjQ1ODQ6XHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NTg1LVx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX2NoZWNrX21jYXN0X29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDc1NS1cbm5ldC9tYWM4MDIxMS90eC5jOjQ3NTY6XHRpZiAoKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NzU3LVx0ICAgICAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDkxMT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDkyNC1cdFx0LyogdXBkYXRlIGJhbmQgb25seSBmb3Igbm9uLU1MRCAqL1xubmV0L21hYzgwMjExL3R4LmM6NDkyNTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy00OTI2LVx0XHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjM5Nj12b2lkIF9faWVlZTgwMjExX3R4X3NrYl90aWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02NDEzLVxubmV0L21hYzgwMjExL3R4LmM6NjQxNDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtNjQxNS1cdFx0bGluayA9IDA7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjQ1Mz12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0NjItXHRcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcbm5ldC9tYWM4MDIxMS90eC5jOjY0NjM6XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy02NDY0LVx0XHRXQVJOX09OKGxpbmtfaWQgXHUwMDNlPSAwKTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzQ9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0Mi1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE0MzpcdGJvb2wgbXVsdGlfbGluayA9IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZik7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDQtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTg4Mj1pbnQgaWVlZTgwMjExX3JlY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3MS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjA3MjpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3My1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpvbGRbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXSA9IHtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMjgtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMjk6XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMC1cdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0lETEU7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMzLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMzQ6XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzUtXHRcdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0FTU09DIHxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzEtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxNzI6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzMtXHRcdFx0XHRpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4NS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE4NjpcdFx0XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODctXHRcdFx0XHRcdGllZWU4MDIxMV9yZWNvbmZpZ19hcF9saW5rcyhsb2NhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4MDYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqTUxEIFN1cHBvcnQgaW4gbWFjODAyMTEgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyBNTEQgc3VwcG9ydCBpcyBlc3NlbnRpYWxseSBiYWtlZCBpbnRvIG1hYzgwMjExIHRoZXNlIGRheXMuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBmbGFncyBvciBob29wcyB0byBqdW1wIHRocm91Z2gsIGFzc3VtaW5nIEkmIzM5O20gdXNpbmcgYSBtb2Rlcm4gZW5vdWdoIHZlcnNpb24uIFRoYXQmIzM5O3MgZ29vZCBuZXdzLCBzaW1wbGlmaWVzIHRoaW5ncyBjb25zaWRlcmFibHkuIEhvd2V2ZXIsIGJlZm9yZSBJIGdldCB0b28gY29tZm9ydGFibGUsIEkgc2hvdWxkIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgc3VidGxlLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGF0ICppZWVlODAyMTFfdmlmX2lzX21sZCogZGVmaW5pdGlvbiBqdXN0IHRvIGJlIDEwMCUgY2VydGFpbiB0aGVyZSBpc24mIzM5O3Qgc29tZSBjb3JuZXIgY2FzZSBvciBoaWRkZW4gZGVwZW5kZW5jeSBJJiMzOTttIG92ZXJsb29raW5nLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfdmlmX2lzX21sZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2FwLmM9NTE9aWVlZTgwMjExX3J4X2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTY4LVxubmV0L21hYzgwMjExL2FwLmM6Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvYXAuYy03MC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNz1pZWVlODAyMTFfbGlua19vcl9kZWZsaW5rKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzctXHRcdCAqL1xubmV0L21hYzgwMjExL2NmZy5jOjM4Olx0XHRpZiAocmVxdWlyZV92YWxpZCBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOS1cdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjEyOT1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUxLVx0XHRpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MjpcdFx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2NmZy5jLTIxNTMtXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM5MTI9aW50IF9faWVlZTgwMjExX3JlcXVlc3Rfc21wc19tZ2Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM5NzQtXHRcdFx0XHRcdCBhcCwgYXAsXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk3NTpcdFx0XHRcdFx0IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgP1xubmV0L21hYzgwMjExL2NmZy5jLTM5NzYtXHRcdFx0XHRcdCBsaW5rLVx1MDAzZWxpbmtfaWQgOiAtMSk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ5NTg9c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfY2xpZW50KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5ODctXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDk4ODpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk4OS1cdFx0aWYgKHN0YS1cdTAwM2VzdGEubWxvKSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTUwNDItXHRtZW1jcHkobnVsbGZ1bmMtXHUwMDNlYWRkcjEsIHN0YS1cdTAwM2VzdGEuYWRkciwgRVRIX0FMRU4pO1xubmV0L21hYzgwMjExL2NmZy5jOjUwNDM6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgIXN0YS1cdTAwM2VzdGEubWxvKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTA0NC1cdFx0bWVtY3B5KG51bGxmdW5jLVx1MDAzZWFkZHIyLCBjb25mLVx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaD0xMjU9ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTM5LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQwOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KGxpbmspLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpICAgICAgICAgIFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNDEtXHRcdFx0X3NkYXRhX2luZm8oKGxpbmspLVx1MDAzZXNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQ4LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQ5Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KGxpbmspLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpICAgICAgICAgIFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTAtXHRcdFx0X3NkYXRhX2VycigobGluayktXHUwMDNlc2RhdGEsIFwmIzM0O1tsaW5rICVkXSBcJiMzNDsgZm10LFx0XFxcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTktXHRkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjA6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjEtXHRcdFx0X3NkYXRhX2luZm8oc2RhdGEsIFwmIzM0O1tsaW5rICVkXSBcJiMzNDsgZm10LCBsaW5rX2lkLFx0XFxcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjctXHRkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjg6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjYoc2RhdGEpLVx1MDAzZXZpZikpXHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjktXHRcdFx0X3NkYXRhX2RiZyhwcmludCwgc2RhdGEsIFwmIzM0O1tsaW5rICVkXSBcJiMzNDsgZm10LFx0XFxcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xNzM5PWllZWU4MDIxMV9nZXRfc2JhbmQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0NC1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3NDU6XHRXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0Ni1cbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjItXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1NjM6XHRXQVJOKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZiksXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjQtXHQgICAgIFwmIzM0O2Rlc3Ryb3lpbmcgaW50ZXJmYWNlIHdpdGggdmFsaWQgbGlua3MgMHglMDR4XFxuXCYjMzQ7LFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE5NzQ9c3RhdGljIGludCBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODctXHQvKiBmb3Igbm93LCBkb24mIzM5O3Qgc3VwcG9ydCBjaGFuZ2luZyB3aGlsZSBsaW5rcyBleGlzdCAqL1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTk4ODpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk4OS1cdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jPTMzNj12b2lkIGllZWU4MDIxMV9ic3NfaW5mb19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQyLVxubmV0L21hYzgwMjExL21haW4uYzozNDM6XHRXQVJOX09OX09OQ0UoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSk7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0NC1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTQ9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQyOC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjQyOTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQzMC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjU4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjYzOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjY0MDpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2NDEtXHRcdC8qIGNvbnNpZGVyIHRoZSBtdWx0aS1saW5rIGVsZW1lbnQgd2l0aCBTVEEgcHJvZmlsZSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDM5ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Fzc29jaWF0ZWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDE0LVxubmV0L21hYzgwMjExL21sbWUuYzo0NDE1Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNi1cdFx0ICAgICEoaWVlZTgwMjExX3ZpZl91c2FibGVfbGlua3MoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjYgQklUKGxpbmtfaWQpKSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MzYtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Mzc6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy00NDM4LVx0XHRmb3IgKGxpbmtfaWQgPSAwO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ2OC1cdC8qIGxlYXZlIHRoaXMgaGVyZSB0byBub3QgY2hhbmdlIG9yZGVyaW5nIGluIG5vbi1NTE8gY2FzZXMgKi9cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQ2OTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ3MC1cdFx0aWVlZTgwMjExX3JlY2FsY19zbXBzKHNkYXRhLCBcdTAwMjZzZGF0YS1cdTAwM2VkZWZsaW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ0NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZl9yZXNldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODAtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0ODE6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ4Mi1cdCAgICAhKHNkYXRhLVx1MDAzZXUubWdkLnJlY29uZi5hZGRlZF9saW5rcyB8XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00NTA4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfZGlzYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NjMyLVx0LyogZmluYWxseSByZXNldCBhbGwgQlNTIC8gY29uZmlnIHBhcmFtZXRlcnMgKi9cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDYzMzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzNC1cdFx0Y2hhbmdlZCB8PSBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY1Ny1cdCAgICAgICBzaXplb2Yoc2RhdGEtXHUwMDNldmlmLmJzc19jb25mLm11X2dyb3VwLnBvc2l0aW9uKSk7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NTg6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTktXHRcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfTVVfR1JPVVBTO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3MS1cdHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5xb3MgPSBmYWxzZTtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDY3MjpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy00NjczLVx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX1FPUztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ5NzI9c3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9hcF9wcm9iZXJlcV9nZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00OTg0LVx0aWYgKFdBUk5fT04oc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fFxubmV0L21hYzgwMjExL21sbWUuYzo0OTg1Olx0XHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ5ODYtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NTMwMD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTMzNjpcdFx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNy1cdFx0XHRcdGRhdGEuYXBfbWxkX2FkZHIgPSBhc3NvY19kYXRhLVx1MDAzZWFwX2FkZHI7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz02OTI0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjk0OC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6Njk0OTpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NTAtXHRcdGlmICghZWxlbXMtXHUwMDNlbWxfYmFzaWMpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MDEwLVxubmV0L21hYzgwMjExL21sbWUuYzo3MDExOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMi1cdFx0XHRsaW5rX2luZm8obGluayxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTcxMzU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzItXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcyNzM6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzQtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9tbGVfYmFzaWNfY29tbW9uX2luZm8gKmNvbW1vbjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTczMzktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjczNDA6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy03MzQxLVx0XHRldGhlcl9hZGRyX2NvcHkoYXBfbWxkX2FkZHIsIHNkYXRhLVx1MDAzZXZpZi5jZmcuYXBfYWRkcik7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03NjMxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZpZ3VyYXRpb24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03NjM5LVxubmV0L21hYzgwMjExL21sbWUuYzo3NjQwOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8ICFlbGVtcy1cdTAwM2VtbF9yZWNvbmYpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2NDEtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc4MDE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfYWR2X3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03ODA3LVxubmV0L21hYzgwMjExL21sbWUuYzo3ODA4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy03ODA5LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04MDU2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTctXHRpZiAoaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YSBcdTAwMjZcdTAwMjYgaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YS1cdTAwM2VuZWVkX2JlYWNvbiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExODpcdCAgICAhV0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODExOS1cdCAgICBpZWVlODAyMTFfcnhfb3VyX2JlYWNvbihic3NpZCwgaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YS1cdTAwM2VsaW5rWzBdLmJzcykpIHtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg1NDE9aW50IGllZWU4MDIxMV9yZXFfbmVnX3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04NTQ2LVxubmV0L21hYzgwMjExL21sbWUuYzo4NTQ3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg1NDgtXHQgICAgIShzZGF0YS1cdTAwM2V2aWYuY2ZnLm1sZF9jYXBhX29wIFx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODcwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04NzIwLVxubmV0L21hYzgwMjExL21sbWUuYzo4NzIxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy04NzIyLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04NzczPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX25lZ190dGxtX3JlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzYte1xubmV0L21hYzgwMjExL21sbWUuYzo4Nzc3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzgtXHQgICAgbWdtdC1cdTAwM2V1LmFjdGlvbi50dGxtX3Jlcy5kaWFsb2dfdG9rZW4gIT0gc2RhdGEtXHUwMDNldS5tZ2QuZGlhbG9nX3Rva2VuX2FsbG9jKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODg5NT1zdGF0aWMgaW50IGllZWU4MDIxMV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxMi1cdGlmIChhdXRoX2RhdGEtXHUwMDNlYWxnb3JpdGhtID09IFdMQU5fQVVUSF9FUFBLRSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxMzpcdCAgICBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL21sbWUuYy04OTE0LVx0ICAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTk4NDI9aW50IGllZWU4MDIxMV9tZ2RfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQwLSBlcnJfY2xlYXI6XG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwMDQxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQyLVx0XHRldGhfemVyb19hZGRyKHNkYXRhLVx1MDAzZWRlZmxpbmsudS5tZ2QuYnNzaWQpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4Njg9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMDg4NC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTA4ODU6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODYtXHQgICAgbGVuIFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKG1sX3JlY29uZl9yZXNwKSB8fFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTEzMzA9aW50IGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEzNDEtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExMzQyOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQzLVx0ICAgICEoc2RhdGEtXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNTU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9tZ2RfZXBjc19zdXBwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjAtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNTYxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy0xMTU2Mi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE2Mjg9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX2VwY3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzNi1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE2Mzc6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHwgIWVsZW1zLVx1MDAzZW1sX2VwY3MpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNjM4LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTc0Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19lcGNzX3RlYXJkb3duKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NDkte1xubmV0L21hYzgwMjExL21sbWUuYzoxMTc1MDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy0xMTc1MS1cdCAgICAhc2RhdGEtXHUwMDNldS5tZ2QuZXBjcy5lbmFibGVkKVxuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmM9MzE9dm9pZCByYXRlX2NvbnRyb2xfcmF0ZV9pbml0KHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcbi0tXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTQ0LVx0LyogU1cgcmF0ZSBjb250cm9sIGlzbiYjMzk7dCBzdXBwb3J0ZWQgd2l0aCBNTE8gcmlnaHQgbm93ICovXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjQ1Olx0aWYgKFdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpKVxubmV0L21hYzgwMjExL3JhdGUuYy00Ni1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE1MjE9aWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTU1MC1cbm5ldC9tYWM4MDIxMS9yeC5jOjE1NTE6XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL3J4LmMtMTU1Mi1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjY4ND1ib29sIGllZWU4MDIxMV9pc19vdXJfYWRkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yNjkyLVxubmV0L21hYzgwMjExL3J4LmM6MjY5MzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9yeC5jLTI2OTQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz00MzQxPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9kYXRhX3NldF9zdGEoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MzU2LVx0aWYgKGxpbmtfaWQgXHUwMDNjIDApIHtcbm5ldC9tYWM4MDIxMS9yeC5jOjQzNTc6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZyeC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmMtNDM1OC1cdFx0ICAgIHN0YSBcdTAwMjZcdTAwMjYgIXN0YS1cdTAwM2VzdGEudmFsaWRfbGlua3MpXG4tLVxubmV0L21hYzgwMjExL3J4LmM9NTI5Nj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZm9yX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTUzMTktXHRcdFx0bGlua19pZCA9IHN0YXR1cy1cdTAwM2VsaW5rX2lkO1xubmV0L21hYzgwMjExL3J4LmM6NTMyMDpcdFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZyeC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmMtNTMyMS1cdFx0XHQgICBzdGF0dXMtXHUwMDNlZnJlcSkge1xuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmM9MTY4PWllZWU4MDIxMV9ic3NfaW5mb191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3NjYW4uYy0yMDUtXHRcdCAqL1xubmV0L21hYzgwMjExL3NjYW4uYzoyMDY6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzY2FuX3NkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA3LVx0XHRcdGlmIChyeF9zdGF0dXMtXHUwMDNlbGlua192YWxpZCkge1xuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmM9NzMxPXN0YXRpYyBpbnQgX19pZWVlODAyMTFfc3RhcnRfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0NS1cdCAqL1xubmV0L21hYzgwMjExL3NjYW4uYzo3NDY6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgcmVxLVx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0Ny1cdCAgICAhKHNkYXRhLVx1MDAzZXZpZi5hY3RpdmVfbGlua3MgXHUwMDI2IEJJVChyZXEtXHUwMDNldHNmX3JlcG9ydF9saW5rX2lkKSkpXG4tLVxubmV0L21hYzgwMjExL3R4LmM9ODIwPWllZWU4MDIxMV90eF9oX3NlcXVlbmNlKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtODQ3LVx0aWYgKHVubGlrZWx5KGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci1cdTAwM2VhZGRyMSkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYzo4NDg6XHRcdCAgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoaW5mby1cdTAwM2Vjb250cm9sLnZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy04NDktXHRcdCAgICAgaW5mby1cdTAwM2Vjb250cm9sLnZpZi1cdTAwM2V0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSkge1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTI2MzE9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTI2NjctXG5uZXQvbWFjODAyMTEvdHguYzoyNjY4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL3R4LmMtMjY2OS1cdFx0Y2hhbmN0eF9jb25mID1cbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjg0LVx0XHR9XG5uZXQvbWFjODAyMTEvdHguYzoyNjg1Olx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI2ODYtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqYXBfc2RhdGE7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjcwMi1cbm5ldC9tYWM4MDIxMS90eC5jOjI3MDM6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNiBzdGEgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLm1sbykge1xubmV0L21hYzgwMjExL3R4LmMtMjcwNC1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaztcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yODgxLVx0XHRcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcbm5ldC9tYWM4MDIxMS90eC5jOjI4ODI6XHRcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI4ODMtXHRcdFx0cmV0ID0gLUVOT1RDT05OO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTMwNzg9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMxMjctXG5uZXQvbWFjODAyMTEvdHguYzozMTI4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0zMTI5LVx0XHRyY3VfcmVhZF9sb2NrKCk7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzIwNi1cdFx0YnVpbGQuZGFfb2ZmcyA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfaGRyLCBhZGRyMSk7XG5uZXQvbWFjODAyMTEvdHguYzozMjA3Olx0XHRpZiAoc3RhLVx1MDAzZXN0YS5tbG8gfHwgIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTMyMDgtXHRcdFx0bWVtY3B5KGhkci1cdTAwM2VhZGRyMiwgc2RhdGEtXHUwMDNldmlmLmFkZHIsIEVUSF9BTEVOKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NTYxPW5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDU4My1cdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xubmV0L21hYzgwMjExL3R4LmM6NDU4NDpcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODUtXHRcdCAgICgoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfY2hlY2tfbWNhc3Rfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00NzU1LVxubmV0L21hYzgwMjExL3R4LmM6NDc1NjpcdGlmICgoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS90eC5jLTQ3NTctXHQgICAgIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00OTExPXN0YXRpYyBib29sIGllZWU4MDIxMV90eF9wZW5kaW5nX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00OTI0LVx0XHQvKiB1cGRhdGUgYmFuZCBvbmx5IGZvciBub24tTUxEICovXG5uZXQvbWFjODAyMTEvdHguYzo0OTI1Olx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTQ5MjYtXHRcdFx0Y2hhbmN0eF9jb25mID1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz02Mzk2PXZvaWQgX19pZWVlODAyMTFfdHhfc2tiX3RpZF9iYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0MTMtXG5uZXQvbWFjODAyMTEvdHguYzo2NDE0Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy02NDE1LVx0XHRsaW5rID0gMDtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz02NDUzPXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjQ2Mi1cdFx0YmFuZCA9IE5VTV9OTDgwMjExX0JBTkRTO1xubmV0L21hYzgwMjExL3R4LmM6NjQ2MzpcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTY0NjQtXHRcdFdBUk5fT04obGlua19pZCBcdTAwM2U9IDApO1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzND12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0xMTQyLVx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xubmV0L21hYzgwMjExL3V0aWwuYzoxMTQzOlx0Ym9vbCBtdWx0aV9saW5rID0gaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0NC1cdHN0cnVjdCB7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYz0xODgyPWludCBpZWVlODAyMTFfcmVjb25maWcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMDcxLVxubmV0L21hYzgwMjExL3V0aWwuYzoyMDcyOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3V0aWwuYy0yMDczLVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKm9sZFtJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdID0ge1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEyOC1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEyOTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMwLVx0XHRcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfSURMRTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzMtXHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjpcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEzNDpcdFx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzNS1cdFx0XHRcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfQVNTT0MgfFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3MS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE3MjpcdFx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3My1cdFx0XHRcdGllZWU4MDIxMV92aWZfY2ZnX2NoYW5nZV9ub3RpZnkoc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTg1LVxubmV0L21hYzgwMjExL3V0aWwuYzoyMTg2Olx0XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4Ny1cdFx0XHRcdFx0aWVlZTgwMjExX3JlY29uZmlnX2FwX2xpbmtzKGxvY2FsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkyNgoJCQkJCQkJb3V0cHV0OiAxMzAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRnV6emluZyB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBGdW5jdGlvbiBpbiBNQUM4MDIxMSoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIE1BQzgwMjExIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGhhbmRsaW5nIGF1dGhlbnRpY2F0aW9uIGZsYWdzLCB0aGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSYjMzQ7IHRvIG1lLiBBdXRoZW50aWNhdGlvbiwgZXNwZWNpYWxseSBpbiB3aXJlbGVzcyBjb250ZXh0cywgaXMgb2Z0ZW4gYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIE1pc2NvbmZpZ3VyYXRpb25zLCB1bmV4cGVjdGVkIGlucHV0cy4uLiB0aGVzZSBjYW4gYWxsIGxlYWQgdG8gZXhwbG9pdGFibGUgZmxhd3MuCgpUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBXZSBuZWVkIHRvIGZvcm11bGF0ZSBhIHRlc3Qgc3RyYXRlZ3ksIGRlc2lnbiByZWxldmFudCBmdXp6IGlucHV0cywgYW5kIGNhcmVmdWxseSBvYnNlcnZlIHRoZSByZXN1bHRzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBob3cgZmxhZyBzZXR0aW5ncyBhcmUgaGFuZGxlZCBhbmQgbG9vayBmb3IgYW55IGludGVyZXN0aW5nIGJlaGF2aW9ycyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gV2UmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGNyYWZ0IHRoZSB0ZXN0IHN1aXRlLCBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgcmVzdWx0cyBnYXRoZXJpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdGFfYXBwbHlfYXV0aF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdGFfYXBwbHlfYXV0aF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMyOjU1LjAzMzQ2NTMyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTY4MzkzMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzI6NTUuMDMzNDg3NDU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjI3NDgwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkOGM1ZGExOTNhNTI3NmI2MDFhMzJlNzAyY2E1ZjBhMDE1YjM0MjU2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDExOjMyOjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbmluZGV4IDNiNThhZjU5ZjdlNDI5Li5kNDMzMWZiYWUwZDg5MiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5AQCAtMjE0OCw4ICsyMTQ4LDE0IEBAIHN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcdFxcdCAqIHdlbGwuIFNvbWUgZHJpdmVycyByZXF1aXJlIHJhdGUgY29udHJvbCBpbml0aWFsaXplZFxcbiBcXHRcXHQgKiBiZWZvcmUgZHJ2X3N0YV9zdGF0ZSgpIGlzIGNhbGxlZC5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpXFxuK1xcdFxcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcXG4rXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihcXG4rXFx0XFx0XFx0XFx0ICAgIHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdFxcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG4gXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzI6NTUuNzAzMDMxNzM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDEyOTg4MDk4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaW4gbWFjODAyMTEgdG8gYWRkIGNoZWNrcyBmb3IgTUxEIChNdWx0aS1MaW5rIERldmljZSkgYW5kIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXppbmcgcmF0ZSBjb250cm9sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgbG9naWMsIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBhbmQgbWFjODAyMTFfaHdzaW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ4YzVkYTE5M2E1Mjc2YjYwMWEzMmU3MDJjYTVmMGEwMTViMzQyNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxMTozMjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggM2I1OGFmNTlmN2U0MjkuLmQ0MzMxZmJhZTBkODkyIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC0yMTQ4LDggKzIxNDgsMTQgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbitcdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xuK1x0XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXG4rXHRcdFx0XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdFx0cmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTtcbitcdFx0fVxuIFxuIFx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XG4gXHRcdGlmIChyZXQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMjo1NS43MDMwMzUxMTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTg0MTgwNjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1BQzgwMjExIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L21hYzgwMjExL2NmZy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBhZGQgYSBuZXcgY2hlY2suIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgY2hhbmdlcyB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgYG1hYzgwMjExYCwgYWZmZWN0aW5nIGhvdyB3ZSBoYW5kbGUgYXV0aGVudGljYXRpb24gZmxhZ3MgZm9yIHN0YXRpb25zLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudDpcblxuYGBgY1xuXHRcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcblx0XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5cdFx0XHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihcblx0XHRcdFx0ICAgIHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0XHRcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XG5cdFx0fVxuYGBgXG5cbkVzc2VudGlhbGx5LCBpZiBhIHN0YXRpb24gaXNuJ3QgdXNpbmcgcmF0ZSBjb250cm9sLCBhbmQgaXQncyAqbm90KiBhIG1lc2ggbGluaywgYW5kIGl0ICpkb2Vzbid0KiBoYXZlIGEgY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24sIHRoZW4gaXQncyBjb25zaWRlcmVkIGFuIGVycm9yLiBUaGlzIHRyaWdnZXJzIGByYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwb3RlbnRpYWxseSBpbXBhY3RzIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIHdoZXJlIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQsIHNvIGEgZGVlcCBkaXZlIGludG8gdGhlIGltcGxpY2F0aW9ucyBpcyB3YXJyYW50ZWQuIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGEgY2hhbmdlIGluIHRoZSBkcml2ZXIgYW5kIHJlYWNoYWJsZSB2aWEgdGhlIGBtYWM4MDIxMV9od3NpbWAgbW9kdWxlLCB3aGljaCBtZWFucyBJIGNhbiByZWFkaWx5IHRlc3QgdGhpcyBuZXcgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hlY2sncyBwdXJwb3NlIGFuZCBob3cgaXQgYWx0ZXJzIHRoZSBleGlzdGluZyBsb2dpYy4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgYW5kIHRyYWNlIGl0cyBjYWxsZXJzIHRvIGZ1bGx5IGdyYXNwIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsIGdyYXBoIGFuZCB0aGUgc2l0dWF0aW9ucyBpbiB3aGljaCBpdCB3aWxsIGJlIGV4ZWN1dGVkIHdpbGwgYmUgY3JpdGljYWwuIEknbSBnb2luZyB0byBkZXRlcm1pbmUgdW5kZXIgd2hpY2ggY2lyY3Vtc3RhbmNlcyB0aGlzIHBhcnRpY3VsYXIgY29uZGl0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDMyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzM6MDAuODg3MjIyMzE2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk2Njg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0yMDEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3BfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI4LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI5OnN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXFx0XFx0XFx0XFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjQ1NT1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI1MDAtXFx0ICAgICAgKHNldCBcXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUwMTpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTAyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyMy1cXHQgICAgc2V0IFxcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYyNDpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjI1LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjAxLjAzODIwMzg4NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTUxODQxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgQXV0aGVudGljYXRpb24gRmxhZ3MgQXBwbGljYXRpb24qKlxuXG5SaWdodCwgc28gdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgKndoZXJlKiBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tLiBJdCBsb29rcyBsaWtlIGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AgaXMgdGhlIGxpa2VseSBjdWxwcml0LCB3aGljaCBtYWtlcyBzZW5zZS4gQmFzZWQgb24gdGhlIG5hbWluZywgYHN0YV9hcHBseV9wYXJhbWV0ZXJzYCBzZWVtcyBsaWtlIHRoZSBmdW5jdGlvbiB0aGF0IHdvdWxkIGhhbmRsZSBhcHBseWluZyBuZXcgcGFyYW1ldGVycyB0byBhIHN0YXRpb24uIFRoYXQgZnVuY3Rpb24gaXMgcHJvYmFibHkgYmVpbmcgdHJpZ2dlcmVkIGJ5IHNvbWV0aGluZyBsaWtlIGBubDgwMjExX3NldF9zdGF0aW9uYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbC4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLiBMZXQncyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGNoYWluLiBJdCdzIGEga2V5IHBhcnQgb2YgdGhlIGZsb3cgZm9yIHNldHRpbmcgc3RhdGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgYXV0aGVudGljYXRpb24gaXMgYSBtYWpvciBhc3BlY3QgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMzowNC4xOTMzOTI2NDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODA4Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YV9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTIyNjY9c3RhdGljIGludCBzdGFfbGlua19hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI0NTQtXFxubmV0L21hYzgwMjExL2NmZy5jOjI0NTU6c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ1Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjM2PXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY4Ni1cXHQvKiBUaG91Z2ggdGhlIG11dGV4IGlzIG5vdCBuZWVkZWQgaGVyZSAoc2luY2UgdGhlIHN0YXRpb24gaXMgbm90XFxubmV0L21hYzgwMjExL2NmZy5jOjI2ODc6XFx0ICogdmlzaWJsZSB5ZXQpLCBzdGFfYXBwbHlfcGFyYW1ldGVycyAoYW5kIGlubmVyIGZ1bmN0aW9ucykgcmVxdWlyZVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjg4LVxcdCAqIHRoZSBtdXRleCBkdWUgdG8gb3RoZXIgcGF0aHMuXFxubmV0L21hYzgwMjExL2NmZy5jLTI2ODktXFx0ICovXFxubmV0L21hYzgwMjExL2NmZy5jOjI2OTA6XFx0ZXJyID0gc3RhX2FwcGx5X3BhcmFtZXRlcnMobG9jYWwsIHN0YSwgcGFyYW1zKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY5MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcwNy1cXHQvKlxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzA4OlxcdCAqIGllZWU4MDIxMV9uYW5fdXBkYXRlX25kaV9jYXJyaWVyIHdhcyBjYWxsZWQgZnJvbSBzdGFfYXBwbHlfcGFyYW1ldGVycyxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcwOS1cXHQgKiBidXQgdGhlbiB3ZSBkaWQgbm90IGhhdmUgdGhlIFNUQSBpbiB0aGUgbGlzdC5cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNzg5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg4Mi1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjg4MzpcXHRlcnIgPSBzdGFfYXBwbHlfcGFyYW1ldGVycyhsb2NhbCwgc3RhLCBwYXJhbXMpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODg0LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjA0LjM1MjIwODRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDczOTY3NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbiwgdGhpbmtpbmcgaXQgdGhyb3VnaCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBTdGF0aW9uIFBhcmFtZXRlciBBcHBsaWNhdGlvbioqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSB0cmFjaW5nIHNvbWUgaW50ZXJhY3Rpb25zIHJlbGF0ZWQgdG8gc3RhdGlvbiBtYW5hZ2VtZW50IGluIHRoZSA4MDIuMTEgc3RhY2suIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIGFuZCBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYCBhcmUgY2FsbGluZyBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZXJlZm9yZSBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCB1bHRpbWF0ZWx5IGludGVyYWN0IHdpdGggYHN0YV9hcHBseV9hdXRoX2ZsYWdzYC4gSSBrbm93IHRoZXNlIGFyZSBhbGwgbGlrZWx5IHJlYWNoYWJsZSB2aWEgYG5sODAyMTFgLCB3aGljaCBpc24ndCBzdXJwcmlzaW5nLlxuXG5HaXZlbiB0aGlzIHBhdGgsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgYmVoYXZpb3IgaXMgY29uZmlndXJlZC4gSSBrbm93IHRoYXQgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBpcyBgTUFDODAyMTFgLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlc2Ugc3RhdGlvbiBwYXJhbWV0ZXIgYXBwbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGFzcGVjdHMgYXJlIGNvbnRyb2xsZWQgdGhlcmUgYW5kIGhvdyB0aGVzZSBjYWxscyB0cmFuc2xhdGUgaW50byBhY3R1YWwgYmVoYXZpb3IgYmFzZWQgb24gdGhpcyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzM6MDguNDI2MTc4NzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MTEyMjI0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjEwLjI2NzMwNzk3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MjMwNjg3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQUM4MDIxMSBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBkZWZpbml0ZWx5IE1BQzgwMjExLiBHb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBUaGUgbWVudGlvbiBvZiBNQUM4MDIxMV9IV1NJTSBpcyB1c2VmdWw7IHdlIGNhbiBsZXZlcmFnZSB0aGF0IGZvciB0aG9yb3VnaCB0ZXN0aW5nLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIHBhdGNoIGl0c2VsZiwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgd2UgbmVlZCB0byBiZSBhd2FyZSBvZi4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBvdXIgYmFzZXMuXG5cblJpZ2h0LCB0aGUgY29yZSBjaGFuZ2UgaXMgaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AsIHNwZWNpZmljYWxseSB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uZmlybSBmcm9tIHRoZSBvdXRzZXQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKWAuIEFoLCBNTEQuLi4gTXVsdGktTGluayBEZXZpY2UuIFRoYXQncyBXaS1GaSA3IHRlcnJpdG9yeS5cblxuVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBNTEQgdGhhdCdzIHJlbGF0ZWQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHBvc3NpYmx5IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhIHNwZWNpZmljIGZsYWcgb3Igc2V0dGluZyB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhpcy4gTWFraW5nIHN1cmUgdGhpcyBmZWF0dXJlIGlzIHByb3Blcmx5IGVuYWJsZWQgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wbGljYXRpb24gb2YgdGhlIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDgwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjE0LjY5MDM4MjA0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0NjkwODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV92aWZfaXNfbWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2FwLmM9NTE9aWVlZTgwMjExX3J4X2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2FwLmMtNjgtXFxubmV0L21hYzgwMjExL2FwLmM6Njk6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL2FwLmMtNzAtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3PWllZWU4MDIxMV9saW5rX29yX2RlZmxpbmsoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGludCBsaW5rX2lkLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM3LVxcdFxcdCAqL1xcbm5ldC9tYWM4MDIxMS9jZmcuYzozODpcXHRcXHRpZiAocmVxdWlyZV92YWxpZCBcXHUwMDI2XFx1MDAyNiBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL2NmZy5jLTM5LVxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIxMjk9c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUxLVxcdFxcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MjpcXHRcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2NmZy5jLTIxNTMtXFx0XFx0XFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzkxMj1pbnQgX19pZWVlODAyMTFfcmVxdWVzdF9zbXBzX21nZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc0LVxcdFxcdFxcdFxcdFxcdCBhcCwgYXAsXFxubmV0L21hYzgwMjExL2NmZy5jOjM5NzU6XFx0XFx0XFx0XFx0XFx0IGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSA/XFxubmV0L21hYzgwMjExL2NmZy5jLTM5NzYtXFx0XFx0XFx0XFx0XFx0IGxpbmstXFx1MDAzZWxpbmtfaWQgOiAtMSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDk1OD1zdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9jbGllbnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTg4OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk4OS1cXHRcXHRpZiAoc3RhLVxcdTAwM2VzdGEubWxvKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTA0Mi1cXHRtZW1jcHkobnVsbGZ1bmMtXFx1MDAzZWFkZHIxLCBzdGEtXFx1MDAzZXN0YS5hZGRyLCBFVEhfQUxFTik7XFxubmV0L21hYzgwMjExL2NmZy5jOjUwNDM6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNiAhc3RhLVxcdTAwM2VzdGEubWxvKSB7XFxubmV0L21hYzgwMjExL2NmZy5jLTUwNDQtXFx0XFx0bWVtY3B5KG51bGxmdW5jLVxcdTAwM2VhZGRyMiwgY29uZi1cXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xMzktXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNDA6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjYobGluayktXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpKSAgICAgICAgICBcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQxLVxcdFxcdFxcdF9zZGF0YV9pbmZvKChsaW5rKS1cXHUwMDNlc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQ4LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQ5OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2KGxpbmspLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkgICAgICAgICAgXFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE1MC1cXHRcXHRcXHRfc2RhdGFfZXJyKChsaW5rKS1cXHUwMDNlc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTU5LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTYwOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE2MS1cXHRcXHRcXHRfc2RhdGFfaW5mbyhzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCwgbGlua19pZCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjctXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjg6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjYoc2RhdGEpLVxcdTAwM2V2aWYpKVxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjktXFx0XFx0XFx0X3NkYXRhX2RiZyhwcmludCwgc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTczOT1pZWVlODAyMTFfZ2V0X3NiYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0NC1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNzQ1OlxcdFdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzQ2LVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjItXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTYzOlxcdFdBUk4oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTU2NC1cXHQgICAgIFxcXCJkZXN0cm95aW5nIGludGVyZmFjZSB3aXRoIHZhbGlkIGxpbmtzIDB4JTA0eFxcXFxuXFxcIixcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE5NzQ9c3RhdGljIGludCBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk4Ny1cXHQvKiBmb3Igbm93LCBkb24ndCBzdXBwb3J0IGNoYW5naW5nIHdoaWxlIGxpbmtzIGV4aXN0ICovXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk4ODpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODktXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmM9MzM2PXZvaWQgaWVlZTgwMjExX2Jzc19pbmZvX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Mi1cXG5uZXQvbWFjODAyMTEvbWFpbi5jOjM0MzpcXHRXQVJOX09OX09OQ0UoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKTtcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0NC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjQxND1pZWVlODAyMTFfYXNzb2NfYWRkX21sX2VsZW0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MjgtXFxubmV0L21hYzgwMjExL21sbWUuYzoyNDI5OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQzMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODI9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjYzOS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI2NDA6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjY0MS1cXHRcXHQvKiBjb25zaWRlciB0aGUgbXVsdGktbGluayBlbGVtZW50IHdpdGggU1RBIHByb2ZpbGUgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDM5ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Fzc29jaWF0ZWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTQtXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDE1OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTYtXFx0XFx0ICAgICEoaWVlZTgwMjExX3ZpZl91c2FibGVfbGlua3MoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjYgQklUKGxpbmtfaWQpKSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzNi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Mzc6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzOC1cXHRcXHRmb3IgKGxpbmtfaWQgPSAwO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDY4LVxcdC8qIGxlYXZlIHRoaXMgaGVyZSB0byBub3QgY2hhbmdlIG9yZGVyaW5nIGluIG5vbi1NTE8gY2FzZXMgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Njk6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy00NDcwLVxcdFxcdGllZWU4MDIxMV9yZWNhbGNfc21wcyhzZGF0YSwgXFx1MDAyNnNkYXRhLVxcdTAwM2VkZWZsaW5rKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDQ3Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25mX3Jlc2V0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDgwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQ4MTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ4Mi1cXHQgICAgIShzZGF0YS1cXHUwMDNldS5tZ2QucmVjb25mLmFkZGVkX2xpbmtzIHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjMyLVxcdC8qIGZpbmFsbHkgcmVzZXQgYWxsIEJTUyAvIGNvbmZpZyBwYXJhbWV0ZXJzICovXFxubmV0L21hYzgwMjExL21sbWUuYzo0NjMzOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzNC1cXHRcXHRjaGFuZ2VkIHw9IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTctXFx0ICAgICAgIHNpemVvZihzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLm11X2dyb3VwLnBvc2l0aW9uKSk7XFxubmV0L21hYzgwMjExL21sbWUuYzo0NjU4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY1OS1cXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX01VX0dST1VQUztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3MS1cXHRzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnFvcyA9IGZhbHNlO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDY3MjpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3My1cXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX1FPUztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDk3Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2FwX3Byb2JlcmVxX2dldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4NC1cXHRpZiAoV0FSTl9PTihzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDk4NTpcXHRcXHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ5ODYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzMDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjUzMzY6XFx0XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzctXFx0XFx0XFx0XFx0ZGF0YS5hcF9tbGRfYWRkciA9IGFzc29jX2RhdGEtXFx1MDAzZWFwX2FkZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTY5MjQ9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NDgtXFxubmV0L21hYzgwMjExL21sbWUuYzo2OTQ5OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NTAtXFx0XFx0aWYgKCFlbGVtcy1cXHUwMDNlbWxfYmFzaWMpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTAtXFxubmV0L21hYzgwMjExL21sbWUuYzo3MDExOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy03MDEyLVxcdFxcdFxcdGxpbmtfaW5mbyhsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz03MTM1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzItXFxubmV0L21hYzgwMjExL21sbWUuYzo3MjczOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzQtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tbGVfYmFzaWNfY29tbW9uX2luZm8gKmNvbW1vbjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzMzOS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjczNDA6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzM0MS1cXHRcXHRldGhlcl9hZGRyX2NvcHkoYXBfbWxkX2FkZHIsIHNkYXRhLVxcdTAwM2V2aWYuY2ZnLmFwX2FkZHIpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz03NjMxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZpZ3VyYXRpb24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MzktXFxubmV0L21hYzgwMjExL21sbWUuYzo3NjQwOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8ICFlbGVtcy1cXHUwMDNlbWxfcmVjb25mKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzY0MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc4MDE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfYWR2X3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc4MDctXFxubmV0L21hYzgwMjExL21sbWUuYzo3ODA4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwOS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTgwNTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04MTE3LVxcdGlmIChpZm1nZC1cXHUwMDNlYXNzb2NfZGF0YSBcXHUwMDI2XFx1MDAyNiBpZm1nZC1cXHUwMDNlYXNzb2NfZGF0YS1cXHUwMDNlbmVlZF9iZWFjb24gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTg6XFx0ICAgICFXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTktXFx0ICAgIGllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBpZm1nZC1cXHUwMDNlYXNzb2NfZGF0YS1cXHUwMDNlbGlua1swXS5ic3MpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg1NDE9aW50IGllZWU4MDIxMV9yZXFfbmVnX3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg1NDYtXFxubmV0L21hYzgwMjExL21sbWUuYzo4NTQ3OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ4LVxcdCAgICAhKHNkYXRhLVxcdTAwM2V2aWYuY2ZnLm1sZF9jYXBhX29wIFxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODcwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3MjAtXFxubmV0L21hYzgwMjExL21sbWUuYzo4NzIxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMi1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3NzM9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc2LXtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg3Nzc6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzgtXFx0ICAgIG1nbXQtXFx1MDAzZXUuYWN0aW9uLnR0bG1fcmVzLmRpYWxvZ190b2tlbiAhPSBzZGF0YS1cXHUwMDNldS5tZ2QuZGlhbG9nX3Rva2VuX2FsbG9jKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04ODk1PXN0YXRpYyBpbnQgaWVlZTgwMjExX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTItXFx0aWYgKGF1dGhfZGF0YS1cXHUwMDNlYWxnb3JpdGhtID09IFdMQU5fQVVUSF9FUFBLRSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxMzpcXHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYy04OTE0LVxcdCAgICAhY2ZnODAyMTFfZmluZF9leHRfZWxlbShXTEFOX0VJRF9FWFRfRUhUX01VTFRJX0xJTkssXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTk4NDI9aW50IGllZWU4MDIxMV9tZ2RfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTAwNDAtIGVycl9jbGVhcjpcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwMDQxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0Mi1cXHRcXHRldGhfemVyb19hZGRyKHNkYXRhLVxcdTAwM2VkZWZsaW5rLnUubWdkLmJzc2lkKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4Njg9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg0LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTA4ODU6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg2LVxcdCAgICBsZW4gXFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKG1sX3JlY29uZl9yZXNwKSB8fFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTMzMD1pbnQgaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQxLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEzNDI6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQzLVxcdCAgICAhKHNkYXRhLVxcdTAwM2V2aWYuY2ZnLm1sZF9jYXBhX29wIFxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE1NTQ9c3RhdGljIGJvb2wgaWVlZTgwMjExX21nZF9lcGNzX3N1cHAoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE1NjE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTU2Mi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNjI4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9lcGNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzNi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNjM3OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8ICFlbGVtcy1cXHUwMDNlbWxfZXBjcylcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNjM4LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE3NDY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NDkte1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE3NTA6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzUxLVxcdCAgICAhc2RhdGEtXFx1MDAzZXUubWdkLmVwY3MuZW5hYmxlZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yYXRlLmM9MzE9dm9pZCByYXRlX2NvbnRyb2xfcmF0ZV9pbml0KHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDQtXFx0LyogU1cgcmF0ZSBjb250cm9sIGlzbid0IHN1cHBvcnRlZCB3aXRoIE1MTyByaWdodCBub3cgKi9cXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjQ1OlxcdGlmIChXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpKSlcXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTQ2LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE1MjE9aWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNTUwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE1NTE6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvcnguYy0xNTUyLVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTilcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTI2ODQ9Ym9vbCBpZWVlODAyMTFfaXNfb3VyX2FkZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNjkyLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjI2OTM6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3J4LmMtMjY5NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00MzQxPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9kYXRhX3NldF9zdGEoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTYtXFx0aWYgKGxpbmtfaWQgXFx1MDAzYyAwKSB7XFxubmV0L21hYzgwMjExL3J4LmM6NDM1NzpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnJ4LVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTgtXFx0XFx0ICAgIHN0YSBcXHUwMDI2XFx1MDAyNiAhc3RhLVxcdTAwM2VzdGEudmFsaWRfbGlua3MpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz01Mjk2PXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01MzE5LVxcdFxcdFxcdGxpbmtfaWQgPSBzdGF0dXMtXFx1MDAzZWxpbmtfaWQ7XFxubmV0L21hYzgwMjExL3J4LmM6NTMyMDpcXHRcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy01MzIxLVxcdFxcdFxcdCAgIHN0YXR1cy1cXHUwMDNlZnJlcSkge1xcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYz0xNjg9aWVlZTgwMjExX2Jzc19pbmZvX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA1LVxcdFxcdCAqL1xcbm5ldC9tYWM4MDIxMS9zY2FuLmM6MjA2OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2Nhbl9zZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA3LVxcdFxcdFxcdGlmIChyeF9zdGF0dXMtXFx1MDAzZWxpbmtfdmFsaWQpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmM9NzMxPXN0YXRpYyBpbnQgX19pZWVlODAyMTFfc3RhcnRfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmMtNzQ1LVxcdCAqL1xcbm5ldC9tYWM4MDIxMS9zY2FuLmM6NzQ2OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjYgcmVxLVxcdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9zY2FuLmMtNzQ3LVxcdCAgICAhKHNkYXRhLVxcdTAwM2V2aWYuYWN0aXZlX2xpbmtzIFxcdTAwMjYgQklUKHJlcS1cXHUwMDNldHNmX3JlcG9ydF9saW5rX2lkKSkpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz04MjA9aWVlZTgwMjExX3R4X2hfc2VxdWVuY2Uoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTg0Ny1cXHRpZiAodW5saWtlbHkoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VhZGRyMSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYzo4NDg6XFx0XFx0ICAgICBpZWVlODAyMTFfdmlmX2lzX21sZChpbmZvLVxcdTAwM2Vjb250cm9sLnZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYy04NDktXFx0XFx0ICAgICBpbmZvLVxcdTAwM2Vjb250cm9sLnZpZi1cXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTI2MzE9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjY2Ny1cXG5uZXQvbWFjODAyMTEvdHguYzoyNjY4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjktXFx0XFx0Y2hhbmN0eF9jb25mID1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI2ODQtXFx0XFx0fVxcbm5ldC9tYWM4MDIxMS90eC5jOjI2ODU6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0yNjg2LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX3NkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjcwMi1cXG5uZXQvbWFjODAyMTEvdHguYzoyNzAzOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjYgc3RhIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS5tbG8pIHtcXG5uZXQvbWFjODAyMTEvdHguYy0yNzA0LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjg4MS1cXHRcXHRcXHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XFxubmV0L21hYzgwMjExL3R4LmM6Mjg4MjpcXHRcXHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0yODgzLVxcdFxcdFxcdHJldCA9IC1FTk9UQ09OTjtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTMwNzg9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzEyNy1cXG5uZXQvbWFjODAyMTEvdHguYzozMTI4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMzEyOS1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zMjA2LVxcdFxcdGJ1aWxkLmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjEpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjMyMDc6XFx0XFx0aWYgKHN0YS1cXHUwMDNlc3RhLm1sbyB8fCAhaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMzIwOC1cXHRcXHRcXHRtZW1jcHkoaGRyLVxcdTAwM2VhZGRyMiwgc2RhdGEtXFx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NTYxPW5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00NTgzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxubmV0L21hYzgwMjExL3R4LmM6NDU4NDpcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODUtXFx0XFx0ICAgKChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX2NoZWNrX21jYXN0X29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00NzU1LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQ3NTY6XFx0aWYgKChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYy00NzU3LVxcdCAgICAgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDkxMT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00OTI0LVxcdFxcdC8qIHVwZGF0ZSBiYW5kIG9ubHkgZm9yIG5vbi1NTEQgKi9cXG5uZXQvbWFjODAyMTEvdHguYzo0OTI1OlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtNDkyNi1cXHRcXHRcXHRjaGFuY3R4X2NvbmYgPVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjM5Nj12b2lkIF9faWVlZTgwMjExX3R4X3NrYl90aWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY0MTMtXFxubmV0L21hYzgwMjExL3R4LmM6NjQxNDpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTY0MTUtXFx0XFx0bGluayA9IDA7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02NDUzPXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NDYyLVxcdFxcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcXG5uZXQvbWFjODAyMTEvdHguYzo2NDYzOlxcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTY0NjQtXFx0XFx0V0FSTl9PTihsaW5rX2lkIFxcdTAwM2U9IDApO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0xMTM0PXZvaWQgaWVlZTgwMjExX3NlbmRfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxubmV0L21hYzgwMjExL3V0aWwuYzoxMTQzOlxcdGJvb2wgbXVsdGlfbGluayA9IGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKTtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDQtXFx0c3RydWN0IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTg4Mj1pbnQgaWVlZTgwMjExX3JlY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMDcxLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjA3MjpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yMDczLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKm9sZFtJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdID0ge1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTI4LVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEyOTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzAtXFx0XFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9JRExFO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMzLVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjpcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMzQ6XFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzUtXFx0XFx0XFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9BU1NPQyB8XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzEtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTcyOlxcdFxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTczLVxcdFxcdFxcdFxcdGllZWU4MDIxMV92aWZfY2ZnX2NoYW5nZV9ub3RpZnkoc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODUtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTg2OlxcdFxcdFxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODctXFx0XFx0XFx0XFx0XFx0aWVlZTgwMjExX3JlY29uZmlnX2FwX2xpbmtzKGxvY2FsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMzoxNS4yNjUwODU0OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NzUxNTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk1MRCBTdXBwb3J0IGluIG1hYzgwMjExIC0gQSBRdWljayBDaGVjayoqXG5cblJpZ2h0LCBzbyBNTEQgc3VwcG9ydCBpcyBlc3NlbnRpYWxseSBiYWtlZCBpbnRvIG1hYzgwMjExIHRoZXNlIGRheXMuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBmbGFncyBvciBob29wcyB0byBqdW1wIHRocm91Z2gsIGFzc3VtaW5nIEknbSB1c2luZyBhIG1vZGVybiBlbm91Z2ggdmVyc2lvbi4gVGhhdCdzIGdvb2QgbmV3cywgc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5LiBIb3dldmVyLCBiZWZvcmUgSSBnZXQgdG9vIGNvbWZvcnRhYmxlLCBJIHNob3VsZCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgc3VidGxlLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGF0ICppZWVlODAyMTFfdmlmX2lzX21sZCogZGVmaW5pdGlvbiBqdXN0IHRvIGJlIDEwMCUgY2VydGFpbiB0aGVyZSBpc24ndCBzb21lIGNvcm5lciBjYXNlIG9yIGhpZGRlbiBkZXBlbmRlbmN5IEknbSBvdmVybG9va2luZy4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4MDYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMzoxOC44NDI2MDY2NTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTU1ODc4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfdmlmX2lzX21sZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9hcC5jPTUxPWllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jLTY4LVxcbm5ldC9tYWM4MDIxMS9hcC5jOjY5OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9hcC5jLTcwLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNz1pZWVlODAyMTFfbGlua19vcl9kZWZsaW5rKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNy1cXHRcXHQgKi9cXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg6XFx0XFx0aWYgKHJlcXVpcmVfdmFsaWQgXFx1MDAyNlxcdTAwMjYgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOS1cXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yMTI5PXN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1MS1cXHRcXHRpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjIxNTI6XFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUzLVxcdFxcdFxcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM5MTI9aW50IF9faWVlZTgwMjExX3JlcXVlc3Rfc21wc19tZ2Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzk3NC1cXHRcXHRcXHRcXHRcXHQgYXAsIGFwLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzozOTc1OlxcdFxcdFxcdFxcdFxcdCBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgP1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc2LVxcdFxcdFxcdFxcdFxcdCBsaW5rLVxcdTAwM2VsaW5rX2lkIDogLTEpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ5NTg9c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfY2xpZW50KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk4Ny1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDk4ODpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ5ODktXFx0XFx0aWYgKHN0YS1cXHUwMDNlc3RhLm1sbykge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTUwNDItXFx0bWVtY3B5KG51bGxmdW5jLVxcdTAwM2VhZGRyMSwgc3RhLVxcdTAwM2VzdGEuYWRkciwgRVRIX0FMRU4pO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDQzOlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjYgIXN0YS1cXHUwMDNlc3RhLm1sbykge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQ0LVxcdFxcdG1lbWNweShudWxsZnVuYy1cXHUwMDNlYWRkcjIsIGNvbmYtXFx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oPTEyNT1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTM5LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQwOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2KGxpbmspLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkgICAgICAgICAgXFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0MS1cXHRcXHRcXHRfc2RhdGFfaW5mbygobGluayktXFx1MDAzZXNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0OC1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0OTpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNihsaW5rKS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikpICAgICAgICAgIFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTAtXFx0XFx0XFx0X3NkYXRhX2VycigobGluayktXFx1MDAzZXNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE1OS1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE2MDpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjEtXFx0XFx0XFx0X3NkYXRhX2luZm8oc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsIGxpbmtfaWQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY3LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTY4OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2KHNkYXRhKS1cXHUwMDNldmlmKSlcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY5LVxcdFxcdFxcdF9zZGF0YV9kYmcocHJpbnQsIHNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE3Mzk9aWVlZTgwMjExX2dldF9zYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDQtXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTc0NTpcXHRXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTQ3OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb3duKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTYyLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjU2MzpcXHRXQVJOKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjQtXFx0ICAgICBcXFwiZGVzdHJveWluZyBpbnRlcmZhY2Ugd2l0aCB2YWxpZCBsaW5rcyAweCUwNHhcXFxcblxcXCIsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTc0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODctXFx0LyogZm9yIG5vdywgZG9uJ3Qgc3VwcG9ydCBjaGFuZ2luZyB3aGlsZSBsaW5rcyBleGlzdCAqL1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5ODg6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg5LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTMzNj12b2lkIGllZWU4MDIxMV9ic3NfaW5mb19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0zNDItXFxubmV0L21hYzgwMjExL21haW4uYzozNDM6XFx0V0FSTl9PTl9PTkNFKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSk7XFxubmV0L21hYzgwMjExL21haW4uYy0zNDQtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTQ9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNDI4LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjQyOTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MzAtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yNTgyPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NlbmRfYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2MzktXFxubmV0L21hYzgwMjExL21sbWUuYzoyNjQwOlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2NDEtXFx0XFx0LyogY29uc2lkZXIgdGhlIG11bHRpLWxpbmsgZWxlbWVudCB3aXRoIFNUQSBwcm9maWxlICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQzOTQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9hc3NvY2lhdGVkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDE0LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQxNTpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYy00NDE2LVxcdFxcdCAgICAhKGllZWU4MDIxMV92aWZfdXNhYmxlX2xpbmtzKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2IEJJVChsaW5rX2lkKSkpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MzYtXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDM3OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MzgtXFx0XFx0Zm9yIChsaW5rX2lkID0gMDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ2OC1cXHQvKiBsZWF2ZSB0aGlzIGhlcmUgdG8gbm90IGNoYW5nZSBvcmRlcmluZyBpbiBub24tTUxPIGNhc2VzICovXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDY5OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ3MC1cXHRcXHRpZWVlODAyMTFfcmVjYWxjX3NtcHMoc2RhdGEsIFxcdTAwMjZzZGF0YS1cXHUwMDNlZGVmbGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ0NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZl9yZXNldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ4MC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0ODE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODItXFx0ICAgICEoc2RhdGEtXFx1MDAzZXUubWdkLnJlY29uZi5hZGRlZF9saW5rcyB8XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ1MDg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9kaXNhc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzMi1cXHQvKiBmaW5hbGx5IHJlc2V0IGFsbCBCU1MgLyBjb25maWcgcGFyYW1ldGVycyAqL1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDYzMzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzQtXFx0XFx0Y2hhbmdlZCB8PSBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjU3LVxcdCAgICAgICBzaXplb2Yoc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5tdV9ncm91cC5wb3NpdGlvbikpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDY1ODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTktXFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9NVV9HUk9VUFM7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzEtXFx0c2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5xb3MgPSBmYWxzZTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NzI6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzMtXFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9RT1M7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ5NzI9c3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9hcF9wcm9iZXJlcV9nZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ5ODQtXFx0aWYgKFdBUk5fT04oc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ5ODU6XFx0XFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkpXFxubmV0L21hYzgwMjExL21sbWUuYy00OTg2LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz01MzAwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kZXN0cm95X2Fzc29jX2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzUtXFxubmV0L21hYzgwMjExL21sbWUuYzo1MzM2OlxcdFxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy01MzM3LVxcdFxcdFxcdFxcdGRhdGEuYXBfbWxkX2FkZHIgPSBhc3NvY19kYXRhLVxcdTAwM2VhcF9hZGRyO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02OTI0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy02OTQ4LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6Njk0OTpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy02OTUwLVxcdFxcdGlmICghZWxlbXMtXFx1MDAzZW1sX2Jhc2ljKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MDEwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzAxMTpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMi1cXHRcXHRcXHRsaW5rX2luZm8obGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzEzNT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hc3NvY19yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MjcyLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzI3MzpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy03Mjc0LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWxlX2Jhc2ljX2NvbW1vbl9pbmZvICpjb21tb247XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTczMzktXFxubmV0L21hYzgwMjExL21sbWUuYzo3MzQwOlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTczNDEtXFx0XFx0ZXRoZXJfYWRkcl9jb3B5KGFwX21sZF9hZGRyLCBzZGF0YS1cXHUwMDNldmlmLmNmZy5hcF9hZGRyKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzYzMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25maWd1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03NjM5LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzY0MDpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fCAhZWxlbXMtXFx1MDAzZW1sX3JlY29uZilcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2NDEtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz03ODAxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2Fkdl90dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03ODA3LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzgwODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc4MDktXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04MDU2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODExNy1cXHRpZiAoaWZtZ2QtXFx1MDAzZWFzc29jX2RhdGEgXFx1MDAyNlxcdTAwMjYgaWZtZ2QtXFx1MDAzZWFzc29jX2RhdGEtXFx1MDAzZW5lZWRfYmVhY29uIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYzo4MTE4OlxcdCAgICAhV0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYy04MTE5LVxcdCAgICBpZWVlODAyMTFfcnhfb3VyX2JlYWNvbihic3NpZCwgaWZtZ2QtXFx1MDAzZWFzc29jX2RhdGEtXFx1MDAzZWxpbmtbMF0uYnNzKSkge1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04NTQxPWludCBpZWVlODAyMTFfcmVxX25lZ190dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ2LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODU0NzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0OC1cXHQgICAgIShzZGF0YS1cXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3MDk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04NzIwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODcyMTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3MjItXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04NzczPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX25lZ190dGxtX3JlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODc3Ni17XFxubmV0L21hYzgwMjExL21sbWUuYzo4Nzc3OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc4LVxcdCAgICBtZ210LVxcdTAwM2V1LmFjdGlvbi50dGxtX3Jlcy5kaWFsb2dfdG9rZW4gIT0gc2RhdGEtXFx1MDAzZXUubWdkLmRpYWxvZ190b2tlbl9hbGxvYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODg5NT1zdGF0aWMgaW50IGllZWU4MDIxMV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04OTEyLVxcdGlmIChhdXRoX2RhdGEtXFx1MDAzZWFsZ29yaXRobSA9PSBXTEFOX0FVVEhfRVBQS0UgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg5MTM6XFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNC1cXHQgICAgIWNmZzgwMjExX2ZpbmRfZXh0X2VsZW0oV0xBTl9FSURfRVhUX0VIVF9NVUxUSV9MSU5LLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz05ODQyPWludCBpZWVlODAyMTFfbWdkX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQwLSBlcnJfY2xlYXI6XFxubmV0L21hYzgwMjExL21sbWUuYzoxMDA0MTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTAwNDItXFx0XFx0ZXRoX3plcm9fYWRkcihzZGF0YS1cXHUwMDNlZGVmbGluay51Lm1nZC5ic3NpZCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODY4PWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMDg4NC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwODg1OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy0xMDg4Ni1cXHQgICAgbGVuIFxcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShtbF9yZWNvbmZfcmVzcCkgfHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTEzMzA9aW50IGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0MS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExMzQyOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0My1cXHQgICAgIShzZGF0YS1cXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNTU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9tZ2RfZXBjc19zdXBwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTU2MC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNTYxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTYyOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfZXBjcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzYtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTYzNzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fCAhZWxlbXMtXFx1MDAzZW1sX2VwY3MpXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzOC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNzQ2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2VwY3NfdGVhcmRvd24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzQ5LXtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNzUwOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTc1MS1cXHQgICAgIXNkYXRhLVxcdTAwM2V1Lm1nZC5lcGNzLmVuYWJsZWQpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTMxPXZvaWQgcmF0ZV9jb250cm9sX3JhdGVfaW5pdChzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTQ0LVxcdC8qIFNXIHJhdGUgY29udHJvbCBpc24ndCBzdXBwb3J0ZWQgd2l0aCBNTE8gcmlnaHQgbm93ICovXFxubmV0L21hYzgwMjExL3JhdGUuYzo0NTpcXHRpZiAoV0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkpXFxubmV0L21hYzgwMjExL3JhdGUuYy00Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xNTIxPWllZWU4MDIxMV9yeF9oX2NoZWNrX2R1cChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTU1MC1cXG5uZXQvbWFjODAyMTEvcnguYzoxNTUxOlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL3J4LmMtMTU1Mi1cXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yNjg0PWJvb2wgaWVlZTgwMjExX2lzX291cl9hZGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjY5Mi1cXG5uZXQvbWFjODAyMTEvcnguYzoyNjkzOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2OTQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9NDM0MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZGF0YV9zZXRfc3RhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00MzU2LVxcdGlmIChsaW5rX2lkIFxcdTAwM2MgMCkge1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQzNTc6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy00MzU4LVxcdFxcdCAgICBzdGEgXFx1MDAyNlxcdTAwMjYgIXN0YS1cXHUwMDNlc3RhLnZhbGlkX2xpbmtzKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9NTI5Nj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZm9yX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNTMxOS1cXHRcXHRcXHRsaW5rX2lkID0gc3RhdHVzLVxcdTAwM2VsaW5rX2lkO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjA6XFx0XFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2cngtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmMtNTMyMS1cXHRcXHRcXHQgICBzdGF0dXMtXFx1MDAzZWZyZXEpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmM9MTY4PWllZWU4MDIxMV9ic3NfaW5mb191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNS1cXHRcXHQgKi9cXG5uZXQvbWFjODAyMTEvc2Nhbi5jOjIwNjpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNjYW5fc2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNy1cXHRcXHRcXHRpZiAocnhfc3RhdHVzLVxcdTAwM2VsaW5rX3ZhbGlkKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTczMT1zdGF0aWMgaW50IF9faWVlZTgwMjExX3N0YXJ0X3NjYW4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0NS1cXHQgKi9cXG5uZXQvbWFjODAyMTEvc2Nhbi5jOjc0NjpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2IHJlcS1cXHUwMDNldHNmX3JlcG9ydF9saW5rX2lkIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0Ny1cXHQgICAgIShzZGF0YS1cXHUwMDNldmlmLmFjdGl2ZV9saW5rcyBcXHUwMDI2IEJJVChyZXEtXFx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCkpKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9ODIwPWllZWU4MDIxMV90eF9oX3NlcXVlbmNlKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy04NDctXFx0aWYgKHVubGlrZWx5KGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci1cXHUwMDNlYWRkcjEpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmM6ODQ4OlxcdFxcdCAgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoaW5mby1cXHUwMDNlY29udHJvbC52aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmMtODQ5LVxcdFxcdCAgICAgaW5mby1cXHUwMDNlY29udHJvbC52aWYtXFx1MDAzZXR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjctXFxubmV0L21hYzgwMjExL3R4LmM6MjY2ODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvdHguYy0yNjY5LVxcdFxcdGNoYW5jdHhfY29uZiA9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNjg0LVxcdFxcdH1cXG5uZXQvbWFjODAyMTEvdHguYzoyNjg1OlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMjY4Ni1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICphcF9zZGF0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDItXFxubmV0L21hYzgwMjExL3R4LmM6MjcwMzpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2IHN0YSBcXHUwMDI2XFx1MDAyNiAhc3RhLVxcdTAwM2VzdGEubWxvKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMjcwNC1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaztcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI4ODEtXFx0XFx0XFx0YmFuZCA9IE5VTV9OTDgwMjExX0JBTkRTO1xcbm5ldC9tYWM4MDIxMS90eC5jOjI4ODI6XFx0XFx0fSBlbHNlIGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMjg4My1cXHRcXHRcXHRyZXQgPSAtRU5PVENPTk47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zMDc4PXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTMxMjctXFxubmV0L21hYzgwMjExL3R4LmM6MzEyODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTMxMjktXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzIwNi1cXHRcXHRidWlsZC5kYV9vZmZzID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9oZHIsIGFkZHIxKTtcXG5uZXQvbWFjODAyMTEvdHguYzozMjA3OlxcdFxcdGlmIChzdGEtXFx1MDAzZXN0YS5tbG8gfHwgIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTMyMDgtXFx0XFx0XFx0bWVtY3B5KGhkci1cXHUwMDNlYWRkcjIsIHNkYXRhLVxcdTAwM2V2aWYuYWRkciwgRVRIX0FMRU4pO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDU2MT1uZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDU4My1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjQ1ODQ6XFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYy00NTg1LVxcdFxcdCAgICgoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NzUxPXN0YXRpYyBib29sIGllZWU4MDIxMV9jaGVja19tY2FzdF9vZmZsb2FkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDc1NS1cXG5uZXQvbWFjODAyMTEvdHguYzo0NzU2OlxcdGlmICgoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmMtNDc1Ny1cXHQgICAgIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ5MTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX3R4X3BlbmRpbmdfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDkyNC1cXHRcXHQvKiB1cGRhdGUgYmFuZCBvbmx5IGZvciBub24tTUxEICovXFxubmV0L21hYzgwMjExL3R4LmM6NDkyNTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ5MjYtXFx0XFx0XFx0Y2hhbmN0eF9jb25mID1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTYzOTY9dm9pZCBfX2llZWU4MDIxMV90eF9za2JfdGlkX2JhbmQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NDEzLVxcbm5ldC9tYWM4MDIxMS90eC5jOjY0MTQ6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy02NDE1LVxcdFxcdGxpbmsgPSAwO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjQ1Mz12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjQ2Mi1cXHRcXHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XFxubmV0L21hYzgwMjExL3R4LmM6NjQ2MzpcXHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy02NDY0LVxcdFxcdFdBUk5fT04obGlua19pZCBcXHUwMDNlPSAwKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzND12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDItXFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE0MzpcXHRib29sIG11bHRpX2xpbmsgPSBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZik7XFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTQ0LVxcdHN0cnVjdCB7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTE4ODI9aW50IGllZWU4MDIxMV9yZWNvbmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3MS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIwNzI6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3My1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpvbGRbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXSA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEyOC1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMjk6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMwLVxcdFxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfSURMRTtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMy1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTM0OlxcdFxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTM1LVxcdFxcdFxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfQVNTT0MgfFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTcxLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE3MjpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3My1cXHRcXHRcXHRcXHRpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTg1LVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE4NjpcXHRcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTg3LVxcdFxcdFxcdFxcdFxcdGllZWU4MDIxMV9yZWNvbmZpZ19hcF9saW5rcyhsb2NhbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzM6MTguOTUyMTcyNDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc4OTYwNzk4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkZ1enppbmcgdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgRnVuY3Rpb24gaW4gTUFDODAyMTEqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgTUFDODAyMTEgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgZnVuY3Rpb24uIEdpdmVuIHRoYXQgaXQncyBoYW5kbGluZyBhdXRoZW50aWNhdGlvbiBmbGFncywgdGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zIFwicG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHlcIiB0byBtZS4gQXV0aGVudGljYXRpb24sIGVzcGVjaWFsbHkgaW4gd2lyZWxlc3MgY29udGV4dHMsIGlzIG9mdGVuIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBNaXNjb25maWd1cmF0aW9ucywgdW5leHBlY3RlZCBpbnB1dHMuLi4gdGhlc2UgY2FuIGFsbCBsZWFkIHRvIGV4cGxvaXRhYmxlIGZsYXdzLlxuXG5UaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBXZSBuZWVkIHRvIGZvcm11bGF0ZSBhIHRlc3Qgc3RyYXRlZ3ksIGRlc2lnbiByZWxldmFudCBmdXp6IGlucHV0cywgYW5kIGNhcmVmdWxseSBvYnNlcnZlIHRoZSByZXN1bHRzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBob3cgZmxhZyBzZXR0aW5ncyBhcmUgaGFuZGxlZCBhbmQgbG9vayBmb3IgYW55IGludGVyZXN0aW5nIGJlaGF2aW9ycyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gV2UnbGwgbmVlZCB0byBjYXJlZnVsbHkgY3JhZnQgdGhlIHRlc3Qgc3VpdGUsIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSByZXN1bHRzIGdhdGhlcmluZyBpbmZyYXN0cnVjdHVyZS4gVGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBleHBvc2Ugc29tZSBpbnRlcmVzdGluZyBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTI2LCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjM2Ljg0ODI1NjAxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzU3ODAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaW4gbWFjODAyMTEgdG8gYWRkIGNoZWNrcyBmb3IgTUxEIChNdWx0aS1MaW5rIERldmljZSkgYW5kIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXppbmcgcmF0ZSBjb250cm9sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgbG9naWMsIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBhbmQgbWFjODAyMTFfaHdzaW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-21 11:13:20 +0000 UTC FinishedAt: 2026-07-21 11:33:39 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "bpf-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git", "commit_hash": "dc59e4fea9d83f03bad6bddf3fa2e52491777482", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "MAC80211" ], "series_id": "df2123bf-e2c2-4236-8ad1-2b7d3fbfc144" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "sta_apply_auth_flags" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMyPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O01BQzgwMjExJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBpbiBtYWM4MDIxMSB0byBhZGQgY2hlY2tzIGZvciBNTEQgKE11bHRpLUxpbmsgRGV2aWNlKSBhbmQgY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24gYmVmb3JlIGluaXRpYWxpemluZyByYXRlIGNvbnRyb2wuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBtYWM4MDIxMSBsb2dpYywgcmVhY2hhYmxlIHZpYSBubDgwMjExIGFuZCBtYWM4MDIxMV9od3NpbSwgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzI8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBkOGM1ZGExOTNhNTI3NmI2MDFhMzJlNzAyY2E1ZjBhMDE1YjM0MjU2XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBKdWwgMjEgMTE6MzI6NTMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L21hYzgwMjExL2NmZy5jIGIvbmV0L21hYzgwMjExL2NmZy5jXG5pbmRleCAzYjU4YWY1OWY3ZTQyOS4uZDQzMzFmYmFlMGQ4OTIgMTAwNjQ0XG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuQEAgLTIxNDgsOCAmIzQzOzIxNDgsMTQgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbiYjNDM7XHRcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcbiYjNDM7XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbiYjNDM7XHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXG4mIzQzO1x0XHRcdFx0ICAgIHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcbiYjNDM7XHRcdFx0XHRyZXR1cm4gLUVJTlZBTDtcbiYjNDM7XG4gXHRcdFx0cmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTtcbiYjNDM7XHRcdH1cbiBcbiBcdFx0cmV0ID0gc3RhX2luZm9fbW92ZV9zdGF0ZShzdGEsIElFRUU4MDIxMV9TVEFfQVNTT0MpO1xuIFx0XHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMyPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtNQUM4MDIxMSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3N0YV9hcHBseV9hdXRoX2ZsYWdzJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaW4gbWFjODAyMTEgdG8gYWRkIGNoZWNrcyBmb3IgTUxEIChNdWx0aS1MaW5rIERldmljZSkgYW5kIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXppbmcgcmF0ZSBjb250cm9sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgbG9naWMsIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBhbmQgbWFjODAyMTFfaHdzaW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIERvIG5vdCBsaXN0IHRvbyBnZW5lcmljIGNvbmZpZ3MgKHdlIGFscmVhZHkgaGF2ZSB0aGVtIGVuYWJsZWQpLiBPbmx5IGxpc3QgdGhvc2UgdGhhdAogICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksCiAgIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBkOGM1ZGExOTNhNTI3NmI2MDFhMzJlNzAyY2E1ZjBhMDE1YjM0MjU2CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFR1ZSBKdWwgMjEgMTE6MzI6NTMgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbWFjODAyMTEvY2ZnLmMgYi9uZXQvbWFjODAyMTEvY2ZnLmMKaW5kZXggM2I1OGFmNTlmN2U0MjkuLmQ0MzMxZmJhZTBkODkyIDEwMDY0NAotLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L21hYzgwMjExL2NmZy5jCkBAIC0yMTQ4LDggJiM0MzsyMTQ4LDE0IEBAIHN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsCiAJCSAqIHdlbGwuIFNvbWUgZHJpdmVycyByZXF1aXJlIHJhdGUgY29udHJvbCBpbml0aWFsaXplZAogCQkgKiBiZWZvcmUgZHJ2X3N0YV9zdGF0ZSgpIGlzIGNhbGxlZC4KIAkJICovCi0JCWlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpCiYjNDM7CQlpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7CiYjNDM7CQkJaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZikgJmFtcDsmYW1wOwomIzQzOwkJCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKAomIzQzOwkJCQkgICAgc3RhLSZndDtzZGF0YS0mZ3Q7dmlmLmJzc19jb25mLmNoYW5jdHhfY29uZikpCiYjNDM7CQkJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCQkJcmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTsKJiM0MzsJCX0KIAogCQlyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7CiAJCWlmIChyZXQpCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMyPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwMzIKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxOTYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgTUFDODAyMTEgUGF0Y2gqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AsIHNwZWNpZmljYWxseSB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBmdW5jdGlvbi4gSXQgc2VlbXMgdG8gYWRkIGEgbmV3IGNoZWNrLiBUaGlzIGlzIGltcG9ydGFudCBiZWNhdXNlIGl0IGNoYW5nZXMgdGhlIGV4aXN0aW5nIGJlaGF2aW9yIG9mIGBtYWM4MDIxMWAsIGFmZmVjdGluZyBob3cgd2UgaGFuZGxlIGF1dGhlbnRpY2F0aW9uIGZsYWdzIGZvciBzdGF0aW9ucy4gVGhlIHBhdGNoIGludHJvZHVjZXMgYSBjb25kaXRpb25hbCBzdGF0ZW1lbnQ6CgpgYGBjCgkJaWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkgewoJCQlpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKCZhbXA7c3RhLSZndDtzZGF0YS0mZ3Q7dmlmKSAmYW1wOyZhbXA7CgkJCSAgICAhcmN1X2FjY2Vzc19wb2ludGVyKAoJCQkJICAgIHN0YS0mZ3Q7c2RhdGEtJmd0O3ZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKQoJCQkJcmV0dXJuIC1FSU5WQUw7CgoJCQlyYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpOwoJCX0KYGBgCgpFc3NlbnRpYWxseSwgaWYgYSBzdGF0aW9uIGlzbiYjMzk7dCB1c2luZyByYXRlIGNvbnRyb2wsIGFuZCBpdCYjMzk7cyAqbm90KiBhIG1lc2ggbGluaywgYW5kIGl0ICpkb2VzbiYjMzk7dCogaGF2ZSBhIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uLCB0aGVuIGl0JiMzOTtzIGNvbnNpZGVyZWQgYW4gZXJyb3IuIFRoaXMgdHJpZ2dlcnMgYHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSlgLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCB0aGlzIHBvdGVudGlhbGx5IGltcGFjdHMgZXhpc3RpbmcgY29uZmlndXJhdGlvbnMgd2hlcmUgdGhlc2UgY29uZGl0aW9ucyBhcmUgbm90IG1ldCwgc28gYSBkZWVwIGRpdmUgaW50byB0aGUgaW1wbGljYXRpb25zIGlzIHdhcnJhbnRlZC4gVGhpcyBpcyBmdW5jdGlvbmFsbHkgYSBjaGFuZ2UgaW4gdGhlIGRyaXZlciBhbmQgcmVhY2hhYmxlIHZpYSB0aGUgYG1hYzgwMjExX2h3c2ltYCBtb2R1bGUsIHdoaWNoIG1lYW5zIEkgY2FuIHJlYWRpbHkgdGVzdCB0aGlzIG5ldyBiZWhhdmlvci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyBjaGVjayYjMzk7cyBwdXJwb3NlIGFuZCBob3cgaXQgYWx0ZXJzIHRoZSBleGlzdGluZyBsb2dpYy4gSSYjMzk7bGwgbmVlZCB0byBjYXJlZnVsbHkgZXhhbWluZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGFuZCB0cmFjZSBpdHMgY2FsbGVycyB0byBmdWxseSBncmFzcCB0aGUgcmFtaWZpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS4gVW5kZXJzdGFuZGluZyBpdHMgY2FsbCBncmFwaCBhbmQgdGhlIHNpdHVhdGlvbnMgaW4gd2hpY2ggaXQgd2lsbCBiZSBleGVjdXRlZCB3aWxsIGJlIGNyaXRpY2FsLiBJJiMzOTttIGdvaW5nIHRvIGRldGVybWluZSB1bmRlciB3aGljaCBjaXJjdW1zdGFuY2VzIHRoaXMgcGFydGljdWxhciBjb25kaXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhX2FwcGx5X2F1dGhfZmxhZ3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9jZmcuYz0yMDEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3BfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEyOC1cbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI5OnN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjEzMC1cdFx0XHRcdHN0cnVjdCBzdGFfaW5mbyAqc3RhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNDU1PXN0YXRpYyBpbnQgc3RhX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI1MDAtXHQgICAgICAoc2V0IFx1MDAyNiBCSVQoTkw4MDIxMV9TVEFfRkxBR19BU1NPQ0lBVEVEKSkpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUwMTpcdFx0cmV0ID0gc3RhX2FwcGx5X2F1dGhfZmxhZ3MobG9jYWwsIHN0YSwgbWFzaywgc2V0KTtcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTAyLVx0XHRpZiAocmV0KVxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjIzLVx0ICAgIHNldCBcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpIHtcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNjI0Olx0XHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xubmV0L21hYzgwMjExL2NmZy5jLTI2MjUtXHRcdGlmIChyZXQpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA3MwoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDUzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gbWVudGFsIHByb2Nlc3Npbmc6CgoqKkFuYWx5emluZyB0aGUgQXV0aGVudGljYXRpb24gRmxhZ3MgQXBwbGljYXRpb24qKgoKUmlnaHQsIHNvIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZC4gTXkgaW1tZWRpYXRlIHF1ZXN0aW9uIGlzICp3aGVyZSogaXQmIzM5O3MgYmVpbmcgY2FsbGVkIGZyb20uIEl0IGxvb2tzIGxpa2UgYHN0YV9hcHBseV9wYXJhbWV0ZXJzYCBpcyB0aGUgbGlrZWx5IGN1bHByaXQsIHdoaWNoIG1ha2VzIHNlbnNlLiBCYXNlZCBvbiB0aGUgbmFtaW5nLCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgIHNlZW1zIGxpa2UgdGhlIGZ1bmN0aW9uIHRoYXQgd291bGQgaGFuZGxlIGFwcGx5aW5nIG5ldyBwYXJhbWV0ZXJzIHRvIGEgc3RhdGlvbi4gVGhhdCBmdW5jdGlvbiBpcyBwcm9iYWJseSBiZWluZyB0cmlnZ2VyZWQgYnkgc29tZXRoaW5nIGxpa2UgYG5sODAyMTFfc2V0X3N0YXRpb25gIG9yIGEgc2ltaWxhciBmdW5jdGlvbiBjYWxsLiBJIG5lZWQgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AuIExldCYjMzk7cyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGNoYWluLiBJdCYjMzk7cyBhIGtleSBwYXJ0IG9mIHRoZSBmbG93IGZvciBzZXR0aW5nIHN0YXRpb24tc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgYW5kIGF1dGhlbnRpY2F0aW9uIGlzIGEgbWFqb3IgYXNwZWN0IHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzIxIDExOjMzPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3N0YV9hcHBseV9wYXJhbWV0ZXJzJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvY2ZnLmM9MjI2Nj1zdGF0aWMgaW50IHN0YV9saW5rX2FwcGx5X3BhcmFtZXRlcnMoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI0NTQtXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjQ1NTpzdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxubmV0L21hYzgwMjExL2NmZy5jLTI0NTYtXHRcdFx0XHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjYzNj1zdGF0aWMgaW50IGllZWU4MDIxMV9hZGRfc3RhdGlvbihzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lyZWxlc3NfZGV2ICp3ZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjg2LVx0LyogVGhvdWdoIHRoZSBtdXRleCBpcyBub3QgbmVlZGVkIGhlcmUgKHNpbmNlIHRoZSBzdGF0aW9uIGlzIG5vdFxubmV0L21hYzgwMjExL2NmZy5jOjI2ODc6XHQgKiB2aXNpYmxlIHlldCksIHN0YV9hcHBseV9wYXJhbWV0ZXJzIChhbmQgaW5uZXIgZnVuY3Rpb25zKSByZXF1aXJlXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY4OC1cdCAqIHRoZSBtdXRleCBkdWUgdG8gb3RoZXIgcGF0aHMuXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY4OS1cdCAqL1xubmV0L21hYzgwMjExL2NmZy5jOjI2OTA6XHRlcnIgPSBzdGFfYXBwbHlfcGFyYW1ldGVycyhsb2NhbCwgc3RhLCBwYXJhbXMpO1xubmV0L21hYzgwMjExL2NmZy5jLTI2OTEtXHRpZiAoZXJyKSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI3MDctXHQvKlxubmV0L21hYzgwMjExL2NmZy5jOjI3MDg6XHQgKiBpZWVlODAyMTFfbmFuX3VwZGF0ZV9uZGlfY2FycmllciB3YXMgY2FsbGVkIGZyb20gc3RhX2FwcGx5X3BhcmFtZXRlcnMsXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcwOS1cdCAqIGJ1dCB0aGVuIHdlIGRpZCBub3QgaGF2ZSB0aGUgU1RBIGluIHRoZSBsaXN0LlxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNzg5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTI4ODItXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjg4MzpcdGVyciA9IHN0YV9hcHBseV9wYXJhbWV0ZXJzKGxvY2FsLCBzdGEsIHBhcmFtcyk7XG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg4NC1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzkzNQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDg1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB3aGF0JiMzOTtzIGdvaW5nIG9uLCB0aGlua2luZyBpdCB0aHJvdWdoIGZyb20gbXkgZXhwZXJ0IHBlcnNwZWN0aXZlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBTdGF0aW9uIFBhcmFtZXRlciBBcHBsaWNhdGlvbioqCgpSaWdodCwgbGV0IG1lIHNlZS4uLiBJJiMzOTttIHRyYWNpbmcgc29tZSBpbnRlcmFjdGlvbnMgcmVsYXRlZCB0byBzdGF0aW9uIG1hbmFnZW1lbnQgaW4gdGhlIDgwMi4xMSBzdGFjay4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgYGllZWU4MDIxMV9hZGRfc3RhdGlvbmAgYW5kIGBpZWVlODAyMTFfY2hhbmdlX3N0YXRpb25gIGFyZSBjYWxsaW5nIGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AuIEkgaW1tZWRpYXRlbHkgcmVjb2duaXplIHRoYXQgdGhlc2UgZnVuY3Rpb25zLCBhbmQgdGhlcmVmb3JlIGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AsIHVsdGltYXRlbHkgaW50ZXJhY3Qgd2l0aCBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgLiBJIGtub3cgdGhlc2UgYXJlIGFsbCBsaWtlbHkgcmVhY2hhYmxlIHZpYSBgbmw4MDIxMWAsIHdoaWNoIGlzbiYjMzk7dCBzdXJwcmlzaW5nLgoKR2l2ZW4gdGhpcyBwYXRoLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgc3BlY2lmaWNzIG9mIGhvdyB0aGlzIGJlaGF2aW9yIGlzIGNvbmZpZ3VyZWQuIEkga25vdyB0aGF0IHRoZSB1bmRlcmx5aW5nIGNvbmZpZ3VyYXRpb24gaXMgYE1BQzgwMjExYC4gTm93LCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgaXMgdG8gZGl2ZSBpbnRvIHRoZSBgTUFDODAyMTFgIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdG8gdW5kZXJzdGFuZCBob3cgdGhhdCBpbXBhY3RzIHRoZXNlIHN0YXRpb24gcGFyYW1ldGVyIGFwcGxpY2F0aW9ucy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBhc3BlY3RzIGFyZSBjb250cm9sbGVkIHRoZXJlIGFuZCBob3cgdGhlc2UgY2FsbHMgdHJhbnNsYXRlIGludG8gYWN0dWFsIGJlaGF2aW9yIGJhc2VkIG9uIHRoaXMgY29uZmlndXJhdGlvbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgTUFDODAyMTEmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyOmNvbmZpZyBNQUM4MDIxMVxubmV0L21hYzgwMjExL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0dlbmVyaWMgSUVFRSA4MDIuMTEgTmV0d29ya2luZyBTdGFjayAobWFjODAyMTEpXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MTk9aWYgTUFDODAyMTEgIT0gblxubmV0L21hYzgwMjExL0tjb25maWctMjAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMTpjb25maWcgTUFDODAyMTFfSEFTX1JDXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMi1cdGJvb2xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzLVxubmV0L21hYzgwMjExL0tjb25maWc6MjQ6Y29uZmlnIE1BQzgwMjExX1JDX01JTlNUUkVMXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cdGJvb2wgXCYjMzQ7TWluc3RyZWxcJiMzNDsgaWYgRVhQRVJUXG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9MzE9Y2hvaWNlXG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNDAtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo0MTpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVF9NSU5TVFJFTFxubmV0L21hYzgwMjExL0tjb25maWctNDItXHRib29sIFwmIzM0O01pbnN0cmVsXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWc9NDg9ZW5kY2hvaWNlXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjUwOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUXG5uZXQvbWFjODAyMTEvS2NvbmZpZy01MS1cdHN0cmluZ1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnPTU3PWNvbW1lbnQgXCYjMzQ7U29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctNTktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo2MDpjb25maWcgTUFDODAyMTFfS1VOSVRfVEVTVFxubmV0L21hYzgwMjExL0tjb25maWctNjEtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgbWFjODAyMTFcJiMzNDsgaWYgIUtVTklUX0FMTF9URVNUU1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTY5LVxubmV0L21hYzgwMjExL0tjb25maWc6NzA6Y29uZmlnIE1BQzgwMjExX01FU0hcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVx0Ym9vbCBcJiMzNDtFbmFibGUgbWFjODAyMTEgbWVzaCBuZXR3b3JraW5nIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy03OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXG5uZXQvbWFjODAyMTEvS2NvbmZpZy04MC1cdGJvb2wgXCYjMzQ7RW5hYmxlIExFRCB0cmlnZ2Vyc1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxubmV0L21hYzgwMjExL0tjb25maWc6ODg6Y29uZmlnIE1BQzgwMjExX0RFQlVHRlNcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg5LVx0Ym9vbCBcJiMzNDtFeHBvcnQgbWFjODAyMTEgaW50ZXJuYWxzIGluIERlYnVnRlNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy05Ni1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjk3OmNvbmZpZyBNQUM4MDIxMV9NRVNTQUdFX1RSQUNJTkdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVx0Ym9vbCBcJiMzNDtUcmFjZSBhbGwgbWFjODAyMTEgZGVidWcgbWVzc2FnZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMDktXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTEtXHRib29sIFwmIzM0O1NlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTY6Y29uZmlnIE1BQzgwMjExX05PSU5MSU5FXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTctXHRib29sIFwmIzM0O0RvIG5vdCBpbmxpbmUgVFgvUlggaGFuZGxlcnNcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMzEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMzI6Y29uZmlnIE1BQzgwMjExX1ZFUkJPU0VfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBkZWJ1Z2dpbmcgb3V0cHV0XCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTQyLVxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDQtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFwmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE1NDpjb25maWcgTUFDODAyMTFfU1RBX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNTUtXHRib29sIFwmIzM0O1ZlcmJvc2Ugc3RhdGlvbiBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjItXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNjM6Y29uZmlnIE1BQzgwMjExX0hUX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXHRib29sIFwmIzM0O1ZlcmJvc2UgSFQgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTc0LVxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE3Ni1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBPQ0IgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxubmV0L21hYzgwMjExL0tjb25maWc6MTg2OmNvbmZpZyBNQUM4MDIxMV9JQlNTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xODctXHRib29sIFwmIzM0O1ZlcmJvc2UgSUJTUyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTYtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxOTc6Y29uZmlnIE1BQzgwMjExX1BTX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXHRib29sIFwmIzM0O1ZlcmJvc2UgcG93ZXJzYXZlIG1vZGUgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjA4LVxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIxMC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyMjI6Y29uZmlnIE1BQzgwMjExX01QQVRIX0RFQlVHXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjMtXHRib29sIFwmIzM0O1ZlcmJvc2UgbWVzaCBwYXRoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjIzNTpjb25maWcgTUFDODAyMTFfTUhXTVBfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIEhXTVAgcm91dGluZyBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI1OTpjb25maWcgTUFDODAyMTFfTUVTSF9DU0FfREVCVUdcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2MC1cdGJvb2wgXCYjMzQ7VmVyYm9zZSBtZXNoIGNoYW5uZWwgc3dpdGNoIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI2OS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI3MDpjb25maWcgTUFDODAyMTFfTUVTSF9QU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjcxLVx0Ym9vbCBcJiMzNDtWZXJib3NlIG1lc2ggcG93ZXJzYXZlIGRlYnVnZ2luZ1wmIzM0O1xuLS1cbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4MC1cbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xubmV0L21hYzgwMjExL0tjb25maWctMjgyLVx0Ym9vbCBcJiMzNDtWZXJib3NlIFRETFMgZGVidWdnaW5nXCYjMzQ7XG4tLVxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxubmV0L21hYzgwMjExL0tjb25maWc6MjkzOmNvbmZpZyBNQUM4MDIxMV9ERUJVR19DT1VOVEVSU1xubmV0L21hYzgwMjExL0tjb25maWctMjk0LVx0Ym9vbCBcJiMzNDtFeHRyYSBzdGF0aXN0aWNzIGZvciBUWC9SWCBkZWJ1Z2dpbmdcJiMzNDtcbi0tXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDctXG5uZXQvbWFjODAyMTEvS2NvbmZpZzozMDg6Y29uZmlnIE1BQzgwMjExX1NUQV9IQVNIX01BWF9TSVpFXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXHRpbnQgXCYjMzQ7U3RhdGlvbiBoYXNoIHRhYmxlIG1heGltdW0gc2l6ZVwmIzM0OyBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjQ4MAoJCQkJCQkJb3V0cHV0OiA0NAoJCQkJCQkJdGhvdWdodHM6IDE0NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE1BQzgwMjExIENvbmZpZ3VyYXRpb24gYW5kIFBhdGNoKioKCk9rYXksIHNvIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBkZWZpbml0ZWx5IE1BQzgwMjExLiBHb29kLCB0aGF0JiMzOTtzIHdoYXQgSSBleHBlY3RlZC4gVGhlIG1lbnRpb24gb2YgTUFDODAyMTFfSFdTSU0gaXMgdXNlZnVsOyB3ZSBjYW4gbGV2ZXJhZ2UgdGhhdCBmb3IgdGhvcm91Z2ggdGVzdGluZy4gQmVmb3JlIEkgZGl2ZSB0b28gZGVlcCBpbnRvIHRoZSBwYXRjaCBpdHNlbGYsIGxldCYjMzk7cyBzZWUgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBjb25maWd1cmF0aW9uIGRlcGVuZGVuY2llcyB3ZSBuZWVkIHRvIGJlIGF3YXJlIG9mLiBHb3R0YSBtYWtlIHN1cmUgd2UgY292ZXIgYWxsIG91ciBiYXNlcy4KClJpZ2h0LCB0aGUgY29yZSBjaGFuZ2UgaXMgaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AsIHNwZWNpZmljYWxseSB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uZmlybSBmcm9tIHRoZSBvdXRzZXQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBpZWVlODAyMTFfdmlmX2lzX21sZCgmYW1wO3N0YS0mZ3Q7c2RhdGEtJmd0O3ZpZilgLiBBaCwgTUxELi4uIE11bHRpLUxpbmsgRGV2aWNlLiBUaGF0JiMzOTtzIFdpLUZpIDcgdGVycml0b3J5LgoKVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSYjMzk7cyBhIGRlZGljYXRlZCBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgTUxEIHRoYXQmIzM5O3MgcmVsYXRlZC4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHBvc3NpYmx5IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUmIzM5O3MgYSBzcGVjaWZpYyBmbGFnIG9yIHNldHRpbmcgdGhhdCBlbmFibGVzIG9yIGRpc2FibGVzIHRoaXMuIE1ha2luZyBzdXJlIHRoaXMgZmVhdHVyZSBpcyBwcm9wZXJseSBlbmFibGVkIGlzIGtleSB0byB1bmRlcnN0YW5kaW5nIHRoZSBmdWxsIGltcGxpY2F0aW9uIG9mIHRoZSBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aWVlZTgwMjExX3ZpZl9pc19tbGQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbWFjODAyMTEvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS9hcC5jPTUxPWllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvYXAuYy02OC1cbm5ldC9tYWM4MDIxMS9hcC5jOjY5Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL2FwLmMtNzAtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9Mjc9aWVlZTgwMjExX2xpbmtfb3JfZGVmbGluayhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgaW50IGxpbmtfaWQsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM3LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9jZmcuYzozODpcdFx0aWYgKHJlcXVpcmVfdmFsaWQgXHUwMDI2XHUwMDI2IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzktXHRcdFx0cmV0dXJuIEVSUl9QVFIoLUVJTlZBTCk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTIxMjk9c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1MS1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xubmV0L21hYzgwMjExL2NmZy5jOjIxNTI6XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUzLVx0XHRcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0zOTEyPWludCBfX2llZWU4MDIxMV9yZXF1ZXN0X3NtcHNfbWdkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc0LVx0XHRcdFx0XHQgYXAsIGFwLFxubmV0L21hYzgwMjExL2NmZy5jOjM5NzU6XHRcdFx0XHRcdCBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpID9cbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc2LVx0XHRcdFx0XHQgbGluay1cdTAwM2VsaW5rX2lkIDogLTEpO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz00OTU4PXN0YXRpYyBpbnQgaWVlZTgwMjExX3Byb2JlX2NsaWVudChzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3QgbmV0X2RldmljZSAqZGV2LFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg3LVxubmV0L21hYzgwMjExL2NmZy5jOjQ5ODg6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL2NmZy5jLTQ5ODktXHRcdGlmIChzdGEtXHUwMDNlc3RhLm1sbykge1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQyLVx0bWVtY3B5KG51bGxmdW5jLVx1MDAzZWFkZHIxLCBzdGEtXHUwMDNlc3RhLmFkZHIsIEVUSF9BTEVOKTtcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDQzOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLm1sbykge1xubmV0L21hYzgwMjExL2NmZy5jLTUwNDQtXHRcdG1lbWNweShudWxsZnVuYy1cdTAwM2VhZGRyMiwgY29uZi1cdTAwM2VhZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcdFx0XHRcdFx0XHRcdFx0XHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTEzOS1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0MDpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQxLVx0XHRcdF9zZGF0YV9pbmZvKChsaW5rKS1cdTAwM2VzZGF0YSwgXCYjMzQ7W2xpbmsgJWRdIFwmIzM0OyBmbXQsXHRcXFxuLS1cbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0OC1cdGRvIHtcdFx0XHRcdFx0XHRcdFx0XFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0OTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNihsaW5rKS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSAgICAgICAgICBcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTUwLVx0XHRcdF9zZGF0YV9lcnIoKGxpbmspLVx1MDAzZXNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTU5LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTYwOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTYxLVx0XHRcdF9zZGF0YV9pbmZvKHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCwgbGlua19pZCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY3LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTY4Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KHNkYXRhKS1cdTAwM2V2aWYpKVx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY5LVx0XHRcdF9zZGF0YV9kYmcocHJpbnQsIHNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTczOT1pZWVlODAyMTFfZ2V0X3NiYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDQtXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNzQ1Olx0V0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKTtcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDYtXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXG4tLVxubmV0L21hYzgwMjExL2lmYWNlLmMtNTYyLVxubmV0L21hYzgwMjExL2lmYWNlLmM6NTYzOlx0V0FSTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpLFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTY0LVx0ICAgICBcJiMzNDtkZXN0cm95aW5nIGludGVyZmFjZSB3aXRoIHZhbGlkIGxpbmtzIDB4JTA0eFxcblwmIzM0Oyxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTc0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg3LVx0LyogZm9yIG5vdywgZG9uJiMzOTt0IHN1cHBvcnQgY2hhbmdpbmcgd2hpbGUgbGlua3MgZXhpc3QgKi9cbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5ODg6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODktXHRcdHJldHVybiAtRUJVU1k7XG4tLVxubmV0L21hYzgwMjExL21haW4uYz0zMzY9dm9pZCBpZWVlODAyMTFfYnNzX2luZm9fY2hhbmdlX25vdGlmeShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Mi1cbm5ldC9tYWM4MDIxMS9tYWluLmM6MzQzOlx0V0FSTl9PTl9PTkNFKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpO1xubmV0L21hYzgwMjExL21haW4uYy0zNDQtXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0yNDE0PWllZWU4MDIxMV9hc3NvY19hZGRfbWxfZWxlbShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MjgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI0Mjk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MzAtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODI9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2MzktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI2NDA6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0yNjQxLVx0XHQvKiBjb25zaWRlciB0aGUgbXVsdGktbGluayBlbGVtZW50IHdpdGggU1RBIHByb2ZpbGUgKi9cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQzOTQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9hc3NvY2lhdGVkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQxNTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTYtXHRcdCAgICAhKGllZWU4MDIxMV92aWZfdXNhYmxlX2xpbmtzKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2IEJJVChsaW5rX2lkKSkpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDM2LVxubmV0L21hYzgwMjExL21sbWUuYzo0NDM3Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzOC1cdFx0Zm9yIChsaW5rX2lkID0gMDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NjgtXHQvKiBsZWF2ZSB0aGlzIGhlcmUgdG8gbm90IGNoYW5nZSBvcmRlcmluZyBpbiBub24tTUxPIGNhc2VzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0NzAtXHRcdGllZWU4MDIxMV9yZWNhbGNfc21wcyhzZGF0YSwgXHUwMDI2c2RhdGEtXHUwMDNlZGVmbGluayk7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00NDc2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZfcmVzZXQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDgwLVxubmV0L21hYzgwMjExL21sbWUuYzo0NDgxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODItXHQgICAgIShzZGF0YS1cdTAwM2V1Lm1nZC5yZWNvbmYuYWRkZWRfbGlua3MgfFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzMi1cdC8qIGZpbmFsbHkgcmVzZXQgYWxsIEJTUyAvIGNvbmZpZyBwYXJhbWV0ZXJzICovXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2MzM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzQtXHRcdGNoYW5nZWQgfD0gaWVlZTgwMjExX3Jlc2V0X2VycF9pbmZvKHNkYXRhKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTctXHQgICAgICAgc2l6ZW9mKHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5tdV9ncm91cC5wb3NpdGlvbikpO1xubmV0L21hYzgwMjExL21sbWUuYzo0NjU4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy00NjU5LVx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX01VX0dST1VQUztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzEtXHRzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYucW9zID0gZmFsc2U7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NzI6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3My1cdFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9RT1M7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00OTcyPXN0cnVjdCBza19idWZmICppZWVlODAyMTFfYXBfcHJvYmVyZXFfZ2V0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4NC1cdGlmIChXQVJOX09OKHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDk4NTpcdFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpKVxubmV0L21hYzgwMjExL21sbWUuYy00OTg2LVx0XHRyZXR1cm4gTlVMTDtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzMDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzUtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjUzMzY6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzctXHRcdFx0XHRkYXRhLmFwX21sZF9hZGRyID0gYXNzb2NfZGF0YS1cdTAwM2VhcF9hZGRyO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NjkyND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfYXNzb2Nfc3VjY2VzcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NDgtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjY5NDk6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy02OTUwLVx0XHRpZiAoIWVsZW1zLVx1MDAzZW1sX2Jhc2ljKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzAxMTpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTItXHRcdFx0bGlua19pbmZvKGxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03MTM1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MjcyLVxubmV0L21hYzgwMjExL21sbWUuYzo3MjczOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy03Mjc0LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfbWxlX2Jhc2ljX2NvbW1vbl9pbmZvICpjb21tb247XG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MzM5LVxubmV0L21hYzgwMjExL21sbWUuYzo3MzQwOlx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzM0MS1cdFx0ZXRoZXJfYWRkcl9jb3B5KGFwX21sZF9hZGRyLCBzZGF0YS1cdTAwM2V2aWYuY2ZnLmFwX2FkZHIpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzYzMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25maWd1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzYzOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzY0MDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fCAhZWxlbXMtXHUwMDNlbWxfcmVjb25mKVxubmV0L21hYzgwMjExL21sbWUuYy03NjQxLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03ODAxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2Fkdl90dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwNy1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzgwODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwOS1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODA1Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9iZWFjb24oc3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbmssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04MTE3LVx0aWYgKGlmbWdkLVx1MDAzZWFzc29jX2RhdGEgXHUwMDI2XHUwMDI2IGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbmVlZF9iZWFjb24gXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTg6XHQgICAgIVdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTktXHQgICAgaWVlZTgwMjExX3J4X291cl9iZWFjb24oYnNzaWQsIGlmbWdkLVx1MDAzZWFzc29jX2RhdGEtXHUwMDNlbGlua1swXS5ic3MpKSB7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04NTQxPWludCBpZWVlODAyMTFfcmVxX25lZ190dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0Ni1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODU0NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ4LVx0ICAgICEoc2RhdGEtXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3MDk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODcyMTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMi1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODc3Mz1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXMoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04Nzc2LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODc3NzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc4LVx0ICAgIG1nbXQtXHUwMDNldS5hY3Rpb24udHRsbV9yZXMuZGlhbG9nX3Rva2VuICE9IHNkYXRhLVx1MDAzZXUubWdkLmRpYWxvZ190b2tlbl9hbGxvYylcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg4OTU9c3RhdGljIGludCBpZWVlODAyMTFfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTItXHRpZiAoYXV0aF9kYXRhLVx1MDAzZWFsZ29yaXRobSA9PSBXTEFOX0FVVEhfRVBQS0UgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvbWxtZS5jOjg5MTM6XHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNC1cdCAgICAhY2ZnODAyMTFfZmluZF9leHRfZWxlbShXTEFOX0VJRF9FWFRfRUhUX01VTFRJX0xJTkssXG4tLVxubmV0L21hYzgwMjExL21sbWUuYz05ODQyPWludCBpZWVlODAyMTFfbWdkX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0MC0gZXJyX2NsZWFyOlxubmV0L21hYzgwMjExL21sbWUuYzoxMDA0MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy0xMDA0Mi1cdFx0ZXRoX3plcm9fYWRkcihzZGF0YS1cdTAwM2VkZWZsaW5rLnUubWdkLmJzc2lkKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODY4PWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODQtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwODg1Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg2LVx0ICAgIGxlbiBcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShtbF9yZWNvbmZfcmVzcCkgfHxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExMzMwPWludCBpZWVlODAyMTFfbWdkX2Fzc29jX21sX3JlY29uZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQxLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTM0MjpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0My1cdCAgICAhKHNkYXRhLVx1MDAzZXZpZi5jZmcubWxkX2NhcGFfb3AgXHUwMDI2XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTU1ND1zdGF0aWMgYm9vbCBpZWVlODAyMTFfbWdkX2VwY3Nfc3VwcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYwLVxubmV0L21hYzgwMjExL21sbWUuYzoxMTU2MTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjItXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNjI4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9lcGNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzYtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNjM3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8ICFlbGVtcy1cdTAwM2VtbF9lcGNzKVxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzOC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE3NDY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzQ5LXtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE3NTA6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NTEtXHQgICAgIXNkYXRhLVx1MDAzZXUubWdkLmVwY3MuZW5hYmxlZClcbi0tXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTMxPXZvaWQgcmF0ZV9jb250cm9sX3JhdGVfaW5pdChzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpXG4tLVxubmV0L21hYzgwMjExL3JhdGUuYy00NC1cdC8qIFNXIHJhdGUgY29udHJvbCBpc24mIzM5O3Qgc3VwcG9ydGVkIHdpdGggTUxPIHJpZ2h0IG5vdyAqL1xubmV0L21hYzgwMjExL3JhdGUuYzo0NTpcdGlmIChXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpKSlcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDYtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz0xNTIxPWllZWU4MDIxMV9yeF9oX2NoZWNrX2R1cChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTAtXG5uZXQvbWFjODAyMTEvcnguYzoxNTUxOlx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9yeC5jLTE1NTItXHRcdCAgICBzZGF0YS1cdTAwM2V2aWYudHlwZSAhPSBOTDgwMjExX0lGVFlQRV9TVEFUSU9OKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTI2ODQ9Ym9vbCBpZWVlODAyMTFfaXNfb3VyX2FkZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMjY5Mi1cbm5ldC9tYWM4MDIxMS9yeC5jOjI2OTM6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvcnguYy0yNjk0LVx0XHRyZXR1cm4gZmFsc2U7XG4tLVxubmV0L21hYzgwMjExL3J4LmM9NDM0MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZGF0YV9zZXRfc3RhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXG4tLVxubmV0L21hYzgwMjExL3J4LmMtNDM1Ni1cdGlmIChsaW5rX2lkIFx1MDAzYyAwKSB7XG5uZXQvbWFjODAyMTEvcnguYzo0MzU3Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTgtXHRcdCAgICBzdGEgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLnZhbGlkX2xpbmtzKVxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTUyOTY9c3RhdGljIGJvb2wgaWVlZTgwMjExX3J4X2Zvcl9pbnRlcmZhY2Uoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy01MzE5LVx0XHRcdGxpbmtfaWQgPSBzdGF0dXMtXHUwMDNlbGlua19pZDtcbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjA6XHRcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2cngtXHUwMDNlc2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9yeC5jLTUzMjEtXHRcdFx0ICAgc3RhdHVzLVx1MDAzZWZyZXEpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTE2OD1pZWVlODAyMTFfYnNzX2luZm9fdXBkYXRlKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA1LVx0XHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6MjA2Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2Nhbl9zZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNy1cdFx0XHRpZiAocnhfc3RhdHVzLVx1MDAzZWxpbmtfdmFsaWQpIHtcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTczMT1zdGF0aWMgaW50IF9faWVlZTgwMjExX3N0YXJ0X3NjYW4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3NjYW4uYy03NDUtXHQgKi9cbm5ldC9tYWM4MDIxMS9zY2FuLmM6NzQ2Olx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2IHJlcS1cdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQgXHUwMDNlPSAwIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3NjYW4uYy03NDctXHQgICAgIShzZGF0YS1cdTAwM2V2aWYuYWN0aXZlX2xpbmtzIFx1MDAyNiBCSVQocmVxLVx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCkpKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTgyMD1pZWVlODAyMTFfdHhfaF9zZXF1ZW5jZShzdHJ1Y3QgaWVlZTgwMjExX3R4X2RhdGEgKnR4KVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTg0Ny1cdGlmICh1bmxpa2VseShpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihoZHItXHUwMDNlYWRkcjEpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmM6ODQ4Olx0XHQgICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKGluZm8tXHUwMDNlY29udHJvbC52aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3R4LmMtODQ5LVx0XHQgICAgIGluZm8tXHUwMDNlY29udHJvbC52aWYtXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkpIHtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjY3LVxubmV0L21hYzgwMjExL3R4LmM6MjY2ODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjktXHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjY4NC1cdFx0fVxubmV0L21hYzgwMjExL3R4LmM6MjY4NTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yNjg2LVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX3NkYXRhO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTI3MDItXG5uZXQvbWFjODAyMTEvdHguYzoyNzAzOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgc3RhIFx1MDAyNlx1MDAyNiAhc3RhLVx1MDAzZXN0YS5tbG8pIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDQtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9saW5rX2RhdGEgKmxpbms7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjg4MS1cdFx0XHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XG5uZXQvbWFjODAyMTEvdHguYzoyODgyOlx0XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0yODgzLVx0XHRcdHJldCA9IC1FTk9UQ09OTjtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz0zMDc4PXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0zMTI3LVxubmV0L21hYzgwMjExL3R4LmM6MzEyODpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtMzEyOS1cdFx0cmN1X3JlYWRfbG9jaygpO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMyMDYtXHRcdGJ1aWxkLmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjEpO1xubmV0L21hYzgwMjExL3R4LmM6MzIwNzpcdFx0aWYgKHN0YS1cdTAwM2VzdGEubWxvIHx8ICFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0zMjA4LVx0XHRcdG1lbWNweShoZHItXHUwMDNlYWRkcjIsIHNkYXRhLVx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDU2MT1uZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODMtXHRcdFx0XHRcdFx0ICAgICBOVUxMKTtcbm5ldC9tYWM4MDIxMS90eC5jOjQ1ODQ6XHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NTg1LVx0XHQgICAoKHNkYXRhLVx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFx1MDAyNlx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX2NoZWNrX21jYXN0X29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDc1NS1cbm5ldC9tYWM4MDIxMS90eC5jOjQ3NTY6XHRpZiAoKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy00NzU3LVx0ICAgICAoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDkxMT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDkyNC1cdFx0LyogdXBkYXRlIGJhbmQgb25seSBmb3Igbm9uLU1MRCAqL1xubmV0L21hYzgwMjExL3R4LmM6NDkyNTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy00OTI2LVx0XHRcdGNoYW5jdHhfY29uZiA9XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjM5Nj12b2lkIF9faWVlZTgwMjExX3R4X3NrYl90aWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy02NDEzLVxubmV0L21hYzgwMjExL3R4LmM6NjQxNDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3R4LmMtNjQxNS1cdFx0bGluayA9IDA7XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NjQ1Mz12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0NjItXHRcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcbm5ldC9tYWM4MDIxMS90eC5jOjY0NjM6XHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy02NDY0LVx0XHRXQVJOX09OKGxpbmtfaWQgXHUwMDNlPSAwKTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jPTExMzQ9dm9pZCBpZWVlODAyMTFfc2VuZF9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0Mi1cdHN0cnVjdCBpZWVlODAyMTFfbWdtdCAqbWdtdDtcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE0MzpcdGJvb2wgbXVsdGlfbGluayA9IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZik7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDQtXHRzdHJ1Y3Qge1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTg4Mj1pbnQgaWVlZTgwMjExX3JlY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3MS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjA3MjpcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3My1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpvbGRbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXSA9IHtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMjgtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMjk6XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMC1cdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0lETEU7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMzLVx0XHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMzQ6XHRcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzUtXHRcdFx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX0FTU09DIHxcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzEtXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxNzI6XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzMtXHRcdFx0XHRpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4NS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE4NjpcdFx0XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODctXHRcdFx0XHRcdGllZWU4MDIxMV9yZWNvbmZpZ19hcF9saW5rcyhsb2NhbCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjEgMTE6MzM8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY4MDYKCQkJCQkJCW91dHB1dDogNDQKCQkJCQkJCXRob3VnaHRzOiA1NAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqTUxEIFN1cHBvcnQgaW4gbWFjODAyMTEgLSBBIFF1aWNrIENoZWNrKioKClJpZ2h0LCBzbyBNTEQgc3VwcG9ydCBpcyBlc3NlbnRpYWxseSBiYWtlZCBpbnRvIG1hYzgwMjExIHRoZXNlIGRheXMuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBmbGFncyBvciBob29wcyB0byBqdW1wIHRocm91Z2gsIGFzc3VtaW5nIEkmIzM5O20gdXNpbmcgYSBtb2Rlcm4gZW5vdWdoIHZlcnNpb24uIFRoYXQmIzM5O3MgZ29vZCBuZXdzLCBzaW1wbGlmaWVzIHRoaW5ncyBjb25zaWRlcmFibHkuIEhvd2V2ZXIsIGJlZm9yZSBJIGdldCB0b28gY29tZm9ydGFibGUsIEkgc2hvdWxkIGp1c3QgZG91YmxlLWNoZWNrIHRoYXQgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcgc3VidGxlLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGF0ICppZWVlODAyMTFfdmlmX2lzX21sZCogZGVmaW5pdGlvbiBqdXN0IHRvIGJlIDEwMCUgY2VydGFpbiB0aGVyZSBpc24mIzM5O3Qgc29tZSBjb3JuZXIgY2FzZSBvciBoaWRkZW4gZGVwZW5kZW5jeSBJJiMzOTttIG92ZXJsb29raW5nLiBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIHRvIGJlIHRob3JvdWdoLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpZWVlODAyMTFfdmlmX2lzX21sZCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O25ldC9tYWM4MDIxMS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L21hYzgwMjExL2FwLmM9NTE9aWVlZTgwMjExX3J4X2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9hcC5jLTY4LVxubmV0L21hYzgwMjExL2FwLmM6Njk6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvYXAuYy03MC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYz0yNz1pZWVlODAyMTFfbGlua19vcl9kZWZsaW5rKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzctXHRcdCAqL1xubmV0L21hYzgwMjExL2NmZy5jOjM4Olx0XHRpZiAocmVxdWlyZV92YWxpZCBcdTAwMjZcdTAwMjYgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOS1cdFx0XHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcbi0tXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjEyOT1zdGF0aWMgaW50IHN0YV9hcHBseV9hdXRoX2ZsYWdzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxuLS1cbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUxLVx0XHRpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MjpcdFx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL2NmZy5jLTIxNTMtXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTM5MTI9aW50IF9faWVlZTgwMjExX3JlcXVlc3Rfc21wc19tZ2Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTM5NzQtXHRcdFx0XHRcdCBhcCwgYXAsXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzk3NTpcdFx0XHRcdFx0IGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgP1xubmV0L21hYzgwMjExL2NmZy5jLTM5NzYtXHRcdFx0XHRcdCBsaW5rLVx1MDAzZWxpbmtfaWQgOiAtMSk7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jPTQ5NTg9c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfY2xpZW50KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTQ5ODctXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDk4ODpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk4OS1cdFx0aWYgKHN0YS1cdTAwM2VzdGEubWxvKSB7XG4tLVxubmV0L21hYzgwMjExL2NmZy5jLTUwNDItXHRtZW1jcHkobnVsbGZ1bmMtXHUwMDNlYWRkcjEsIHN0YS1cdTAwM2VzdGEuYWRkciwgRVRIX0FMRU4pO1xubmV0L21hYzgwMjExL2NmZy5jOjUwNDM6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgIXN0YS1cdTAwM2VzdGEubWxvKSB7XG5uZXQvbWFjODAyMTEvY2ZnLmMtNTA0NC1cdFx0bWVtY3B5KG51bGxmdW5jLVx1MDAzZWFkZHIyLCBjb25mLVx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaD0xMjU9ZG8ge1x0XHRcdFx0XHRcdFx0XHRcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTM5LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQwOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KGxpbmspLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpICAgICAgICAgIFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNDEtXHRcdFx0X3NkYXRhX2luZm8oKGxpbmspLVx1MDAzZXNkYXRhLCBcJiMzNDtbbGluayAlZF0gXCYjMzQ7IGZtdCxcdFxcXG4tLVxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQ4LVx0ZG8ge1x0XHRcdFx0XHRcdFx0XHRcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQ5Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2KGxpbmspLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpICAgICAgICAgIFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTAtXHRcdFx0X3NkYXRhX2VycigobGluayktXHUwMDNlc2RhdGEsIFwmIzM0O1tsaW5rICVkXSBcJiMzNDsgZm10LFx0XFxcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTktXHRkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjA6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjEtXHRcdFx0X3NkYXRhX2luZm8oc2RhdGEsIFwmIzM0O1tsaW5rICVkXSBcJiMzNDsgZm10LCBsaW5rX2lkLFx0XFxcbi0tXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjctXHRkbyB7XHRcdFx0XHRcdFx0XHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjg6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjYoc2RhdGEpLVx1MDAzZXZpZikpXHRcdFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjktXHRcdFx0X3NkYXRhX2RiZyhwcmludCwgc2RhdGEsIFwmIzM0O1tsaW5rICVkXSBcJiMzNDsgZm10LFx0XFxcbi0tXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaD0xNzM5PWllZWU4MDIxMV9nZXRfc2JhbmQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXG4tLVxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0NC1cbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oOjE3NDU6XHRXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpO1xubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0Ni1cbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYz00Nzk9c3RhdGljIHZvaWQgaWVlZTgwMjExX2RvX3N0b3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGJvb2wgZ29pbmdfZG93bilcbi0tXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjItXG5uZXQvbWFjODAyMTEvaWZhY2UuYzo1NjM6XHRXQVJOKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZiksXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjQtXHQgICAgIFwmIzM0O2Rlc3Ryb3lpbmcgaW50ZXJmYWNlIHdpdGggdmFsaWQgbGlua3MgMHglMDR4XFxuXCYjMzQ7LFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE5NzQ9c3RhdGljIGludCBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODctXHQvKiBmb3Igbm93LCBkb24mIzM5O3Qgc3VwcG9ydCBjaGFuZ2luZyB3aGlsZSBsaW5rcyBleGlzdCAqL1xubmV0L21hYzgwMjExL2lmYWNlLmM6MTk4ODpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk4OS1cdFx0cmV0dXJuIC1FQlVTWTtcbi0tXG5uZXQvbWFjODAyMTEvbWFpbi5jPTMzNj12b2lkIGllZWU4MDIxMV9ic3NfaW5mb19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tYWluLmMtMzQyLVxubmV0L21hYzgwMjExL21haW4uYzozNDM6XHRXQVJOX09OX09OQ0UoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSk7XG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0NC1cbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTQ9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQyOC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjQyOTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQzMC1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjU4Mj1zdGF0aWMgaW50IGllZWU4MDIxMV9zZW5kX2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjYzOS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjY0MDpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2NDEtXHRcdC8qIGNvbnNpZGVyIHRoZSBtdWx0aS1saW5rIGVsZW1lbnQgd2l0aCBTVEEgcHJvZmlsZSAqL1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDM5ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Fzc29jaWF0ZWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NDE0LVxubmV0L21hYzgwMjExL21sbWUuYzo0NDE1Olx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQxNi1cdFx0ICAgICEoaWVlZTgwMjExX3ZpZl91c2FibGVfbGlua3MoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjYgQklUKGxpbmtfaWQpKSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MzYtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Mzc6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy00NDM4LVx0XHRmb3IgKGxpbmtfaWQgPSAwO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ2OC1cdC8qIGxlYXZlIHRoaXMgaGVyZSB0byBub3QgY2hhbmdlIG9yZGVyaW5nIGluIG5vbi1NTE8gY2FzZXMgKi9cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQ2OTpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ3MC1cdFx0aWVlZTgwMjExX3JlY2FsY19zbXBzKHNkYXRhLCBcdTAwMjZzZGF0YS1cdTAwM2VkZWZsaW5rKTtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ0NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZl9yZXNldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODAtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0ODE6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ4Mi1cdCAgICAhKHNkYXRhLVx1MDAzZXUubWdkLnJlY29uZi5hZGRlZF9saW5rcyB8XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz00NTA4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9zZXRfZGlzYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00NjMyLVx0LyogZmluYWxseSByZXNldCBhbGwgQlNTIC8gY29uZmlnIHBhcmFtZXRlcnMgKi9cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDYzMzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzNC1cdFx0Y2hhbmdlZCB8PSBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc2RhdGEpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY1Ny1cdCAgICAgICBzaXplb2Yoc2RhdGEtXHUwMDNldmlmLmJzc19jb25mLm11X2dyb3VwLnBvc2l0aW9uKSk7XG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NTg6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTktXHRcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfTVVfR1JPVVBTO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3MS1cdHNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5xb3MgPSBmYWxzZTtcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDY3MjpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy00NjczLVx0XHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX1FPUztcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ5NzI9c3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9hcF9wcm9iZXJlcV9nZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy00OTg0LVx0aWYgKFdBUk5fT04oc2RhdGEtXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fFxubmV0L21hYzgwMjExL21sbWUuYzo0OTg1Olx0XHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ5ODYtXHRcdHJldHVybiBOVUxMO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9NTMwMD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZGVzdHJveV9hc3NvY19kYXRhKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6NTMzNjpcdFx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNy1cdFx0XHRcdGRhdGEuYXBfbWxkX2FkZHIgPSBhc3NvY19kYXRhLVx1MDAzZWFwX2FkZHI7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz02OTI0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtNjk0OC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6Njk0OTpcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NTAtXHRcdGlmICghZWxlbXMtXHUwMDNlbWxfYmFzaWMpXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03MDEwLVxubmV0L21hYzgwMjExL21sbWUuYzo3MDExOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMi1cdFx0XHRsaW5rX2luZm8obGluayxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTcxMzU9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYXNzb2NfcmVzcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzItXG5uZXQvbWFjODAyMTEvbWxtZS5jOjcyNzM6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzQtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9tbGVfYmFzaWNfY29tbW9uX2luZm8gKmNvbW1vbjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTczMzktXG5uZXQvbWFjODAyMTEvbWxtZS5jOjczNDA6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL21sbWUuYy03MzQxLVx0XHRldGhlcl9hZGRyX2NvcHkoYXBfbWxkX2FkZHIsIHNkYXRhLVx1MDAzZXZpZi5jZmcuYXBfYWRkcik7XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz03NjMxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZpZ3VyYXRpb24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03NjM5LVxubmV0L21hYzgwMjExL21sbWUuYzo3NjQwOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8ICFlbGVtcy1cdTAwM2VtbF9yZWNvbmYpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2NDEtXHRcdHJldHVybjtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc4MDE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfYWR2X3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy03ODA3LVxubmV0L21hYzgwMjExL21sbWUuYzo3ODA4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy03ODA5LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04MDU2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTctXHRpZiAoaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YSBcdTAwMjZcdTAwMjYgaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YS1cdTAwM2VuZWVkX2JlYWNvbiBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODExODpcdCAgICAhV0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODExOS1cdCAgICBpZWVlODAyMTFfcnhfb3VyX2JlYWNvbihic3NpZCwgaWZtZ2QtXHUwMDNlYXNzb2NfZGF0YS1cdTAwM2VsaW5rWzBdLmJzcykpIHtcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg1NDE9aW50IGllZWU4MDIxMV9yZXFfbmVnX3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04NTQ2LVxubmV0L21hYzgwMjExL21sbWUuYzo4NTQ3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg1NDgtXHQgICAgIShzZGF0YS1cdTAwM2V2aWYuY2ZnLm1sZF9jYXBhX29wIFx1MDAyNlxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODcwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy04NzIwLVxubmV0L21hYzgwMjExL21sbWUuYzo4NzIxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy04NzIyLVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz04NzczPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX25lZ190dGxtX3JlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzYte1xubmV0L21hYzgwMjExL21sbWUuYzo4Nzc3Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzgtXHQgICAgbWdtdC1cdTAwM2V1LmFjdGlvbi50dGxtX3Jlcy5kaWFsb2dfdG9rZW4gIT0gc2RhdGEtXHUwMDNldS5tZ2QuZGlhbG9nX3Rva2VuX2FsbG9jKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODg5NT1zdGF0aWMgaW50IGllZWU4MDIxMV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxMi1cdGlmIChhdXRoX2RhdGEtXHUwMDNlYWxnb3JpdGhtID09IFdMQU5fQVVUSF9FUFBLRSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxMzpcdCAgICBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL21sbWUuYy04OTE0LVx0ICAgICFjZmc4MDIxMV9maW5kX2V4dF9lbGVtKFdMQU5fRUlEX0VYVF9FSFRfTVVMVElfTElOSyxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTk4NDI9aW50IGllZWU4MDIxMV9tZ2RfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQwLSBlcnJfY2xlYXI6XG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwMDQxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQyLVx0XHRldGhfemVyb19hZGRyKHNkYXRhLVx1MDAzZWRlZmxpbmsudS5tZ2QuYnNzaWQpO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4Njg9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMDg4NC1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTA4ODU6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTA4ODYtXHQgICAgbGVuIFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKG1sX3JlY29uZl9yZXNwKSB8fFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTEzMzA9aW50IGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTEzNDEtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExMzQyOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIHx8XG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQzLVx0ICAgICEoc2RhdGEtXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNTU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9tZ2RfZXBjc19zdXBwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjAtXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNTYxOlx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL21sbWUuYy0xMTU2Mi1cdFx0cmV0dXJuIGZhbHNlO1xuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE2Mjg9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX2VwY3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzNi1cbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE2Mzc6XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikgfHwgIWVsZW1zLVx1MDAzZW1sX2VwY3MpXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNjM4LVx0XHRyZXR1cm47XG4tLVxubmV0L21hYzgwMjExL21sbWUuYz0xMTc0Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19lcGNzX3RlYXJkb3duKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NDkte1xubmV0L21hYzgwMjExL21sbWUuYzoxMTc1MDpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL21sbWUuYy0xMTc1MS1cdCAgICAhc2RhdGEtXHUwMDNldS5tZ2QuZXBjcy5lbmFibGVkKVxuLS1cbm5ldC9tYWM4MDIxMS9yYXRlLmM9MzE9dm9pZCByYXRlX2NvbnRyb2xfcmF0ZV9pbml0KHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcbi0tXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTQ0LVx0LyogU1cgcmF0ZSBjb250cm9sIGlzbiYjMzk7dCBzdXBwb3J0ZWQgd2l0aCBNTE8gcmlnaHQgbm93ICovXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjQ1Olx0aWYgKFdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikpKVxubmV0L21hYzgwMjExL3JhdGUuYy00Ni1cdFx0cmV0dXJuO1xuLS1cbm5ldC9tYWM4MDIxMS9yeC5jPTE1MjE9aWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXG4tLVxubmV0L21hYzgwMjExL3J4LmMtMTU1MC1cbm5ldC9tYWM4MDIxMS9yeC5jOjE1NTE6XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSB8fFxubmV0L21hYzgwMjExL3J4LmMtMTU1Mi1cdFx0ICAgIHNkYXRhLVx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pXG4tLVxubmV0L21hYzgwMjExL3J4LmM9MjY4ND1ib29sIGllZWU4MDIxMV9pc19vdXJfYWRkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy0yNjkyLVxubmV0L21hYzgwMjExL3J4LmM6MjY5MzpcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS9yeC5jLTI2OTQtXHRcdHJldHVybiBmYWxzZTtcbi0tXG5uZXQvbWFjODAyMTEvcnguYz00MzQxPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9kYXRhX3NldF9zdGEoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcbi0tXG5uZXQvbWFjODAyMTEvcnguYy00MzU2LVx0aWYgKGxpbmtfaWQgXHUwMDNjIDApIHtcbm5ldC9tYWM4MDIxMS9yeC5jOjQzNTc6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZyeC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmMtNDM1OC1cdFx0ICAgIHN0YSBcdTAwMjZcdTAwMjYgIXN0YS1cdTAwM2VzdGEudmFsaWRfbGlua3MpXG4tLVxubmV0L21hYzgwMjExL3J4LmM9NTI5Nj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZm9yX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxuLS1cbm5ldC9tYWM4MDIxMS9yeC5jLTUzMTktXHRcdFx0bGlua19pZCA9IHN0YXR1cy1cdTAwM2VsaW5rX2lkO1xubmV0L21hYzgwMjExL3J4LmM6NTMyMDpcdFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZyeC1cdTAwM2VzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNlxubmV0L21hYzgwMjExL3J4LmMtNTMyMS1cdFx0XHQgICBzdGF0dXMtXHUwMDNlZnJlcSkge1xuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmM9MTY4PWllZWU4MDIxMV9ic3NfaW5mb191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXG4tLVxubmV0L21hYzgwMjExL3NjYW4uYy0yMDUtXHRcdCAqL1xubmV0L21hYzgwMjExL3NjYW4uYzoyMDY6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzY2FuX3NkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA3LVx0XHRcdGlmIChyeF9zdGF0dXMtXHUwMDNlbGlua192YWxpZCkge1xuLS1cbm5ldC9tYWM4MDIxMS9zY2FuLmM9NzMxPXN0YXRpYyBpbnQgX19pZWVlODAyMTFfc3RhcnRfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0NS1cdCAqL1xubmV0L21hYzgwMjExL3NjYW4uYzo3NDY6XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjYgcmVxLVx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCBcdTAwM2U9IDAgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0Ny1cdCAgICAhKHNkYXRhLVx1MDAzZXZpZi5hY3RpdmVfbGlua3MgXHUwMDI2IEJJVChyZXEtXHUwMDNldHNmX3JlcG9ydF9saW5rX2lkKSkpXG4tLVxubmV0L21hYzgwMjExL3R4LmM9ODIwPWllZWU4MDIxMV90eF9oX3NlcXVlbmNlKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXG4tLVxubmV0L21hYzgwMjExL3R4LmMtODQ3LVx0aWYgKHVubGlrZWx5KGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci1cdTAwM2VhZGRyMSkgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYzo4NDg6XHRcdCAgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoaW5mby1cdTAwM2Vjb250cm9sLnZpZikgXHUwMDI2XHUwMDI2XG5uZXQvbWFjODAyMTEvdHguYy04NDktXHRcdCAgICAgaW5mby1cdTAwM2Vjb250cm9sLnZpZi1cdTAwM2V0eXBlID09IE5MODAyMTFfSUZUWVBFX0FQKSkge1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTI2MzE9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTI2NjctXG5uZXQvbWFjODAyMTEvdHguYzoyNjY4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL3R4LmMtMjY2OS1cdFx0Y2hhbmN0eF9jb25mID1cbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yNjg0LVx0XHR9XG5uZXQvbWFjODAyMTEvdHguYzoyNjg1Olx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI2ODYtXHRcdFx0c3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqYXBfc2RhdGE7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMjcwMi1cbm5ldC9tYWM4MDIxMS90eC5jOjI3MDM6XHRcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpIFx1MDAyNlx1MDAyNiBzdGEgXHUwMDI2XHUwMDI2ICFzdGEtXHUwMDNlc3RhLm1sbykge1xubmV0L21hYzgwMjExL3R4LmMtMjcwNC1cdFx0XHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaztcbi0tXG5uZXQvbWFjODAyMTEvdHguYy0yODgxLVx0XHRcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcbm5ldC9tYWM4MDIxMS90eC5jOjI4ODI6XHRcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTI4ODMtXHRcdFx0cmV0ID0gLUVOT1RDT05OO1xuLS1cbm5ldC9tYWM4MDIxMS90eC5jPTMwNzg9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTMxMjctXG5uZXQvbWFjODAyMTEvdHguYzozMTI4Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy0zMTI5LVx0XHRyY3VfcmVhZF9sb2NrKCk7XG4tLVxubmV0L21hYzgwMjExL3R4LmMtMzIwNi1cdFx0YnVpbGQuZGFfb2ZmcyA9IG9mZnNldG9mKHN0cnVjdCBpZWVlODAyMTFfaGRyLCBhZGRyMSk7XG5uZXQvbWFjODAyMTEvdHguYzozMjA3Olx0XHRpZiAoc3RhLVx1MDAzZXN0YS5tbG8gfHwgIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTMyMDgtXHRcdFx0bWVtY3B5KGhkci1cdTAwM2VhZGRyMiwgc2RhdGEtXHUwMDNldmlmLmFkZHIsIEVUSF9BTEVOKTtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00NTYxPW5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNDU4My1cdFx0XHRcdFx0XHQgICAgIE5VTEwpO1xubmV0L21hYzgwMjExL3R4LmM6NDU4NDpcdH0gZWxzZSBpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODUtXHRcdCAgICgoc2RhdGEtXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXHUwMDI2XHUwMDI2XG4tLVxubmV0L21hYzgwMjExL3R4LmM9NDc1MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfY2hlY2tfbWNhc3Rfb2ZmbG9hZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00NzU1LVxubmV0L21hYzgwMjExL3R4LmM6NDc1NjpcdGlmICgoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSBcdTAwMjZcdTAwMjZcbm5ldC9tYWM4MDIxMS90eC5jLTQ3NTctXHQgICAgIChzZGF0YS1cdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcdTAwMjZcdTAwMjZcbi0tXG5uZXQvbWFjODAyMTEvdHguYz00OTExPXN0YXRpYyBib29sIGllZWU4MDIxMV90eF9wZW5kaW5nX3NrYihzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbi0tXG5uZXQvbWFjODAyMTEvdHguYy00OTI0LVx0XHQvKiB1cGRhdGUgYmFuZCBvbmx5IGZvciBub24tTUxEICovXG5uZXQvbWFjODAyMTEvdHguYzo0OTI1Olx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTQ5MjYtXHRcdFx0Y2hhbmN0eF9jb25mID1cbi0tXG5uZXQvbWFjODAyMTEvdHguYz02Mzk2PXZvaWQgX19pZWVlODAyMTFfdHhfc2tiX3RpZF9iYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxuLS1cbm5ldC9tYWM4MDIxMS90eC5jLTY0MTMtXG5uZXQvbWFjODAyMTEvdHguYzo2NDE0Olx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKSB7XG5uZXQvbWFjODAyMTEvdHguYy02NDE1LVx0XHRsaW5rID0gMDtcbi0tXG5uZXQvbWFjODAyMTEvdHguYz02NDUzPXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3R4LmMtNjQ2Mi1cdFx0YmFuZCA9IE5VTV9OTDgwMjExX0JBTkRTO1xubmV0L21hYzgwMjExL3R4LmM6NjQ2MzpcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS90eC5jLTY0NjQtXHRcdFdBUk5fT04obGlua19pZCBcdTAwM2U9IDApO1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzND12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0xMTQyLVx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xubmV0L21hYzgwMjExL3V0aWwuYzoxMTQzOlx0Ym9vbCBtdWx0aV9saW5rID0gaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKTtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0NC1cdHN0cnVjdCB7XG4tLVxubmV0L21hYzgwMjExL3V0aWwuYz0xODgyPWludCBpZWVlODAyMTFfcmVjb25maWcoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwpXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMDcxLVxubmV0L21hYzgwMjExL3V0aWwuYzoyMDcyOlx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSkge1xubmV0L21hYzgwMjExL3V0aWwuYy0yMDczLVx0XHRcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKm9sZFtJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdID0ge1xuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEyOC1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEyOTpcdFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzZGF0YS1cdTAwM2V2aWYpKVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMwLVx0XHRcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfSURMRTtcbi0tXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzMtXHRcdGNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjpcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEzNDpcdFx0XHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzNS1cdFx0XHRcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfQVNTT0MgfFxuLS1cbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3MS1cbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE3MjpcdFx0XHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c2RhdGEtXHUwMDNldmlmKSlcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3My1cdFx0XHRcdGllZWU4MDIxMV92aWZfY2ZnX2NoYW5nZV9ub3RpZnkoc2RhdGEsXG4tLVxubmV0L21hYzgwMjExL3V0aWwuYy0yMTg1LVxubmV0L21hYzgwMjExL3V0aWwuYzoyMTg2Olx0XHRcdFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFx1MDAyNnNkYXRhLVx1MDAzZXZpZikpIHtcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE4Ny1cdFx0XHRcdFx0aWVlZTgwMjExX3JlY29uZmlnX2FwX2xpbmtzKGxvY2FsLFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkyNgoJCQkJCQkJb3V0cHV0OiAxMzAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqRnV6emluZyB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBGdW5jdGlvbiBpbiBNQUM4MDIxMSoqCgpSaWdodCwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgdGhlIE1BQzgwMjExIGNvbmZpZ3VyYXRpb24uIFNwZWNpZmljYWxseSwgbXkgYXR0ZW50aW9uIGlzIGRyYXduIHRvIHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uLiBHaXZlbiB0aGF0IGl0JiMzOTtzIGhhbmRsaW5nIGF1dGhlbnRpY2F0aW9uIGZsYWdzLCB0aGF0IGltbWVkaWF0ZWx5IHNjcmVhbXMgJiMzNDtwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSYjMzQ7IHRvIG1lLiBBdXRoZW50aWNhdGlvbiwgZXNwZWNpYWxseSBpbiB3aXJlbGVzcyBjb250ZXh0cywgaXMgb2Z0ZW4gYSBwcmltZSB0YXJnZXQgZm9yIGZ1enppbmcuIE1pc2NvbmZpZ3VyYXRpb25zLCB1bmV4cGVjdGVkIGlucHV0cy4uLiB0aGVzZSBjYW4gYWxsIGxlYWQgdG8gZXhwbG9pdGFibGUgZmxhd3MuCgpUaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBXZSBuZWVkIHRvIGZvcm11bGF0ZSBhIHRlc3Qgc3RyYXRlZ3ksIGRlc2lnbiByZWxldmFudCBmdXp6IGlucHV0cywgYW5kIGNhcmVmdWxseSBvYnNlcnZlIHRoZSByZXN1bHRzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBob3cgZmxhZyBzZXR0aW5ncyBhcmUgaGFuZGxlZCBhbmQgbG9vayBmb3IgYW55IGludGVyZXN0aW5nIGJlaGF2aW9ycyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gV2UmIzM5O2xsIG5lZWQgdG8gY2FyZWZ1bGx5IGNyYWZ0IHRoZSB0ZXN0IHN1aXRlLCBzZXR0aW5nIHVwIHRoZSBuZWNlc3NhcnkgcmVzdWx0cyBnYXRoZXJpbmcgaW5mcmFzdHJ1Y3R1cmUuIFRoaXMgaGFzIHRoZSBwb3RlbnRpYWwgdG8gZXhwb3NlIHNvbWUgaW50ZXJlc3RpbmcgaXNzdWVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yMSAxMTozMzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdGFfYXBwbHlfYXV0aF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7TUFDODAyMTEmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtzdGFfYXBwbHlfYXV0aF9mbGFncyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMyOjU1LjAzMzQ2NTMyNFoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQxOTY4MzkzMDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzI6NTUuMDMzNDg3NDU0WiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NjI3NDgwNTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBkOGM1ZGExOTNhNTI3NmI2MDFhMzJlNzAyY2E1ZjBhMDE1YjM0MjU2XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBUdWUgSnVsIDIxIDExOjMyOjUzIDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xcbmluZGV4IDNiNThhZjU5ZjdlNDI5Li5kNDMzMWZiYWUwZDg5MiAxMDA2NDRcXG4tLS0gYS9uZXQvbWFjODAyMTEvY2ZnLmNcXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcXG5AQCAtMjE0OCw4ICsyMTQ4LDE0IEBAIHN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuIFxcdFxcdCAqIHdlbGwuIFNvbWUgZHJpdmVycyByZXF1aXJlIHJhdGUgY29udHJvbCBpbml0aWFsaXplZFxcbiBcXHRcXHQgKiBiZWZvcmUgZHJ2X3N0YV9zdGF0ZSgpIGlzIGNhbGxlZC5cXG4gXFx0XFx0ICovXFxuLVxcdFxcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpXFxuK1xcdFxcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcXG4rXFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihcXG4rXFx0XFx0XFx0XFx0ICAgIHN0YS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxcbitcXHRcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuIFxcdFxcdFxcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XFxuK1xcdFxcdH1cXG4gXFxuIFxcdFxcdHJldCA9IHN0YV9pbmZvX21vdmVfc3RhdGUoc3RhLCBJRUVFODAyMTFfU1RBX0FTU09DKTtcXG4gXFx0XFx0aWYgKHJldClcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzI6NTUuNzAzMDMxNzM0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDEyOTg4MDk4MjYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaW4gbWFjODAyMTEgdG8gYWRkIGNoZWNrcyBmb3IgTUxEIChNdWx0aS1MaW5rIERldmljZSkgYW5kIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXppbmcgcmF0ZSBjb250cm9sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgbG9naWMsIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBhbmQgbWFjODAyMTFfaHdzaW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGQ4YzVkYTE5M2E1Mjc2YjYwMWEzMmU3MDJjYTVmMGEwMTViMzQyNTZcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEp1bCAyMSAxMTozMjo1MyAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9tYWM4MDIxMS9jZmcuYyBiL25ldC9tYWM4MDIxMS9jZmcuY1xuaW5kZXggM2I1OGFmNTlmN2U0MjkuLmQ0MzMxZmJhZTBkODkyIDEwMDY0NFxuLS0tIGEvbmV0L21hYzgwMjExL2NmZy5jXG4rKysgYi9uZXQvbWFjODAyMTEvY2ZnLmNcbkBAIC0yMTQ4LDggKzIxNDgsMTQgQEAgc3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcbiBcdFx0ICogd2VsbC4gU29tZSBkcml2ZXJzIHJlcXVpcmUgcmF0ZSBjb250cm9sIGluaXRpYWxpemVkXG4gXHRcdCAqIGJlZm9yZSBkcnZfc3RhX3N0YXRlKCkgaXMgY2FsbGVkLlxuIFx0XHQgKi9cbi1cdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSlcbitcdFx0aWYgKCF0ZXN0X3N0YV9mbGFnKHN0YSwgV0xBTl9TVEFfUkFURV9DT05UUk9MKSkge1xuK1x0XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXG4rXHRcdFx0XHQgICAgc3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZi5ic3NfY29uZi5jaGFuY3R4X2NvbmYpKVxuK1x0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHRcdFx0cmF0ZV9jb250cm9sX3JhdGVfaW5pdF9hbGxfbGlua3Moc3RhKTtcbitcdFx0fVxuIFxuIFx0XHRyZXQgPSBzdGFfaW5mb19tb3ZlX3N0YXRlKHN0YSwgSUVFRTgwMjExX1NUQV9BU1NPQyk7XG4gXHRcdGlmIChyZXQpXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMjo1NS43MDMwMzUxMTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTg0MTgwNjYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIE1BQzgwMjExIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBpbiBgbmV0L21hYzgwMjExL2NmZy5jYCwgc3BlY2lmaWNhbGx5IHRoZSBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBhZGQgYSBuZXcgY2hlY2suIFRoaXMgaXMgaW1wb3J0YW50IGJlY2F1c2UgaXQgY2hhbmdlcyB0aGUgZXhpc3RpbmcgYmVoYXZpb3Igb2YgYG1hYzgwMjExYCwgYWZmZWN0aW5nIGhvdyB3ZSBoYW5kbGUgYXV0aGVudGljYXRpb24gZmxhZ3MgZm9yIHN0YXRpb25zLiBUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIGNvbmRpdGlvbmFsIHN0YXRlbWVudDpcblxuYGBgY1xuXHRcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcblx0XHRcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXHUwMDI2c3RhLVx1MDAzZXNkYXRhLVx1MDAzZXZpZikgXHUwMDI2XHUwMDI2XG5cdFx0XHQgICAgIXJjdV9hY2Nlc3NfcG9pbnRlcihcblx0XHRcdFx0ICAgIHN0YS1cdTAwM2VzZGF0YS1cdTAwM2V2aWYuYnNzX2NvbmYuY2hhbmN0eF9jb25mKSlcblx0XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG5cblx0XHRcdHJhdGVfY29udHJvbF9yYXRlX2luaXRfYWxsX2xpbmtzKHN0YSk7XG5cdFx0fVxuYGBgXG5cbkVzc2VudGlhbGx5LCBpZiBhIHN0YXRpb24gaXNuJ3QgdXNpbmcgcmF0ZSBjb250cm9sLCBhbmQgaXQncyAqbm90KiBhIG1lc2ggbGluaywgYW5kIGl0ICpkb2Vzbid0KiBoYXZlIGEgY2hhbm5lbCBjb250ZXh0IGNvbmZpZ3VyYXRpb24sIHRoZW4gaXQncyBjb25zaWRlcmVkIGFuIGVycm9yLiBUaGlzIHRyaWdnZXJzIGByYXRlX2NvbnRyb2xfcmF0ZV9pbml0X2FsbF9saW5rcyhzdGEpYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBwb3RlbnRpYWxseSBpbXBhY3RzIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIHdoZXJlIHRoZXNlIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQsIHNvIGEgZGVlcCBkaXZlIGludG8gdGhlIGltcGxpY2F0aW9ucyBpcyB3YXJyYW50ZWQuIFRoaXMgaXMgZnVuY3Rpb25hbGx5IGEgY2hhbmdlIGluIHRoZSBkcml2ZXIgYW5kIHJlYWNoYWJsZSB2aWEgdGhlIGBtYWM4MDIxMV9od3NpbWAgbW9kdWxlLCB3aGljaCBtZWFucyBJIGNhbiByZWFkaWx5IHRlc3QgdGhpcyBuZXcgYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgY2hlY2sncyBwdXJwb3NlIGFuZCBob3cgaXQgYWx0ZXJzIHRoZSBleGlzdGluZyBsb2dpYy4gSSdsbCBuZWVkIHRvIGNhcmVmdWxseSBleGFtaW5lIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgYW5kIHRyYWNlIGl0cyBjYWxsZXJzIHRvIGZ1bGx5IGdyYXNwIHRoZSByYW1pZmljYXRpb25zIG9mIHRoaXMgY2hhbmdlLiBVbmRlcnN0YW5kaW5nIGl0cyBjYWxsIGdyYXBoIGFuZCB0aGUgc2l0dWF0aW9ucyBpbiB3aGljaCBpdCB3aWxsIGJlIGV4ZWN1dGVkIHdpbGwgYmUgY3JpdGljYWwuIEknbSBnb2luZyB0byBkZXRlcm1pbmUgdW5kZXIgd2hpY2ggY2lyY3Vtc3RhbmNlcyB0aGlzIHBhcnRpY3VsYXIgY29uZGl0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDMyLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTk2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzM6MDAuODg3MjIyMzE2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MDk2Njg2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9jZmcuYz0yMDEwPXN0YXRpYyBpbnQgaWVlZTgwMjExX3N0b3BfYXAoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTI4LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyMTI5OnN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxubmV0L21hYzgwMjExL2NmZy5jLTIxMzAtXFx0XFx0XFx0XFx0c3RydWN0IHN0YV9pbmZvICpzdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MjQ1NT1zdGF0aWMgaW50IHN0YV9hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI1MDAtXFx0ICAgICAgKHNldCBcXHUwMDI2IEJJVChOTDgwMjExX1NUQV9GTEFHX0FTU09DSUFURUQpKSkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjUwMTpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNTAyLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjYyMy1cXHQgICAgc2V0IFxcdTAwMjYgQklUKE5MODAyMTFfU1RBX0ZMQUdfQVNTT0NJQVRFRCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjYyNDpcXHRcXHRyZXQgPSBzdGFfYXBwbHlfYXV0aF9mbGFncyhsb2NhbCwgc3RhLCBtYXNrLCBzZXQpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjI1LVxcdFxcdGlmIChyZXQpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjAxLjAzODIwMzg4NVoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxNTUxODQxNDksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkFuYWx5emluZyB0aGUgQXV0aGVudGljYXRpb24gRmxhZ3MgQXBwbGljYXRpb24qKlxuXG5SaWdodCwgc28gdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkLiBNeSBpbW1lZGlhdGUgcXVlc3Rpb24gaXMgKndoZXJlKiBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tLiBJdCBsb29rcyBsaWtlIGBzdGFfYXBwbHlfcGFyYW1ldGVyc2AgaXMgdGhlIGxpa2VseSBjdWxwcml0LCB3aGljaCBtYWtlcyBzZW5zZS4gQmFzZWQgb24gdGhlIG5hbWluZywgYHN0YV9hcHBseV9wYXJhbWV0ZXJzYCBzZWVtcyBsaWtlIHRoZSBmdW5jdGlvbiB0aGF0IHdvdWxkIGhhbmRsZSBhcHBseWluZyBuZXcgcGFyYW1ldGVycyB0byBhIHN0YXRpb24uIFRoYXQgZnVuY3Rpb24gaXMgcHJvYmFibHkgYmVpbmcgdHJpZ2dlcmVkIGJ5IHNvbWV0aGluZyBsaWtlIGBubDgwMjExX3NldF9zdGF0aW9uYCBvciBhIHNpbWlsYXIgZnVuY3Rpb24gY2FsbC4gSSBuZWVkIHRvIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLiBMZXQncyBkaWcgaW50byB0aGF0IGFuZCBjb25maXJtIHRoZSBjYWxsIGNoYWluLiBJdCdzIGEga2V5IHBhcnQgb2YgdGhlIGZsb3cgZm9yIHNldHRpbmcgc3RhdGlvbi1zcGVjaWZpYyBjb25maWd1cmF0aW9ucyBhbmQgYXV0aGVudGljYXRpb24gaXMgYSBtYWpvciBhc3BlY3QgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwNzMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMzowNC4xOTMzOTI2NDRaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTU4ODA4Mzg1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInN0YV9hcHBseV9wYXJhbWV0ZXJzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2NmZy5jPTIyNjY9c3RhdGljIGludCBzdGFfbGlua19hcHBseV9wYXJhbWV0ZXJzKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTI0NTQtXFxubmV0L21hYzgwMjExL2NmZy5jOjI0NTU6c3RhdGljIGludCBzdGFfYXBwbHlfcGFyYW1ldGVycyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjQ1Ni1cXHRcXHRcXHRcXHRzdHJ1Y3Qgc3RhX2luZm8gKnN0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNjM2PXN0YXRpYyBpbnQgaWVlZTgwMjExX2FkZF9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXJlbGVzc19kZXYgKndkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY4Ni1cXHQvKiBUaG91Z2ggdGhlIG11dGV4IGlzIG5vdCBuZWVkZWQgaGVyZSAoc2luY2UgdGhlIHN0YXRpb24gaXMgbm90XFxubmV0L21hYzgwMjExL2NmZy5jOjI2ODc6XFx0ICogdmlzaWJsZSB5ZXQpLCBzdGFfYXBwbHlfcGFyYW1ldGVycyAoYW5kIGlubmVyIGZ1bmN0aW9ucykgcmVxdWlyZVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yNjg4LVxcdCAqIHRoZSBtdXRleCBkdWUgdG8gb3RoZXIgcGF0aHMuXFxubmV0L21hYzgwMjExL2NmZy5jLTI2ODktXFx0ICovXFxubmV0L21hYzgwMjExL2NmZy5jOjI2OTA6XFx0ZXJyID0gc3RhX2FwcGx5X3BhcmFtZXRlcnMobG9jYWwsIHN0YSwgcGFyYW1zKTtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjY5MS1cXHRpZiAoZXJyKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcwNy1cXHQvKlxcbm5ldC9tYWM4MDIxMS9jZmcuYzoyNzA4OlxcdCAqIGllZWU4MDIxMV9uYW5fdXBkYXRlX25kaV9jYXJyaWVyIHdhcyBjYWxsZWQgZnJvbSBzdGFfYXBwbHlfcGFyYW1ldGVycyxcXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjcwOS1cXHQgKiBidXQgdGhlbiB3ZSBkaWQgbm90IGhhdmUgdGhlIFNUQSBpbiB0aGUgbGlzdC5cXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNzg5PXN0YXRpYyBpbnQgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uKHN0cnVjdCB3aXBoeSAqd2lwaHksXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjg4Mi1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mjg4MzpcXHRlcnIgPSBzdGFfYXBwbHlfcGFyYW1ldGVycyhsb2NhbCwgc3RhLCBwYXJhbXMpO1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0yODg0LVxcdGlmIChlcnIpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjA0LjM1MjIwODRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDczOTY3NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgYnJlYWtkb3duIG9mIHdoYXQncyBnb2luZyBvbiwgdGhpbmtpbmcgaXQgdGhyb3VnaCBmcm9tIG15IGV4cGVydCBwZXJzcGVjdGl2ZTpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBNQUM4MDIxMSBTdGF0aW9uIFBhcmFtZXRlciBBcHBsaWNhdGlvbioqXG5cblJpZ2h0LCBsZXQgbWUgc2VlLi4uIEknbSB0cmFjaW5nIHNvbWUgaW50ZXJhY3Rpb25zIHJlbGF0ZWQgdG8gc3RhdGlvbiBtYW5hZ2VtZW50IGluIHRoZSA4MDIuMTEgc3RhY2suIE15IGluaXRpYWwgdGhvdWdodCBpcyB0aGF0IGBpZWVlODAyMTFfYWRkX3N0YXRpb25gIGFuZCBgaWVlZTgwMjExX2NoYW5nZV9zdGF0aW9uYCBhcmUgY2FsbGluZyBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLiBJIGltbWVkaWF0ZWx5IHJlY29nbml6ZSB0aGF0IHRoZXNlIGZ1bmN0aW9ucywgYW5kIHRoZXJlZm9yZSBgc3RhX2FwcGx5X3BhcmFtZXRlcnNgLCB1bHRpbWF0ZWx5IGludGVyYWN0IHdpdGggYHN0YV9hcHBseV9hdXRoX2ZsYWdzYC4gSSBrbm93IHRoZXNlIGFyZSBhbGwgbGlrZWx5IHJlYWNoYWJsZSB2aWEgYG5sODAyMTFgLCB3aGljaCBpc24ndCBzdXJwcmlzaW5nLlxuXG5HaXZlbiB0aGlzIHBhdGgsIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoaXMgYmVoYXZpb3IgaXMgY29uZmlndXJlZC4gSSBrbm93IHRoYXQgdGhlIHVuZGVybHlpbmcgY29uZmlndXJhdGlvbiBpcyBgTUFDODAyMTFgLiBOb3csIHRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIGludG8gdGhlIGBNQUM4MDIxMWAgY29uZmlndXJhdGlvbiBzZXR0aW5ncyB0byB1bmRlcnN0YW5kIGhvdyB0aGF0IGltcGFjdHMgdGhlc2Ugc3RhdGlvbiBwYXJhbWV0ZXIgYXBwbGljYXRpb25zLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IGFzcGVjdHMgYXJlIGNvbnRyb2xsZWQgdGhlcmUgYW5kIGhvdyB0aGVzZSBjYWxscyB0cmFuc2xhdGUgaW50byBhY3R1YWwgYmVoYXZpb3IgYmFzZWQgb24gdGhpcyBjb25maWd1cmF0aW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjozOTM1LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzM6MDguNDI2MTc4NzlaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTg0MTEyMjI0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTUFDODAyMTFcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L21hYzgwMjExL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbWFjODAyMTEvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI6Y29uZmlnIE1BQzgwMjExXFxubmV0L21hYzgwMjExL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiR2VuZXJpYyBJRUVFIDgwMi4xMSBOZXR3b3JraW5nIFN0YWNrIChtYWM4MDIxMSlcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0xOT1pZiBNQUM4MDIxMSAhPSBuXFxubmV0L21hYzgwMjExL0tjb25maWctMjAtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjE6Y29uZmlnIE1BQzgwMjExX0hBU19SQ1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyLVxcdGJvb2xcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMy1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDpjb25maWcgTUFDODAyMTFfUkNfTUlOU1RSRUxcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNS1cXHRib29sIFxcXCJNaW5zdHJlbFxcXCIgaWYgRVhQRVJUXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz0zMT1jaG9pY2VcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTQwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjQxOmNvbmZpZyBNQUM4MDIxMV9SQ19ERUZBVUxUX01JTlNUUkVMXFxubmV0L21hYzgwMjExL0tjb25maWctNDItXFx0Ym9vbCBcXFwiTWluc3RyZWxcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZz00OD1lbmRjaG9pY2VcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy00OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo1MDpjb25maWcgTUFDODAyMTFfUkNfREVGQVVMVFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTUxLVxcdHN0cmluZ1xcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWc9NTc9Y29tbWVudCBcXFwiU29tZSB3aXJlbGVzcyBkcml2ZXJzIHJlcXVpcmUgYSByYXRlIGNvbnRyb2wgYWxnb3JpdGhtXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctNTktXFxubmV0L21hYzgwMjExL0tjb25maWc6NjA6Y29uZmlnIE1BQzgwMjExX0tVTklUX1RFU1RcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02MS1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIG1hYzgwMjExXFxcIiBpZiAhS1VOSVRfQUxMX1RFU1RTXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy02OS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzo3MDpjb25maWcgTUFDODAyMTFfTUVTSFxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTcxLVxcdGJvb2wgXFxcIkVuYWJsZSBtYWM4MDIxMSBtZXNoIG5ldHdvcmtpbmcgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTc4LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjc5OmNvbmZpZyBNQUM4MDIxMV9MRURTXFxubmV0L21hYzgwMjExL0tjb25maWctODAtXFx0Ym9vbCBcXFwiRW5hYmxlIExFRCB0cmlnZ2Vyc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTg3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjg4OmNvbmZpZyBNQUM4MDIxMV9ERUJVR0ZTXFxubmV0L21hYzgwMjExL0tjb25maWctODktXFx0Ym9vbCBcXFwiRXhwb3J0IG1hYzgwMjExIGludGVybmFscyBpbiBEZWJ1Z0ZTXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctOTYtXFxubmV0L21hYzgwMjExL0tjb25maWc6OTc6Y29uZmlnIE1BQzgwMjExX01FU1NBR0VfVFJBQ0lOR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTk4LVxcdGJvb2wgXFxcIlRyYWNlIGFsbCBtYWM4MDIxMSBkZWJ1ZyBtZXNzYWdlc1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEwOS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxMTA6bWVudWNvbmZpZyBNQUM4MDIxMV9ERUJVR19NRU5VXFxubmV0L21hYzgwMjExL0tjb25maWctMTExLVxcdGJvb2wgXFxcIlNlbGVjdCBtYWM4MDIxMSBkZWJ1Z2dpbmcgZmVhdHVyZXNcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xMTUtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTE2OmNvbmZpZyBNQUM4MDIxMV9OT0lOTElORVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTExNy1cXHRib29sIFxcXCJEbyBub3QgaW5saW5lIFRYL1JYIGhhbmRsZXJzXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTMxLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjEzMjpjb25maWcgTUFDODAyMTFfVkVSQk9TRV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTEzMy1cXHRib29sIFxcXCJWZXJib3NlIGRlYnVnZ2luZyBvdXRwdXRcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNDItXFxubmV0L21hYzgwMjExL0tjb25maWc6MTQzOmNvbmZpZyBNQUM4MDIxMV9NTE1FX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMTQ0LVxcdGJvb2wgXFxcIlZlcmJvc2UgbWFuYWdlZCBNTE1FIG91dHB1dFxcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1My1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoxNTQ6Y29uZmlnIE1BQzgwMjExX1NUQV9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE1NS1cXHRib29sIFxcXCJWZXJib3NlIHN0YXRpb24gZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTYyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE2Mzpjb25maWcgTUFDODAyMTFfSFRfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNjQtXFx0Ym9vbCBcXFwiVmVyYm9zZSBIVCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MTc1OmNvbmZpZyBNQUM4MDIxMV9PQ0JfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xNzYtXFx0Ym9vbCBcXFwiVmVyYm9zZSBPQ0IgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTg1LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE4Njpjb25maWcgTUFDODAyMTFfSUJTU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTE4Ny1cXHRib29sIFxcXCJWZXJib3NlIElCU1MgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMTk2LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjE5Nzpjb25maWcgTUFDODAyMTFfUFNfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0xOTgtXFx0Ym9vbCBcXFwiVmVyYm9zZSBwb3dlcnNhdmUgbW9kZSBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMDgtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjA5OmNvbmZpZyBNQUM4MDIxMV9NUExfREVCVUdcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMTAtXFx0Ym9vbCBcXFwiVmVyYm9zZSBtZXNoIHBlZXIgbGluayBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMjEtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjIyOmNvbmZpZyBNQUM4MDIxMV9NUEFUSF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIyMy1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggcGF0aCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yMzQtXFxubmV0L21hYzgwMjExL0tjb25maWc6MjM1OmNvbmZpZyBNQUM4MDIxMV9NSFdNUF9ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTIzNi1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggSFdNUCByb3V0aW5nIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0Ny1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNDg6Y29uZmlnIE1BQzgwMjExX01FU0hfU1lOQ19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI0OS1cXHRib29sIFxcXCJWZXJib3NlIG1lc2ggc3luY2hyb25pemF0aW9uIGRlYnVnZ2luZ1xcXCJcXG4tLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI1OC1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZzoyNTk6Y29uZmlnIE1BQzgwMjExX01FU0hfQ1NBX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjYwLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBjaGFubmVsIHN3aXRjaCBkZWJ1Z2dpbmdcXFwiXFxuLS1cXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yNjktXFxubmV0L21hYzgwMjExL0tjb25maWc6MjcwOmNvbmZpZyBNQUM4MDIxMV9NRVNIX1BTX0RFQlVHXFxubmV0L21hYzgwMjExL0tjb25maWctMjcxLVxcdGJvb2wgXFxcIlZlcmJvc2UgbWVzaCBwb3dlcnNhdmUgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjgwLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI4MTpjb25maWcgTUFDODAyMTFfVERMU19ERUJVR1xcbm5ldC9tYWM4MDIxMS9LY29uZmlnLTI4Mi1cXHRib29sIFxcXCJWZXJib3NlIFRETFMgZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMjkyLVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjI5Mzpjb25maWcgTUFDODAyMTFfREVCVUdfQ09VTlRFUlNcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0yOTQtXFx0Ym9vbCBcXFwiRXh0cmEgc3RhdGlzdGljcyBmb3IgVFgvUlggZGVidWdnaW5nXFxcIlxcbi0tXFxubmV0L21hYzgwMjExL0tjb25maWctMzA3LVxcbm5ldC9tYWM4MDIxMS9LY29uZmlnOjMwODpjb25maWcgTUFDODAyMTFfU1RBX0hBU0hfTUFYX1NJWkVcXG5uZXQvbWFjODAyMTEvS2NvbmZpZy0zMDktXFx0aW50IFxcXCJTdGF0aW9uIGhhc2ggdGFibGUgbWF4aW11bSBzaXplXFxcIiBpZiBNQUM4MDIxMV9ERUJVR19NRU5VXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjEwLjI2NzMwNzk3OFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MjMwNjg3NzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBNQUM4MDIxMSBDb25maWd1cmF0aW9uIGFuZCBQYXRjaCoqXG5cbk9rYXksIHNvIHRoZSBiYXNlIGNvbmZpZ3VyYXRpb24gaGVyZSBpcyBkZWZpbml0ZWx5IE1BQzgwMjExLiBHb29kLCB0aGF0J3Mgd2hhdCBJIGV4cGVjdGVkLiBUaGUgbWVudGlvbiBvZiBNQUM4MDIxMV9IV1NJTSBpcyB1c2VmdWw7IHdlIGNhbiBsZXZlcmFnZSB0aGF0IGZvciB0aG9yb3VnaCB0ZXN0aW5nLiBCZWZvcmUgSSBkaXZlIHRvbyBkZWVwIGludG8gdGhlIHBhdGNoIGl0c2VsZiwgbGV0J3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgb3RoZXIgY29uZmlndXJhdGlvbiBkZXBlbmRlbmNpZXMgd2UgbmVlZCB0byBiZSBhd2FyZSBvZi4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBvdXIgYmFzZXMuXG5cblJpZ2h0LCB0aGUgY29yZSBjaGFuZ2UgaXMgaW4gYG5ldC9tYWM4MDIxMS9jZmcuY2AsIHNwZWNpZmljYWxseSB0aGUgYHN0YV9hcHBseV9hdXRoX2ZsYWdzYCBmdW5jdGlvbi4gSXQgbG9va3MgbGlrZSB0aGUgY2hhbmdlIGlzIGRlZmluaXRlbHkgcmVhY2hhYmxlLCB3aGljaCBpcyBpbXBvcnRhbnQgdG8gY29uZmlybSBmcm9tIHRoZSBvdXRzZXQuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgY2hlY2sgZm9yIGBpZWVlODAyMTFfdmlmX2lzX21sZChcdTAwMjZzdGEtXHUwMDNlc2RhdGEtXHUwMDNldmlmKWAuIEFoLCBNTEQuLi4gTXVsdGktTGluayBEZXZpY2UuIFRoYXQncyBXaS1GaSA3IHRlcnJpdG9yeS5cblxuVGhpcyBpcyB3aGVyZSB0aGluZ3MgZ2V0IGludGVyZXN0aW5nLiBJIG5lZWQgdG8gZmlndXJlIG91dCBpZiB0aGVyZSdzIGEgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBNTEQgdGhhdCdzIHJlbGF0ZWQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZXMgYW5kIHBvc3NpYmx5IHJlbGF0ZWQgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUncyBhIHNwZWNpZmljIGZsYWcgb3Igc2V0dGluZyB0aGF0IGVuYWJsZXMgb3IgZGlzYWJsZXMgdGhpcy4gTWFraW5nIHN1cmUgdGhpcyBmZWF0dXJlIGlzIHByb3Blcmx5IGVuYWJsZWQgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIGZ1bGwgaW1wbGljYXRpb24gb2YgdGhlIHBhdGNoLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2NDgwLCJPdXRwdXRUb2tlbnMiOjQ0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjE0LjY5MDM4MjA0N1oiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTc0NjkwODg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImllZWU4MDIxMV92aWZfaXNfbWxkXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9tYWM4MDIxMS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L21hYzgwMjExL2FwLmM9NTE9aWVlZTgwMjExX3J4X2VtbF9vcF9tb2RlX25vdGlmKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2FwLmMtNjgtXFxubmV0L21hYzgwMjExL2FwLmM6Njk6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL2FwLmMtNzAtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTI3PWllZWU4MDIxMV9saW5rX29yX2RlZmxpbmsoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsIGludCBsaW5rX2lkLFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTM3LVxcdFxcdCAqL1xcbm5ldC9tYWM4MDIxMS9jZmcuYzozODpcXHRcXHRpZiAocmVxdWlyZV92YWxpZCBcXHUwMDI2XFx1MDAyNiBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL2NmZy5jLTM5LVxcdFxcdFxcdHJldHVybiBFUlJfUFRSKC1FSU5WQUwpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTIxMjk9c3RhdGljIGludCBzdGFfYXBwbHlfYXV0aF9mbGFncyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUxLVxcdFxcdGlmICghdGVzdF9zdGFfZmxhZyhzdGEsIFdMQU5fU1RBX1JBVEVfQ09OVFJPTCkpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmM6MjE1MjpcXHRcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL2NmZy5jLTIxNTMtXFx0XFx0XFx0ICAgICFyY3VfYWNjZXNzX3BvaW50ZXIoXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9MzkxMj1pbnQgX19pZWVlODAyMTFfcmVxdWVzdF9zbXBzX21nZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc0LVxcdFxcdFxcdFxcdFxcdCBhcCwgYXAsXFxubmV0L21hYzgwMjExL2NmZy5jOjM5NzU6XFx0XFx0XFx0XFx0XFx0IGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSA/XFxubmV0L21hYzgwMjExL2NmZy5jLTM5NzYtXFx0XFx0XFx0XFx0XFx0IGxpbmstXFx1MDAzZWxpbmtfaWQgOiAtMSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmM9NDk1OD1zdGF0aWMgaW50IGllZWU4MDIxMV9wcm9iZV9jbGllbnQoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IG5ldF9kZXZpY2UgKmRldixcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy00OTg3LVxcbm5ldC9tYWM4MDIxMS9jZmcuYzo0OTg4OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk4OS1cXHRcXHRpZiAoc3RhLVxcdTAwM2VzdGEubWxvKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNTA0Mi1cXHRtZW1jcHkobnVsbGZ1bmMtXFx1MDAzZWFkZHIxLCBzdGEtXFx1MDAzZXN0YS5hZGRyLCBFVEhfQUxFTik7XFxubmV0L21hYzgwMjExL2NmZy5jOjUwNDM6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNiAhc3RhLVxcdTAwM2VzdGEubWxvKSB7XFxubmV0L21hYzgwMjExL2NmZy5jLTUwNDQtXFx0XFx0bWVtY3B5KG51bGxmdW5jLVxcdTAwM2VhZGRyMiwgY29uZi1cXHUwMDNlYWRkciwgRVRIX0FMRU4pO1xcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmg9MTI1PWRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xMzktXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNDA6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjYobGluayktXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpKSAgICAgICAgICBcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQxLVxcdFxcdFxcdF9zZGF0YV9pbmZvKChsaW5rKS1cXHUwMDNlc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTQ4LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQ5OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2KGxpbmspLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkgICAgICAgICAgXFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE1MC1cXHRcXHRcXHRfc2RhdGFfZXJyKChsaW5rKS1cXHUwMDNlc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTU5LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTYwOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE2MS1cXHRcXHRcXHRfc2RhdGFfaW5mbyhzZGF0YSwgXFxcIltsaW5rICVkXSBcXFwiIGZtdCwgbGlua19pZCxcXHRcXFxcXFxuLS1cXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjctXFx0ZG8ge1xcdFxcdFxcdFxcdFxcdFxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaDoxNjg6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjYoc2RhdGEpLVxcdTAwM2V2aWYpKVxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjktXFx0XFx0XFx0X3NkYXRhX2RiZyhwcmludCwgc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg9MTczOT1pZWVlODAyMTFfZ2V0X3NiYW5kKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0NC1cXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaDoxNzQ1OlxcdFdBUk5fT04oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKTtcXG5uZXQvbWFjODAyMTEvaWVlZTgwMjExX2kuaC0xNzQ2LVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmM9NDc5PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kb19zdG9wKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBib29sIGdvaW5nX2Rvd24pXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjItXFxubmV0L21hYzgwMjExL2lmYWNlLmM6NTYzOlxcdFdBUk4oaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpLFxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTU2NC1cXHQgICAgIFxcXCJkZXN0cm95aW5nIGludGVyZmFjZSB3aXRoIHZhbGlkIGxpbmtzIDB4JTA0eFxcXFxuXFxcIixcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTE5NzQ9c3RhdGljIGludCBpZWVlODAyMTFfcnVudGltZV9jaGFuZ2VfaWZ0eXBlKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtMTk4Ny1cXHQvKiBmb3Igbm93LCBkb24ndCBzdXBwb3J0IGNoYW5naW5nIHdoaWxlIGxpbmtzIGV4aXN0ICovXFxubmV0L21hYzgwMjExL2lmYWNlLmM6MTk4ODpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODktXFx0XFx0cmV0dXJuIC1FQlVTWTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tYWluLmM9MzM2PXZvaWQgaWVlZTgwMjExX2Jzc19pbmZvX2NoYW5nZV9ub3RpZnkoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0Mi1cXG5uZXQvbWFjODAyMTEvbWFpbi5jOjM0MzpcXHRXQVJOX09OX09OQ0UoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKTtcXG5uZXQvbWFjODAyMTEvbWFpbi5jLTM0NC1cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MjQxND1pZWVlODAyMTFfYXNzb2NfYWRkX21sX2VsZW0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MjgtXFxubmV0L21hYzgwMjExL21sbWUuYzoyNDI5OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjQzMC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI1ODI9c3RhdGljIGludCBpZWVlODAyMTFfc2VuZF9hc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjYzOS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjI2NDA6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMjY0MS1cXHRcXHQvKiBjb25zaWRlciB0aGUgbXVsdGktbGluayBlbGVtZW50IHdpdGggU1RBIHByb2ZpbGUgKi9cXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDM5ND1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Fzc29jaWF0ZWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTQtXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDE1OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MTYtXFx0XFx0ICAgICEoaWVlZTgwMjExX3ZpZl91c2FibGVfbGlua3MoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjYgQklUKGxpbmtfaWQpKSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzNi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Mzc6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQzOC1cXHRcXHRmb3IgKGxpbmtfaWQgPSAwO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDY4LVxcdC8qIGxlYXZlIHRoaXMgaGVyZSB0byBub3QgY2hhbmdlIG9yZGVyaW5nIGluIG5vbi1NTE8gY2FzZXMgKi9cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0Njk6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy00NDcwLVxcdFxcdGllZWU4MDIxMV9yZWNhbGNfc21wcyhzZGF0YSwgXFx1MDAyNnNkYXRhLVxcdTAwM2VkZWZsaW5rKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDQ3Nj1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25mX3Jlc2V0KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDgwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQ4MTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ4Mi1cXHQgICAgIShzZGF0YS1cXHUwMDNldS5tZ2QucmVjb25mLmFkZGVkX2xpbmtzIHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDUwOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfc2V0X2Rpc2Fzc29jKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjMyLVxcdC8qIGZpbmFsbHkgcmVzZXQgYWxsIEJTUyAvIGNvbmZpZyBwYXJhbWV0ZXJzICovXFxubmV0L21hYzgwMjExL21sbWUuYzo0NjMzOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzNC1cXHRcXHRjaGFuZ2VkIHw9IGllZWU4MDIxMV9yZXNldF9lcnBfaW5mbyhzZGF0YSk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTctXFx0ICAgICAgIHNpemVvZihzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLm11X2dyb3VwLnBvc2l0aW9uKSk7XFxubmV0L21hYzgwMjExL21sbWUuYzo0NjU4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY1OS1cXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX01VX0dST1VQUztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3MS1cXHRzZGF0YS1cXHUwMDNldmlmLmJzc19jb25mLnFvcyA9IGZhbHNlO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDY3MjpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDY3My1cXHRcXHRjaGFuZ2VkIHw9IEJTU19DSEFOR0VEX1FPUztcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NDk3Mj1zdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2FwX3Byb2JlcmVxX2dldChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDk4NC1cXHRpZiAoV0FSTl9PTihzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTiB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDk4NTpcXHRcXHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ5ODYtXFx0XFx0cmV0dXJuIE5VTEw7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTUzMDA9c3RhdGljIHZvaWQgaWVlZTgwMjExX2Rlc3Ryb3lfYXNzb2NfZGF0YShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNTMzNS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjUzMzY6XFx0XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzctXFx0XFx0XFx0XFx0ZGF0YS5hcF9tbGRfYWRkciA9IGFzc29jX2RhdGEtXFx1MDAzZWFwX2FkZHI7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTY5MjQ9c3RhdGljIGJvb2wgaWVlZTgwMjExX2Fzc29jX3N1Y2Nlc3Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NDgtXFxubmV0L21hYzgwMjExL21sbWUuYzo2OTQ5OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTY5NTAtXFx0XFx0aWYgKCFlbGVtcy1cXHUwMDNlbWxfYmFzaWMpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcwMTAtXFxubmV0L21hYzgwMjExL21sbWUuYzo3MDExOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy03MDEyLVxcdFxcdFxcdGxpbmtfaW5mbyhsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz03MTM1PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2Fzc29jX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzItXFxubmV0L21hYzgwMjExL21sbWUuYzo3MjczOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTcyNzQtXFx0XFx0XFx0c3RydWN0IGllZWU4MDIxMV9tbGVfYmFzaWNfY29tbW9uX2luZm8gKmNvbW1vbjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzMzOS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjczNDA6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzM0MS1cXHRcXHRldGhlcl9hZGRyX2NvcHkoYXBfbWxkX2FkZHIsIHNkYXRhLVxcdTAwM2V2aWYuY2ZnLmFwX2FkZHIpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz03NjMxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9yZWNvbmZpZ3VyYXRpb24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2MzktXFxubmV0L21hYzgwMjExL21sbWUuYzo3NjQwOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8ICFlbGVtcy1cXHUwMDNlbWxfcmVjb25mKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzY0MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTc4MDE9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfYWR2X3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc4MDctXFxubmV0L21hYzgwMjExL21sbWUuYzo3ODA4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzgwOS1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTgwNTY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3J4X21nbXRfYmVhY29uKHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04MTE3LVxcdGlmIChpZm1nZC1cXHUwMDNlYXNzb2NfZGF0YSBcXHUwMDI2XFx1MDAyNiBpZm1nZC1cXHUwMDNlYXNzb2NfZGF0YS1cXHUwMDNlbmVlZF9iZWFjb24gXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjgxMTg6XFx0ICAgICFXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTgxMTktXFx0ICAgIGllZWU4MDIxMV9yeF9vdXJfYmVhY29uKGJzc2lkLCBpZm1nZC1cXHUwMDNlYXNzb2NfZGF0YS1cXHUwMDNlbGlua1swXS5ic3MpKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg1NDE9aW50IGllZWU4MDIxMV9yZXFfbmVnX3R0bG0oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg1NDYtXFxubmV0L21hYzgwMjExL21sbWUuYzo4NTQ3OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ4LVxcdCAgICAhKHNkYXRhLVxcdTAwM2V2aWYuY2ZnLm1sZF9jYXBhX29wIFxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODcwOT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcHJvY2Vzc19uZWdfdHRsbV9yZXEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3MjAtXFxubmV0L21hYzgwMjExL21sbWUuYzo4NzIxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODcyMi1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3NzM9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc2LXtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg3Nzc6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3NzgtXFx0ICAgIG1nbXQtXFx1MDAzZXUuYWN0aW9uLnR0bG1fcmVzLmRpYWxvZ190b2tlbiAhPSBzZGF0YS1cXHUwMDNldS5tZ2QuZGlhbG9nX3Rva2VuX2FsbG9jKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04ODk1PXN0YXRpYyBpbnQgaWVlZTgwMjExX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg5MTItXFx0aWYgKGF1dGhfZGF0YS1cXHUwMDNlYWxnb3JpdGhtID09IFdMQU5fQVVUSF9FUFBLRSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODkxMzpcXHQgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYy04OTE0LVxcdCAgICAhY2ZnODAyMTFfZmluZF9leHRfZWxlbShXTEFOX0VJRF9FWFRfRUhUX01VTFRJX0xJTkssXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTk4NDI9aW50IGllZWU4MDIxMV9tZ2RfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTAwNDAtIGVycl9jbGVhcjpcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwMDQxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy0xMDA0Mi1cXHRcXHRldGhfemVyb19hZGRyKHNkYXRhLVxcdTAwM2VkZWZsaW5rLnUubWdkLmJzc2lkKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTA4Njg9aWVlZTgwMjExX3Byb2Nlc3NfbWxfcmVjb25mX3Jlc3Aoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg0LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTA4ODU6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwODg2LVxcdCAgICBsZW4gXFx1MDAzYyBJRUVFODAyMTFfTUlOX0FDVElPTl9TSVpFKG1sX3JlY29uZl9yZXNwKSB8fFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTMzMD1pbnQgaWVlZTgwMjExX21nZF9hc3NvY19tbF9yZWNvbmYoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQxLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTEzNDI6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExMzQzLVxcdCAgICAhKHNkYXRhLVxcdTAwM2V2aWYuY2ZnLm1sZF9jYXBhX29wIFxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE1NTQ9c3RhdGljIGJvb2wgaWVlZTgwMjExX21nZF9lcGNzX3N1cHAoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNTYwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE1NjE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTU2Mi1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNjI4PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9tbF9lcGNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzNi1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNjM3OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8ICFlbGVtcy1cXHUwMDNlbWxfZXBjcylcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNjM4LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTE3NDY9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfZXBjc190ZWFyZG93bihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE3NDkte1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MTE3NTA6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzUxLVxcdCAgICAhc2RhdGEtXFx1MDAzZXUubWdkLmVwY3MuZW5hYmxlZClcXG4tLVxcbm5ldC9tYWM4MDIxMS9yYXRlLmM9MzE9dm9pZCByYXRlX2NvbnRyb2xfcmF0ZV9pbml0KHN0cnVjdCBsaW5rX3N0YV9pbmZvICpsaW5rX3N0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9yYXRlLmMtNDQtXFx0LyogU1cgcmF0ZSBjb250cm9sIGlzbid0IHN1cHBvcnRlZCB3aXRoIE1MTyByaWdodCBub3cgKi9cXG5uZXQvbWFjODAyMTEvcmF0ZS5jOjQ1OlxcdGlmIChXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzdGEtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpKSlcXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTQ2LVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTE1MjE9aWVlZTgwMjExX3J4X2hfY2hlY2tfZHVwKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0xNTUwLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjE1NTE6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvcnguYy0xNTUyLVxcdFxcdCAgICBzZGF0YS1cXHUwMDNldmlmLnR5cGUgIT0gTkw4MDIxMV9JRlRZUEVfU1RBVElPTilcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jPTI2ODQ9Ym9vbCBpZWVlODAyMTFfaXNfb3VyX2FkZHIoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy0yNjkyLVxcbm5ldC9tYWM4MDIxMS9yeC5jOjI2OTM6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3J4LmMtMjY5NC1cXHRcXHRyZXR1cm4gZmFsc2U7XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz00MzQxPXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9kYXRhX3NldF9zdGEoc3RydWN0IGllZWU4MDIxMV9yeF9kYXRhICpyeCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTYtXFx0aWYgKGxpbmtfaWQgXFx1MDAzYyAwKSB7XFxubmV0L21hYzgwMjExL3J4LmM6NDM1NzpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnJ4LVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9yeC5jLTQzNTgtXFx0XFx0ICAgIHN0YSBcXHUwMDI2XFx1MDAyNiAhc3RhLVxcdTAwM2VzdGEudmFsaWRfbGlua3MpXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz01Mjk2PXN0YXRpYyBib29sIGllZWU4MDIxMV9yeF9mb3JfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy01MzE5LVxcdFxcdFxcdGxpbmtfaWQgPSBzdGF0dXMtXFx1MDAzZWxpbmtfaWQ7XFxubmV0L21hYzgwMjExL3J4LmM6NTMyMDpcXHRcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy01MzIxLVxcdFxcdFxcdCAgIHN0YXR1cy1cXHUwMDNlZnJlcSkge1xcbi0tXFxubmV0L21hYzgwMjExL3NjYW4uYz0xNjg9aWVlZTgwMjExX2Jzc19pbmZvX3VwZGF0ZShzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA1LVxcdFxcdCAqL1xcbm5ldC9tYWM4MDIxMS9zY2FuLmM6MjA2OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2Nhbl9zZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9zY2FuLmMtMjA3LVxcdFxcdFxcdGlmIChyeF9zdGF0dXMtXFx1MDAzZWxpbmtfdmFsaWQpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmM9NzMxPXN0YXRpYyBpbnQgX19pZWVlODAyMTFfc3RhcnRfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmMtNzQ1LVxcdCAqL1xcbm5ldC9tYWM4MDIxMS9zY2FuLmM6NzQ2OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjYgcmVxLVxcdTAwM2V0c2ZfcmVwb3J0X2xpbmtfaWQgXFx1MDAzZT0gMCBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9zY2FuLmMtNzQ3LVxcdCAgICAhKHNkYXRhLVxcdTAwM2V2aWYuYWN0aXZlX2xpbmtzIFxcdTAwMjYgQklUKHJlcS1cXHUwMDNldHNmX3JlcG9ydF9saW5rX2lkKSkpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz04MjA9aWVlZTgwMjExX3R4X2hfc2VxdWVuY2Uoc3RydWN0IGllZWU4MDIxMV90eF9kYXRhICp0eClcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTg0Ny1cXHRpZiAodW5saWtlbHkoaXNfbXVsdGljYXN0X2V0aGVyX2FkZHIoaGRyLVxcdTAwM2VhZGRyMSkgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYzo4NDg6XFx0XFx0ICAgICBpZWVlODAyMTFfdmlmX2lzX21sZChpbmZvLVxcdTAwM2Vjb250cm9sLnZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYy04NDktXFx0XFx0ICAgICBpbmZvLVxcdTAwM2Vjb250cm9sLnZpZi1cXHUwMDNldHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCkpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTI2MzE9c3RhdGljIHN0cnVjdCBza19idWZmICppZWVlODAyMTFfYnVpbGRfaGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjY2Ny1cXG5uZXQvbWFjODAyMTEvdHguYzoyNjY4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjktXFx0XFx0Y2hhbmN0eF9jb25mID1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI2ODQtXFx0XFx0fVxcbm5ldC9tYWM4MDIxMS90eC5jOjI2ODU6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0yNjg2LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKmFwX3NkYXRhO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjcwMi1cXG5uZXQvbWFjODAyMTEvdHguYzoyNzAzOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjYgc3RhIFxcdTAwMjZcXHUwMDI2ICFzdGEtXFx1MDAzZXN0YS5tbG8pIHtcXG5uZXQvbWFjODAyMTEvdHguYy0yNzA0LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbGlua19kYXRhICpsaW5rO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMjg4MS1cXHRcXHRcXHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XFxubmV0L21hYzgwMjExL3R4LmM6Mjg4MjpcXHRcXHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy0yODgzLVxcdFxcdFxcdHJldCA9IC1FTk9UQ09OTjtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTMwNzg9dm9pZCBpZWVlODAyMTFfY2hlY2tfZmFzdF94bWl0KHN0cnVjdCBzdGFfaW5mbyAqc3RhKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzEyNy1cXG5uZXQvbWFjODAyMTEvdHguYzozMTI4OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMzEyOS1cXHRcXHRyY3VfcmVhZF9sb2NrKCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0zMjA2LVxcdFxcdGJ1aWxkLmRhX29mZnMgPSBvZmZzZXRvZihzdHJ1Y3QgaWVlZTgwMjExX2hkciwgYWRkcjEpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjMyMDc6XFx0XFx0aWYgKHN0YS1cXHUwMDNlc3RhLm1sbyB8fCAhaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMzIwOC1cXHRcXHRcXHRtZW1jcHkoaGRyLVxcdTAwM2VhZGRyMiwgc2RhdGEtXFx1MDAzZXZpZi5hZGRyLCBFVEhfQUxFTik7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NTYxPW5ldGRldl90eF90IGllZWU4MDIxMV9zdWJpZl9zdGFydF94bWl0KHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00NTgzLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgTlVMTCk7XFxubmV0L21hYzgwMjExL3R4LmM6NDU4NDpcXHR9IGVsc2UgaWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS90eC5jLTQ1ODUtXFx0XFx0ICAgKChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ3NTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX2NoZWNrX21jYXN0X29mZmxvYWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00NzU1LVxcbm5ldC9tYWM4MDIxMS90eC5jOjQ3NTY6XFx0aWYgKChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYy00NzU3LVxcdCAgICAgKHNkYXRhLVxcdTAwM2V2aWYudHlwZSA9PSBOTDgwMjExX0lGVFlQRV9BUCBcXHUwMDI2XFx1MDAyNlxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDkxMT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfdHhfcGVuZGluZ19za2Ioc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy00OTI0LVxcdFxcdC8qIHVwZGF0ZSBiYW5kIG9ubHkgZm9yIG5vbi1NTEQgKi9cXG5uZXQvbWFjODAyMTEvdHguYzo0OTI1OlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtNDkyNi1cXHRcXHRcXHRjaGFuY3R4X2NvbmYgPVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjM5Nj12b2lkIF9faWVlZTgwMjExX3R4X3NrYl90aWRfYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTY0MTMtXFxubmV0L21hYzgwMjExL3R4LmM6NjQxNDpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTY0MTUtXFx0XFx0bGluayA9IDA7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz02NDUzPXZvaWQgaWVlZTgwMjExX3R4X3NrYl90aWQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NDYyLVxcdFxcdGJhbmQgPSBOVU1fTkw4MDIxMV9CQU5EUztcXG5uZXQvbWFjODAyMTEvdHguYzo2NDYzOlxcdH0gZWxzZSBpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTY0NjQtXFx0XFx0V0FSTl9PTihsaW5rX2lkIFxcdTAwM2U9IDApO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYz0xMTM0PXZvaWQgaWVlZTgwMjExX3NlbmRfYXV0aChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMTE0Mi1cXHRzdHJ1Y3QgaWVlZTgwMjExX21nbXQgKm1nbXQ7XFxubmV0L21hYzgwMjExL3V0aWwuYzoxMTQzOlxcdGJvb2wgbXVsdGlfbGluayA9IGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKTtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDQtXFx0c3RydWN0IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTg4Mj1pbnQgaWVlZTgwMjExX3JlY29uZmlnKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsKVxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMDcxLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjA3MjpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yMDczLVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfYnNzX2NvbmYgKm9sZFtJRUVFODAyMTFfTUxEX01BWF9OVU1fTElOS1NdID0ge1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTI4LVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjEyOTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzAtXFx0XFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9JRExFO1xcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMzLVxcdFxcdGNhc2UgTkw4MDIxMV9JRlRZUEVfU1RBVElPTjpcXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMzQ6XFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxMzUtXFx0XFx0XFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9BU1NPQyB8XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxNzEtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTcyOlxcdFxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTczLVxcdFxcdFxcdFxcdGllZWU4MDIxMV92aWZfY2ZnX2NoYW5nZV9ub3RpZnkoc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODUtXFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTg2OlxcdFxcdFxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdXRpbC5jLTIxODctXFx0XFx0XFx0XFx0XFx0aWVlZTgwMjExX3JlY29uZmlnX2FwX2xpbmtzKGxvY2FsLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMzoxNS4yNjUwODU0OTVaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU3NzUxNTkxOSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKk1MRCBTdXBwb3J0IGluIG1hYzgwMjExIC0gQSBRdWljayBDaGVjayoqXG5cblJpZ2h0LCBzbyBNTEQgc3VwcG9ydCBpcyBlc3NlbnRpYWxseSBiYWtlZCBpbnRvIG1hYzgwMjExIHRoZXNlIGRheXMuIE5vIHNwZWNpYWwgY29uZmlndXJhdGlvbiBmbGFncyBvciBob29wcyB0byBqdW1wIHRocm91Z2gsIGFzc3VtaW5nIEknbSB1c2luZyBhIG1vZGVybiBlbm91Z2ggdmVyc2lvbi4gVGhhdCdzIGdvb2QgbmV3cywgc2ltcGxpZmllcyB0aGluZ3MgY29uc2lkZXJhYmx5LiBIb3dldmVyLCBiZWZvcmUgSSBnZXQgdG9vIGNvbWZvcnRhYmxlLCBJIHNob3VsZCBqdXN0IGRvdWJsZS1jaGVjayB0aGF0IEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcgc3VidGxlLiBMZXQgbWUganVzdCBxdWlja2x5IGNvbmZpcm0gbXkgdW5kZXJzdGFuZGluZyBvZiB0aGF0ICppZWVlODAyMTFfdmlmX2lzX21sZCogZGVmaW5pdGlvbiBqdXN0IHRvIGJlIDEwMCUgY2VydGFpbiB0aGVyZSBpc24ndCBzb21lIGNvcm5lciBjYXNlIG9yIGhpZGRlbiBkZXBlbmRlbmN5IEknbSBvdmVybG9va2luZy4gSnVzdCBhIHF1aWNrIHNhbml0eSBjaGVjayB0byBiZSB0aG9yb3VnaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY4MDYsIk91dHB1dFRva2VucyI6NDQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yMVQxMTozMzoxOC44NDI2MDY2NTRaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwOTU1ODc4NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJpZWVlODAyMTFfdmlmX2lzX21sZFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbWFjODAyMTEvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9tYWM4MDIxMS9hcC5jPTUxPWllZWU4MDIxMV9yeF9lbWxfb3BfbW9kZV9ub3RpZihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9hcC5jLTY4LVxcbm5ldC9tYWM4MDIxMS9hcC5jOjY5OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9hcC5jLTcwLVxcdFxcdHJldHVybjtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yNz1pZWVlODAyMTFfbGlua19vcl9kZWZsaW5rKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLCBpbnQgbGlua19pZCxcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zNy1cXHRcXHQgKi9cXG5uZXQvbWFjODAyMTEvY2ZnLmM6Mzg6XFx0XFx0aWYgKHJlcXVpcmVfdmFsaWQgXFx1MDAyNlxcdTAwMjYgaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOS1cXHRcXHRcXHRyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9jZmcuYz0yMTI5PXN0YXRpYyBpbnQgc3RhX2FwcGx5X2F1dGhfZmxhZ3Moc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMjE1MS1cXHRcXHRpZiAoIXRlc3Rfc3RhX2ZsYWcoc3RhLCBXTEFOX1NUQV9SQVRFX0NPTlRST0wpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jOjIxNTI6XFx0XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9jZmcuYy0yMTUzLVxcdFxcdFxcdCAgICAhcmN1X2FjY2Vzc19wb2ludGVyKFxcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTM5MTI9aW50IF9faWVlZTgwMjExX3JlcXVlc3Rfc21wc19tZ2Qoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtMzk3NC1cXHRcXHRcXHRcXHRcXHQgYXAsIGFwLFxcbm5ldC9tYWM4MDIxMS9jZmcuYzozOTc1OlxcdFxcdFxcdFxcdFxcdCBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgP1xcbm5ldC9tYWM4MDIxMS9jZmcuYy0zOTc2LVxcdFxcdFxcdFxcdFxcdCBsaW5rLVxcdTAwM2VsaW5rX2lkIDogLTEpO1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jPTQ5NTg9c3RhdGljIGludCBpZWVlODAyMTFfcHJvYmVfY2xpZW50KHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCBuZXRfZGV2aWNlICpkZXYsXFxuLS1cXG5uZXQvbWFjODAyMTEvY2ZnLmMtNDk4Ny1cXG5uZXQvbWFjODAyMTEvY2ZnLmM6NDk4ODpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL2NmZy5jLTQ5ODktXFx0XFx0aWYgKHN0YS1cXHUwMDNlc3RhLm1sbykge1xcbi0tXFxubmV0L21hYzgwMjExL2NmZy5jLTUwNDItXFx0bWVtY3B5KG51bGxmdW5jLVxcdTAwM2VhZGRyMSwgc3RhLVxcdTAwM2VzdGEuYWRkciwgRVRIX0FMRU4pO1xcbm5ldC9tYWM4MDIxMS9jZmcuYzo1MDQzOlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjYgIXN0YS1cXHUwMDNlc3RhLm1sbykge1xcbm5ldC9tYWM4MDIxMS9jZmcuYy01MDQ0LVxcdFxcdG1lbWNweShudWxsZnVuYy1cXHUwMDNlYWRkcjIsIGNvbmYtXFx1MDAzZWFkZHIsIEVUSF9BTEVOKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oPTEyNT1kbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTM5LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTQwOlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2KGxpbmspLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkgICAgICAgICAgXFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0MS1cXHRcXHRcXHRfc2RhdGFfaW5mbygobGluayktXFx1MDAzZXNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE0OC1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE0OTpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNihsaW5rKS1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikpICAgICAgICAgIFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNTAtXFx0XFx0XFx0X3NkYXRhX2VycigobGluayktXFx1MDAzZXNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oLTE1OS1cXHRkbyB7XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFx0XFxcXFxcbm5ldC9tYWM4MDIxMS9kZWJ1Zy5oOjE2MDpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcdFxcdFxcdFxcXFxcXG5uZXQvbWFjODAyMTEvZGVidWcuaC0xNjEtXFx0XFx0XFx0X3NkYXRhX2luZm8oc2RhdGEsIFxcXCJbbGluayAlZF0gXFxcIiBmbXQsIGxpbmtfaWQsXFx0XFxcXFxcbi0tXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY3LVxcdGRvIHtcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmg6MTY4OlxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2KHNkYXRhKS1cXHUwMDNldmlmKSlcXHRcXHRcXFxcXFxubmV0L21hYzgwMjExL2RlYnVnLmgtMTY5LVxcdFxcdFxcdF9zZGF0YV9kYmcocHJpbnQsIHNkYXRhLCBcXFwiW2xpbmsgJWRdIFxcXCIgZm10LFxcdFxcXFxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oPTE3Mzk9aWVlZTgwMjExX2dldF9zYmFuZChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZWVlODAyMTFfaS5oLTE3NDQtXFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmg6MTc0NTpcXHRXQVJOX09OKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSk7XFxubmV0L21hYzgwMjExL2llZWU4MDIxMV9pLmgtMTc0Ni1cXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jPTQ3OT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfZG9fc3RvcChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSwgYm9vbCBnb2luZ19kb3duKVxcbi0tXFxubmV0L21hYzgwMjExL2lmYWNlLmMtNTYyLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjU2MzpcXHRXQVJOKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSxcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy01NjQtXFx0ICAgICBcXFwiZGVzdHJveWluZyBpbnRlcmZhY2Ugd2l0aCB2YWxpZCBsaW5rcyAweCUwNHhcXFxcblxcXCIsXFxuLS1cXG5uZXQvbWFjODAyMTEvaWZhY2UuYz0xOTc0PXN0YXRpYyBpbnQgaWVlZTgwMjExX3J1bnRpbWVfY2hhbmdlX2lmdHlwZShzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9pZmFjZS5jLTE5ODctXFx0LyogZm9yIG5vdywgZG9uJ3Qgc3VwcG9ydCBjaGFuZ2luZyB3aGlsZSBsaW5rcyBleGlzdCAqL1xcbm5ldC9tYWM4MDIxMS9pZmFjZS5jOjE5ODg6XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvaWZhY2UuYy0xOTg5LVxcdFxcdHJldHVybiAtRUJVU1k7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWFpbi5jPTMzNj12b2lkIGllZWU4MDIxMV9ic3NfaW5mb19jaGFuZ2Vfbm90aWZ5KHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21haW4uYy0zNDItXFxubmV0L21hYzgwMjExL21haW4uYzozNDM6XFx0V0FSTl9PTl9PTkNFKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSk7XFxubmV0L21hYzgwMjExL21haW4uYy0zNDQtXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTI0MTQ9aWVlZTgwMjExX2Fzc29jX2FkZF9tbF9lbGVtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0yNDI4LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6MjQyOTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI0MzAtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0yNTgyPXN0YXRpYyBpbnQgaWVlZTgwMjExX3NlbmRfYXNzb2Moc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2MzktXFxubmV0L21hYzgwMjExL21sbWUuYzoyNjQwOlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTI2NDEtXFx0XFx0LyogY29uc2lkZXIgdGhlIG11bHRpLWxpbmsgZWxlbWVudCB3aXRoIFNUQSBwcm9maWxlICovXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQzOTQ9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9hc3NvY2lhdGVkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NDE0LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDQxNTpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYy00NDE2LVxcdFxcdCAgICAhKGllZWU4MDIxMV92aWZfdXNhYmxlX2xpbmtzKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2IEJJVChsaW5rX2lkKSkpXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MzYtXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDM3OlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0MzgtXFx0XFx0Zm9yIChsaW5rX2lkID0gMDtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ2OC1cXHQvKiBsZWF2ZSB0aGlzIGhlcmUgdG8gbm90IGNoYW5nZSBvcmRlcmluZyBpbiBub24tTUxPIGNhc2VzICovXFxubmV0L21hYzgwMjExL21sbWUuYzo0NDY5OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ3MC1cXHRcXHRpZWVlODAyMTFfcmVjYWxjX3NtcHMoc2RhdGEsIFxcdTAwMjZzZGF0YS1cXHUwMDNlZGVmbGluayk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ0NzY9c3RhdGljIHZvaWQgaWVlZTgwMjExX21sX3JlY29uZl9yZXNldChzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDQ4MC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ0ODE6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ0ODItXFx0ICAgICEoc2RhdGEtXFx1MDAzZXUubWdkLnJlY29uZi5hZGRlZF9saW5rcyB8XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ1MDg9c3RhdGljIHZvaWQgaWVlZTgwMjExX3NldF9kaXNhc3NvYyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNDYzMi1cXHQvKiBmaW5hbGx5IHJlc2V0IGFsbCBCU1MgLyBjb25maWcgcGFyYW1ldGVycyAqL1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDYzMzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2MzQtXFx0XFx0Y2hhbmdlZCB8PSBpZWVlODAyMTFfcmVzZXRfZXJwX2luZm8oc2RhdGEpO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy00NjU3LVxcdCAgICAgICBzaXplb2Yoc2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5tdV9ncm91cC5wb3NpdGlvbikpO1xcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NDY1ODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NTktXFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9NVV9HUk9VUFM7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzEtXFx0c2RhdGEtXFx1MDAzZXZpZi5ic3NfY29uZi5xb3MgPSBmYWxzZTtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ2NzI6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ2NzMtXFx0XFx0Y2hhbmdlZCB8PSBCU1NfQ0hBTkdFRF9RT1M7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTQ5NzI9c3RydWN0IHNrX2J1ZmYgKmllZWU4MDIxMV9hcF9wcm9iZXJlcV9nZXQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTQ5ODQtXFx0aWYgKFdBUk5fT04oc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04gfHxcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjQ5ODU6XFx0XFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkpXFxubmV0L21hYzgwMjExL21sbWUuYy00OTg2LVxcdFxcdHJldHVybiBOVUxMO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz01MzAwPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9kZXN0cm95X2Fzc29jX2RhdGEoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTUzMzUtXFxubmV0L21hYzgwMjExL21sbWUuYzo1MzM2OlxcdFxcdFxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL21sbWUuYy01MzM3LVxcdFxcdFxcdFxcdGRhdGEuYXBfbWxkX2FkZHIgPSBhc3NvY19kYXRhLVxcdTAwM2VhcF9hZGRyO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz02OTI0PXN0YXRpYyBib29sIGllZWU4MDIxMV9hc3NvY19zdWNjZXNzKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy02OTQ4LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6Njk0OTpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy02OTUwLVxcdFxcdGlmICghZWxlbXMtXFx1MDAzZW1sX2Jhc2ljKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MDEwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzAxMTpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtNzAxMi1cXHRcXHRcXHRsaW5rX2luZm8obGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzEzNT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfcnhfbWdtdF9hc3NvY19yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03MjcyLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzI3MzpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL21sbWUuYy03Mjc0LVxcdFxcdFxcdHN0cnVjdCBpZWVlODAyMTFfbWxlX2Jhc2ljX2NvbW1vbl9pbmZvICpjb21tb247XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTczMzktXFxubmV0L21hYzgwMjExL21sbWUuYzo3MzQwOlxcdGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTczNDEtXFx0XFx0ZXRoZXJfYWRkcl9jb3B5KGFwX21sZF9hZGRyLCBzZGF0YS1cXHUwMDNldmlmLmNmZy5hcF9hZGRyKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9NzYzMT1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfcmVjb25maWd1cmF0aW9uKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03NjM5LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzY0MDpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fCAhZWxlbXMtXFx1MDAzZW1sX3JlY29uZilcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc2NDEtXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz03ODAxPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2Fkdl90dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy03ODA3LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6NzgwODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTc4MDktXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04MDU2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9yeF9tZ210X2JlYWNvbihzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluayxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODExNy1cXHRpZiAoaWZtZ2QtXFx1MDAzZWFzc29jX2RhdGEgXFx1MDAyNlxcdTAwMjYgaWZtZ2QtXFx1MDAzZWFzc29jX2RhdGEtXFx1MDAzZW5lZWRfYmVhY29uIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYzo4MTE4OlxcdCAgICAhV0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL21sbWUuYy04MTE5LVxcdCAgICBpZWVlODAyMTFfcnhfb3VyX2JlYWNvbihic3NpZCwgaWZtZ2QtXFx1MDAzZWFzc29jX2RhdGEtXFx1MDAzZWxpbmtbMF0uYnNzKSkge1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04NTQxPWludCBpZWVlODAyMTFfcmVxX25lZ190dGxtKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04NTQ2LVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODU0NzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fFxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODU0OC1cXHQgICAgIShzZGF0YS1cXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTg3MDk9c3RhdGljIHZvaWQgaWVlZTgwMjExX3Byb2Nlc3NfbmVnX3R0bG1fcmVxKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04NzIwLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM6ODcyMTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvbWxtZS5jLTg3MjItXFx0XFx0cmV0dXJuO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz04NzczPXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX25lZ190dGxtX3JlcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODc3Ni17XFxubmV0L21hYzgwMjExL21sbWUuYzo4Nzc3OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy04Nzc4LVxcdCAgICBtZ210LVxcdTAwM2V1LmFjdGlvbi50dGxtX3Jlcy5kaWFsb2dfdG9rZW4gIT0gc2RhdGEtXFx1MDAzZXUubWdkLmRpYWxvZ190b2tlbl9hbGxvYylcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9ODg5NT1zdGF0aWMgaW50IGllZWU4MDIxMV9hdXRoKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy04OTEyLVxcdGlmIChhdXRoX2RhdGEtXFx1MDAzZWFsZ29yaXRobSA9PSBXTEFOX0FVVEhfRVBQS0UgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjg5MTM6XFx0ICAgIGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSBcXHUwMDI2XFx1MDAyNlxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtODkxNC1cXHQgICAgIWNmZzgwMjExX2ZpbmRfZXh0X2VsZW0oV0xBTl9FSURfRVhUX0VIVF9NVUxUSV9MSU5LLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz05ODQyPWludCBpZWVlODAyMTFfbWdkX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTEwMDQwLSBlcnJfY2xlYXI6XFxubmV0L21hYzgwMjExL21sbWUuYzoxMDA0MTpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTAwNDItXFx0XFx0ZXRoX3plcm9fYWRkcihzZGF0YS1cXHUwMDNlZGVmbGluay51Lm1nZC5ic3NpZCk7XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTEwODY4PWllZWU4MDIxMV9wcm9jZXNzX21sX3JlY29uZl9yZXNwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMDg4NC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjEwODg1OlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy0xMDg4Ni1cXHQgICAgbGVuIFxcdTAwM2MgSUVFRTgwMjExX01JTl9BQ1RJT05fU0laRShtbF9yZWNvbmZfcmVzcCkgfHxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmM9MTEzMzA9aW50IGllZWU4MDIxMV9tZ2RfYXNzb2NfbWxfcmVjb25mKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0MS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExMzQyOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTM0My1cXHQgICAgIShzZGF0YS1cXHUwMDNldmlmLmNmZy5tbGRfY2FwYV9vcCBcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNTU0PXN0YXRpYyBib29sIGllZWU4MDIxMV9tZ2RfZXBjc19zdXBwKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhKVxcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTU2MC1cXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNTYxOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE1NjItXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubmV0L21hYzgwMjExL21sbWUuYz0xMTYyOD1zdGF0aWMgdm9pZCBpZWVlODAyMTFfbWxfZXBjcyhzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS9tbG1lLmMtMTE2MzYtXFxubmV0L21hYzgwMjExL21sbWUuYzoxMTYzNzpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSB8fCAhZWxlbXMtXFx1MDAzZW1sX2VwY3MpXFxubmV0L21hYzgwMjExL21sbWUuYy0xMTYzOC1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jPTExNzQ2PXN0YXRpYyB2b2lkIGllZWU4MDIxMV9wcm9jZXNzX2VwY3NfdGVhcmRvd24oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvbWxtZS5jLTExNzQ5LXtcXG5uZXQvbWFjODAyMTEvbWxtZS5jOjExNzUwOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL21sbWUuYy0xMTc1MS1cXHQgICAgIXNkYXRhLVxcdTAwM2V1Lm1nZC5lcGNzLmVuYWJsZWQpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jPTMxPXZvaWQgcmF0ZV9jb250cm9sX3JhdGVfaW5pdChzdHJ1Y3QgbGlua19zdGFfaW5mbyAqbGlua19zdGEpXFxuLS1cXG5uZXQvbWFjODAyMTEvcmF0ZS5jLTQ0LVxcdC8qIFNXIHJhdGUgY29udHJvbCBpc24ndCBzdXBwb3J0ZWQgd2l0aCBNTE8gcmlnaHQgbm93ICovXFxubmV0L21hYzgwMjExL3JhdGUuYzo0NTpcXHRpZiAoV0FSTl9PTihpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c3RhLVxcdTAwM2VzZGF0YS1cXHUwMDNldmlmKSkpXFxubmV0L21hYzgwMjExL3JhdGUuYy00Ni1cXHRcXHRyZXR1cm47XFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0xNTIxPWllZWU4MDIxMV9yeF9oX2NoZWNrX2R1cChzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4KVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMTU1MC1cXG5uZXQvbWFjODAyMTEvcnguYzoxNTUxOlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIHx8XFxubmV0L21hYzgwMjExL3J4LmMtMTU1Mi1cXHRcXHQgICAgc2RhdGEtXFx1MDAzZXZpZi50eXBlICE9IE5MODAyMTFfSUZUWVBFX1NUQVRJT04pXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYz0yNjg0PWJvb2wgaWVlZTgwMjExX2lzX291cl9hZGRyKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtMjY5Mi1cXG5uZXQvbWFjODAyMTEvcnguYzoyNjkzOlxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS9yeC5jLTI2OTQtXFx0XFx0cmV0dXJuIGZhbHNlO1xcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9NDM0MT1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZGF0YV9zZXRfc3RhKHN0cnVjdCBpZWVlODAyMTFfcnhfZGF0YSAqcngsXFxuLS1cXG5uZXQvbWFjODAyMTEvcnguYy00MzU2LVxcdGlmIChsaW5rX2lkIFxcdTAwM2MgMCkge1xcbm5ldC9tYWM4MDIxMS9yeC5jOjQzNTc6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZyeC1cXHUwMDNlc2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvcnguYy00MzU4LVxcdFxcdCAgICBzdGEgXFx1MDAyNlxcdTAwMjYgIXN0YS1cXHUwMDNlc3RhLnZhbGlkX2xpbmtzKVxcbi0tXFxubmV0L21hYzgwMjExL3J4LmM9NTI5Nj1zdGF0aWMgYm9vbCBpZWVlODAyMTFfcnhfZm9yX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX3J4X2RhdGEgKnJ4LFxcbi0tXFxubmV0L21hYzgwMjExL3J4LmMtNTMxOS1cXHRcXHRcXHRsaW5rX2lkID0gc3RhdHVzLVxcdTAwM2VsaW5rX2lkO1xcbm5ldC9tYWM4MDIxMS9yeC5jOjUzMjA6XFx0XFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2cngtXFx1MDAzZXNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3J4LmMtNTMyMS1cXHRcXHRcXHQgICBzdGF0dXMtXFx1MDAzZWZyZXEpIHtcXG4tLVxcbm5ldC9tYWM4MDIxMS9zY2FuLmM9MTY4PWllZWU4MDIxMV9ic3NfaW5mb191cGRhdGUoc3RydWN0IGllZWU4MDIxMV9sb2NhbCAqbG9jYWwsXFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNS1cXHRcXHQgKi9cXG5uZXQvbWFjODAyMTEvc2Nhbi5jOjIwNjpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNjYW5fc2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTIwNy1cXHRcXHRcXHRpZiAocnhfc3RhdHVzLVxcdTAwM2VsaW5rX3ZhbGlkKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jPTczMT1zdGF0aWMgaW50IF9faWVlZTgwMjExX3N0YXJ0X3NjYW4oc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0NS1cXHQgKi9cXG5uZXQvbWFjODAyMTEvc2Nhbi5jOjc0NjpcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2IHJlcS1cXHUwMDNldHNmX3JlcG9ydF9saW5rX2lkIFxcdTAwM2U9IDAgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvc2Nhbi5jLTc0Ny1cXHQgICAgIShzZGF0YS1cXHUwMDNldmlmLmFjdGl2ZV9saW5rcyBcXHUwMDI2IEJJVChyZXEtXFx1MDAzZXRzZl9yZXBvcnRfbGlua19pZCkpKVxcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9ODIwPWllZWU4MDIxMV90eF9oX3NlcXVlbmNlKHN0cnVjdCBpZWVlODAyMTFfdHhfZGF0YSAqdHgpXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy04NDctXFx0aWYgKHVubGlrZWx5KGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGhkci1cXHUwMDNlYWRkcjEpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmM6ODQ4OlxcdFxcdCAgICAgaWVlZTgwMjExX3ZpZl9pc19tbGQoaW5mby1cXHUwMDNlY29udHJvbC52aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmMtODQ5LVxcdFxcdCAgICAgaW5mby1cXHUwMDNlY29udHJvbC52aWYtXFx1MDAzZXR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVApKSB7XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0yNjMxPXN0YXRpYyBzdHJ1Y3Qgc2tfYnVmZiAqaWVlZTgwMjExX2J1aWxkX2hkcihzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICpzZGF0YSxcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI2NjctXFxubmV0L21hYzgwMjExL3R4LmM6MjY2ODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSlcXG5uZXQvbWFjODAyMTEvdHguYy0yNjY5LVxcdFxcdGNoYW5jdHhfY29uZiA9XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy0yNjg0LVxcdFxcdH1cXG5uZXQvbWFjODAyMTEvdHguYzoyNjg1OlxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMjY4Ni1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX3N1Yl9pZl9kYXRhICphcF9zZGF0YTtcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI3MDItXFxubmV0L21hYzgwMjExL3R4LmM6MjcwMzpcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2IHN0YSBcXHUwMDI2XFx1MDAyNiAhc3RhLVxcdTAwM2VzdGEubWxvKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMjcwNC1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2xpbmtfZGF0YSAqbGluaztcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTI4ODEtXFx0XFx0XFx0YmFuZCA9IE5VTV9OTDgwMjExX0JBTkRTO1xcbm5ldC9tYWM4MDIxMS90eC5jOjI4ODI6XFx0XFx0fSBlbHNlIGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3R4LmMtMjg4My1cXHRcXHRcXHRyZXQgPSAtRU5PVENPTk47XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz0zMDc4PXZvaWQgaWVlZTgwMjExX2NoZWNrX2Zhc3RfeG1pdChzdHJ1Y3Qgc3RhX2luZm8gKnN0YSlcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jLTMxMjctXFxubmV0L21hYzgwMjExL3R4LmM6MzEyODpcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTMxMjktXFx0XFx0cmN1X3JlYWRfbG9jaygpO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtMzIwNi1cXHRcXHRidWlsZC5kYV9vZmZzID0gb2Zmc2V0b2Yoc3RydWN0IGllZWU4MDIxMV9oZHIsIGFkZHIxKTtcXG5uZXQvbWFjODAyMTEvdHguYzozMjA3OlxcdFxcdGlmIChzdGEtXFx1MDAzZXN0YS5tbG8gfHwgIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTMyMDgtXFx0XFx0XFx0bWVtY3B5KGhkci1cXHUwMDNlYWRkcjIsIHNkYXRhLVxcdTAwM2V2aWYuYWRkciwgRVRIX0FMRU4pO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NDU2MT1uZXRkZXZfdHhfdCBpZWVlODAyMTFfc3ViaWZfc3RhcnRfeG1pdChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDU4My1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIE5VTEwpO1xcbm5ldC9tYWM4MDIxMS90eC5jOjQ1ODQ6XFx0fSBlbHNlIGlmIChpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikgXFx1MDAyNlxcdTAwMjZcXG5uZXQvbWFjODAyMTEvdHguYy00NTg1LVxcdFxcdCAgICgoc2RhdGEtXFx1MDAzZXZpZi50eXBlID09IE5MODAyMTFfSUZUWVBFX0FQIFxcdTAwMjZcXHUwMDI2XFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYz00NzUxPXN0YXRpYyBib29sIGllZWU4MDIxMV9jaGVja19tY2FzdF9vZmZsb2FkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDc1NS1cXG5uZXQvbWFjODAyMTEvdHguYzo0NzU2OlxcdGlmICgoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpIFxcdTAwMjZcXHUwMDI2XFxubmV0L21hYzgwMjExL3R4LmMtNDc1Ny1cXHQgICAgIChzZGF0YS1cXHUwMDNldmlmLnR5cGUgPT0gTkw4MDIxMV9JRlRZUEVfQVAgXFx1MDAyNlxcdTAwMjZcXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTQ5MTE9c3RhdGljIGJvb2wgaWVlZTgwMjExX3R4X3BlbmRpbmdfc2tiKHN0cnVjdCBpZWVlODAyMTFfbG9jYWwgKmxvY2FsLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNDkyNC1cXHRcXHQvKiB1cGRhdGUgYmFuZCBvbmx5IGZvciBub24tTUxEICovXFxubmV0L21hYzgwMjExL3R4LmM6NDkyNTpcXHRcXHRpZiAoIWllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS90eC5jLTQ5MjYtXFx0XFx0XFx0Y2hhbmN0eF9jb25mID1cXG4tLVxcbm5ldC9tYWM4MDIxMS90eC5jPTYzOTY9dm9pZCBfX2llZWU4MDIxMV90eF9za2JfdGlkX2JhbmQoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdHguYy02NDEzLVxcbm5ldC9tYWM4MDIxMS90eC5jOjY0MTQ6XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy02NDE1LVxcdFxcdGxpbmsgPSAwO1xcbi0tXFxubmV0L21hYzgwMjExL3R4LmM9NjQ1Mz12b2lkIGllZWU4MDIxMV90eF9za2JfdGlkKHN0cnVjdCBpZWVlODAyMTFfc3ViX2lmX2RhdGEgKnNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3R4LmMtNjQ2Mi1cXHRcXHRiYW5kID0gTlVNX05MODAyMTFfQkFORFM7XFxubmV0L21hYzgwMjExL3R4LmM6NjQ2MzpcXHR9IGVsc2UgaWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpIHtcXG5uZXQvbWFjODAyMTEvdHguYy02NDY0LVxcdFxcdFdBUk5fT04obGlua19pZCBcXHUwMDNlPSAwKTtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM9MTEzND12b2lkIGllZWU4MDIxMV9zZW5kX2F1dGgoc3RydWN0IGllZWU4MDIxMV9zdWJfaWZfZGF0YSAqc2RhdGEsXFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jLTExNDItXFx0c3RydWN0IGllZWU4MDIxMV9tZ210ICptZ210O1xcbm5ldC9tYWM4MDIxMS91dGlsLmM6MTE0MzpcXHRib29sIG11bHRpX2xpbmsgPSBpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZik7XFxubmV0L21hYzgwMjExL3V0aWwuYy0xMTQ0LVxcdHN0cnVjdCB7XFxuLS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jPTE4ODI9aW50IGllZWU4MDIxMV9yZWNvbmZpZyhzdHJ1Y3QgaWVlZTgwMjExX2xvY2FsICpsb2NhbClcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3MS1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIwNzI6XFx0XFx0aWYgKGllZWU4MDIxMV92aWZfaXNfbWxkKFxcdTAwMjZzZGF0YS1cXHUwMDNldmlmKSkge1xcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjA3My1cXHRcXHRcXHRzdHJ1Y3QgaWVlZTgwMjExX2Jzc19jb25mICpvbGRbSUVFRTgwMjExX01MRF9NQVhfTlVNX0xJTktTXSA9IHtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEyOC1cXG5uZXQvbWFjODAyMTEvdXRpbC5jOjIxMjk6XFx0XFx0aWYgKCFpZWVlODAyMTFfdmlmX2lzX21sZChcXHUwMDI2c2RhdGEtXFx1MDAzZXZpZikpXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTMwLVxcdFxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfSURMRTtcXG4tLVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjEzMy1cXHRcXHRjYXNlIE5MODAyMTFfSUZUWVBFX1NUQVRJT046XFxubmV0L21hYzgwMjExL3V0aWwuYzoyMTM0OlxcdFxcdFxcdGlmICghaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTM1LVxcdFxcdFxcdFxcdGNoYW5nZWQgfD0gQlNTX0NIQU5HRURfQVNTT0MgfFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTcxLVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE3MjpcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKVxcbm5ldC9tYWM4MDIxMS91dGlsLmMtMjE3My1cXHRcXHRcXHRcXHRpZWVlODAyMTFfdmlmX2NmZ19jaGFuZ2Vfbm90aWZ5KHNkYXRhLFxcbi0tXFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTg1LVxcbm5ldC9tYWM4MDIxMS91dGlsLmM6MjE4NjpcXHRcXHRcXHRcXHRpZiAoaWVlZTgwMjExX3ZpZl9pc19tbGQoXFx1MDAyNnNkYXRhLVxcdTAwM2V2aWYpKSB7XFxubmV0L21hYzgwMjExL3V0aWwuYy0yMTg3LVxcdFxcdFxcdFxcdFxcdGllZWU4MDIxMV9yZWNvbmZpZ19hcF9saW5rcyhsb2NhbCxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjFUMTE6MzM6MTguOTUyMTcyNDhaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTc4OTYwNzk4NDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0J3MgaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKkZ1enppbmcgdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgRnVuY3Rpb24gaW4gTUFDODAyMTEqKlxuXG5SaWdodCwgc28gd2UncmUgbG9va2luZyBhdCB0aGUgTUFDODAyMTEgY29uZmlndXJhdGlvbi4gU3BlY2lmaWNhbGx5LCBteSBhdHRlbnRpb24gaXMgZHJhd24gdG8gdGhlIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgZnVuY3Rpb24uIEdpdmVuIHRoYXQgaXQncyBoYW5kbGluZyBhdXRoZW50aWNhdGlvbiBmbGFncywgdGhhdCBpbW1lZGlhdGVseSBzY3JlYW1zIFwicG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdHlcIiB0byBtZS4gQXV0aGVudGljYXRpb24sIGVzcGVjaWFsbHkgaW4gd2lyZWxlc3MgY29udGV4dHMsIGlzIG9mdGVuIGEgcHJpbWUgdGFyZ2V0IGZvciBmdXp6aW5nLiBNaXNjb25maWd1cmF0aW9ucywgdW5leHBlY3RlZCBpbnB1dHMuLi4gdGhlc2UgY2FuIGFsbCBsZWFkIHRvIGV4cGxvaXRhYmxlIGZsYXdzLlxuXG5UaGVyZWZvcmUsIHRoaXMgZnVuY3Rpb24gaXMgZGVmaW5pdGVseSB3b3J0aCBhIGNsb3NlciBsb29rIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLiBXZSBuZWVkIHRvIGZvcm11bGF0ZSBhIHRlc3Qgc3RyYXRlZ3ksIGRlc2lnbiByZWxldmFudCBmdXp6IGlucHV0cywgYW5kIGNhcmVmdWxseSBvYnNlcnZlIHRoZSByZXN1bHRzLiBUaGUgZ29hbCBpcyB0byBpZGVudGlmeSBob3cgZmxhZyBzZXR0aW5ncyBhcmUgaGFuZGxlZCBhbmQgbG9vayBmb3IgYW55IGludGVyZXN0aW5nIGJlaGF2aW9ycyBvciBwb3RlbnRpYWwgZWRnZSBjYXNlcy4gV2UnbGwgbmVlZCB0byBjYXJlZnVsbHkgY3JhZnQgdGhlIHRlc3Qgc3VpdGUsIHNldHRpbmcgdXAgdGhlIG5lY2Vzc2FyeSByZXN1bHRzIGdhdGhlcmluZyBpbmZyYXN0cnVjdHVyZS4gVGhpcyBoYXMgdGhlIHBvdGVudGlhbCB0byBleHBvc2Ugc29tZSBpbnRlcmVzdGluZyBpc3N1ZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTI2LCJPdXRwdXRUb2tlbnMiOjEzMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTIxVDExOjMzOjM2Ljg0ODI1NjAxMVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MzU3ODAwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTUFDODAyMTFcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJzdGFfYXBwbHlfYXV0aF9mbGFnc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIGBzdGFfYXBwbHlfYXV0aF9mbGFnc2AgaW4gbWFjODAyMTEgdG8gYWRkIGNoZWNrcyBmb3IgTUxEIChNdWx0aS1MaW5rIERldmljZSkgYW5kIGNoYW5uZWwgY29udGV4dCBjb25maWd1cmF0aW9uIGJlZm9yZSBpbml0aWFsaXppbmcgcmF0ZSBjb250cm9sLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbWFjODAyMTEgbG9naWMsIHJlYWNoYWJsZSB2aWEgbmw4MDIxMSBhbmQgbWFjODAyMTFfaHdzaW0sIGFuZCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk1BQzgwMjExXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwic3RhX2FwcGx5X2F1dGhfZmxhZ3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyBgc3RhX2FwcGx5X2F1dGhfZmxhZ3NgIGluIG1hYzgwMjExIHRvIGFkZCBjaGVja3MgZm9yIE1MRCAoTXVsdGktTGluayBEZXZpY2UpIGFuZCBjaGFubmVsIGNvbnRleHQgY29uZmlndXJhdGlvbiBiZWZvcmUgaW5pdGlhbGl6aW5nIHJhdGUgY29udHJvbC4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHRoZSBjb3JlIG1hYzgwMjExIGxvZ2ljLCByZWFjaGFibGUgdmlhIG5sODAyMTEgYW5kIG1hYzgwMjExX2h3c2ltLCBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[1] Phase: Succeeded StartedAt: 2026-07-21 11:33:49 +0000 UTC FinishedAt: 2026-07-21 11:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-21 11:33:49 +0000 UTC FinishedAt: 2026-07-21 11:33:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2] Phase: Succeeded StartedAt: 2026-07-21 11:33:49 +0000 UTC FinishedAt: 2026-07-21 15:52:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-21 11:33:49 +0000 UTC FinishedAt: 2026-07-21 15:52:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-21 11:33:49 +0000 UTC FinishedAt: 2026-07-21 11:34:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-21 11:33:49 +0000 UTC FinishedAt: 2026-07-21 11:33:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt8f4m/series-workflowt8f4m-convert-artifact-307894114/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-21 11:34:10 +0000 UTC FinishedAt: 2026-07-21 12:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-21 11:34:10 +0000 UTC FinishedAt: 2026-07-21 12:24:27 +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:*a12c5f3c-5af0-485b-b373-900b4c4dc2ed,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-workflowt8f4m/series-workflowt8f4m-convert-artifact-307894114/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": "7de5dcfa-95dc-42e8-9afc-91116ea23216", "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-workflowt8f4m/series-workflowt8f4m-build-action-566587168/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-21 11:34:10 +0000 UTC FinishedAt: 2026-07-21 12:24:17 +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:*a12c5f3c-5af0-485b-b373-900b4c4dc2ed,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-workflowt8f4m/series-workflowt8f4m-convert-artifact-307894114/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": "7de5dcfa-95dc-42e8-9afc-91116ea23216", "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-workflowt8f4m/series-workflowt8f4m-build-action-566587168/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-21 12:24:27 +0000 UTC FinishedAt: 2026-07-21 12:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-21 12:24:27 +0000 UTC FinishedAt: 2026-07-21 12:24:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-21 12:24:27 +0000 UTC FinishedAt: 2026-07-21 12:24:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-21 12:24:27 +0000 UTC FinishedAt: 2026-07-21 12:24:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowt8f4m/series-workflowt8f4m-convert-artifact-3117768125/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-21 12:24:37 +0000 UTC FinishedAt: 2026-07-21 12:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-21 12:24:37 +0000 UTC FinishedAt: 2026-07-21 12:26:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7de5dcfa-95dc-42e8-9afc-91116ea23216,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-workflowt8f4m/series-workflowt8f4m-build-action-566587168/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-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-21 12:26:44 +0000 UTC FinishedAt: 2026-07-21 12:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-21 12:26:44 +0000 UTC FinishedAt: 2026-07-21 12:26:44 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-21 12:26:44 +0000 UTC FinishedAt: 2026-07-21 12:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-21 12:26:44 +0000 UTC FinishedAt: 2026-07-21 12:47:20 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a12c5f3c-5af0-485b-b373-900b4c4dc2ed,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-workflowt8f4m/series-workflowt8f4m-convert-artifact-3117768125/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": "3991b64a-baa8-49f1-b1a7-24aa66b3a30d", "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-workflowt8f4m/series-workflowt8f4m-build-action-245628185/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-21 12:26:44 +0000 UTC FinishedAt: 2026-07-21 12:47:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a12c5f3c-5af0-485b-b373-900b4c4dc2ed,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-workflowt8f4m/series-workflowt8f4m-convert-artifact-3117768125/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": "3991b64a-baa8-49f1-b1a7-24aa66b3a30d", "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-workflowt8f4m/series-workflowt8f4m-build-action-245628185/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-21 12:47:20 +0000 UTC FinishedAt: 2026-07-21 12:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-21 12:47:20 +0000 UTC FinishedAt: 2026-07-21 12:47:20 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-21 12:47:20 +0000 UTC FinishedAt: 2026-07-21 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-21 12:47:20 +0000 UTC FinishedAt: 2026-07-21 12:49:24 +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:*3991b64a-baa8-49f1-b1a7-24aa66b3a30d,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-workflowt8f4m/series-workflowt8f4m-build-action-245628185/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-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 15:52:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 15:52:09 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"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:*7de5dcfa-95dc-42e8-9afc-91116ea23216,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3991b64a-baa8-49f1-b1a7-24aa66b3a30d,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-workflowt8f4m/series-workflowt8f4m-build-action-566587168/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-workflowt8f4m/series-workflowt8f4m-build-action-245628185/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 12:49:43 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 12:49:38 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"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-workflowt8f4m/series-workflowt8f4m-convert-artifact-2390305346/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-21 12:49:33 +0000 UTC FinishedAt: 2026-07-21 12:49:33 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-21 12:49:43 +0000 UTC FinishedAt: 2026-07-21 15:52:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowt8f4m[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["sta_apply_auth_flags"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"dc59e4fea9d83f03bad6bddf3fa2e52491777482","config_name":"upstream-apparmor-kasan.config","enable_configs":["MAC80211"],"series_id":"df2123bf-e2c2-4236-8ad1-2b7d3fbfc144","tree_name":"bpf-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/bpf/bpf-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-21 12:49:43 +0000 UTC FinishedAt: 2026-07-21 15:51:55 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7de5dcfa-95dc-42e8-9afc-91116ea23216,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3991b64a-baa8-49f1-b1a7-24aa66b3a30d,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-workflowt8f4m/series-workflowt8f4m-build-action-566587168/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-workflowt8f4m/series-workflowt8f4m-build-action-245628185/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-workflowt8f4m/series-workflowt8f4m-convert-artifact-2390305346/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,}