Name: series-workflownlgqw Phase: Succeeded StartedAt: 2026-08-18 09:50:00 +0000 UTC FinishedAt: 2026-08-18 14:20:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[0] Phase: Succeeded StartedAt: 2026-08-18 09:50:00 +0000 UTC FinishedAt: 2026-08-18 10:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[0].run-triage Phase: Succeeded StartedAt: 2026-08-18 09:50:00 +0000 UTC FinishedAt: 2026-08-18 10:37:11 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET6_AH", "INET_ESPINTCP", "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET6_AH", "INET_ESPINTCP", "XFRM_USER" ], "series_id": "1356536f-d75c-4668-aaa8-2262a2ec1354" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ah6_input", "ah6_output", "xfrm6_input_addr", "espintcp_rcv", "espintcp_close", "xfrm_output", "xfrm_add_sa", "nat_keepalive_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybTZfaW5wdXRfYWRkciYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9yY3YmIzM0OywKICAgICYjMzQ7ZXNwaW50Y3BfY2xvc2UmIzM0OywKICAgICYjMzQ7eGZybV9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybV9hZGRfc2EmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIChpbiBpcHY2X3JlYXJyYW5nZV9ydGhkciBhbmQgeGZybTZfaW5wdXRfYWRkciksIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgKGluIGhhbmRsZV9lc3ApLCB1c2UtYWZ0ZXItZnJlZS9jb25jdXJyZW5jeSBpc3N1ZXMgKGluIGVzcGludGNwX2Nsb3NlIGFuZCB4ZnJtX25hdF9rZWVwYWxpdmUpLCBkb3VibGUgZnJlZSAoaW4geGZybV9kZXZfZGlyZWN0X291dHB1dCksIGFuZCBsb2dpYyBlcnJvcnMgKGluIHhmcm1fc3RhdGVfY29uc3RydWN0KS4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlc2UgY2hhbmdlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnRhaW5zIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBJdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYW5kIHByb3BhZ2F0ZXMgdGhlIGVycm9yLCBmaXhlcyBhIGRlcHRoIGNoZWNrIGluIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYWRkcyBhIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgYHNrYi1cdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTQwNjNlMmNjMGMxOTBlNTBhMWM5ZDUzM2NjZDk5MDE4YTljNzZlZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEwOjM0OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmNcbmluZGV4IDc2ZjdhMmRlOTEwOGUuLmM5NmY3ZTBkMGE0ODEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9haDYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmNcbkBAIC0yMzIsMjYgJiM0MzsyMzIsMjggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0UmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyXG4gICpcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXG4gICpcdFNlZSBBcHBlbmRpeCBBMiBvZiBSRkMgMjQwMiBmb3IgZGV0YWlscy5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2ZcbiYjNDM7ICogYWRkcmVzc2VzIGRlc2NyaWJlZCBieSBoZHJsZW4uXG4gICovXG4tc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiYjNDM7c3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIHtcbi1cdGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHJzO1xuIFx0c3RydWN0IGluNl9hZGRyIGZpbmFsX2FkZHI7XG4gXG4gXHRzZWdtZW50c19sZWZ0ID0gcnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdDtcbiBcdGlmIChzZWdtZW50c19sZWZ0ID09IDApXG4tXHRcdHJldHVybjtcbi1cdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBUaGUgdmFsdWUgb2YgcnRoZHItXHUwMDNlaGRybGVuIGhhcyBiZWVuIHZlcmlmaWVkIGVpdGhlciBieSB0aGUgc3lzdGVtXG4tXHQgKiBjYWxsIGlmIGl0IGlzIGxvY2FsbHkgZ2VuZXJhdGVkLCBvciBieSBpcHY2X3J0aGRyX3JjdigpIGZvciBpbmNvbWluZ1xuLVx0ICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzXG4tXHQgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VnbWVudHNfbGVmdC5cbi1cdCAqXG4tXHQgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuXG4mIzQzO1x0LyogUmF3IGxvY2FsbHkgZ2VuZXJhdGVkIHBhY2tldHMgY2FuIHJlYWNoIEFINiB3aXRob3V0IHRoZSBpbnZhcmlhbnRcbiYjNDM7XHQgKiByZXF1aXJlZCBieSB0aGUgcnQwLXN0eWxlIGFkZHJlc3MgcmVhcnJhbmdlbWVudCBiZWxvdy5cbiBcdCAqL1xuIFx0c2VnbWVudHMgPSBydGhkci1cdTAwM2VoZHJsZW4gXHUwMDNlXHUwMDNlIDE7XG4mIzQzO1x0aWYgKHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuIFxuIFx0YWRkcnMgPSAoKHN0cnVjdCBydDBfaGRyICopcnRoZHIpLVx1MDAzZWFkZHI7XG4gXHRmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTtcbkBAIC0yNjEsNiAmIzQzOzI2Myw4IEBAIHN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4gXG4gXHRhZGRyc1swXSA9IGlwaC1cdTAwM2VkYWRkcjtcbiBcdGlwaC1cdTAwM2VkYWRkciA9IGZpbmFsX2FkZHI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5AQCAtMjczLDYgJiM0MzsyNzcsNyBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHR9IGV4dGhkciA9IHsgLmlwaCA9IGlwaCB9O1xuIFx0Y2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47XG4gXHRpbnQgbmV4dGhkciA9IGlwaC1cdTAwM2VuZXh0aGRyO1xuJiM0MztcdGludCBlcnI7XG4gXG4gXHRleHRoZHIuaXBoJiM0MzsmIzQzOztcbiBcbkBAIC0yOTIsNyAmIzQzOzI5Nyw5IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBORVhUSERSX1JPVVRJTkc6XG4tXHRcdFx0aXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbiYjNDM7XHRcdFx0ZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG5pbmRleCA4OWQwNDQzYjUzMDczLi4wN2VkZWYyNTg5ODQ0IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuQEAgLTI0Nyw3ICYjNDM7MjQ3LDcgQEAgaW50IHhmcm02X2lucHV0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgeGZybV9hZGRyZXNzX3QgKmRhZGRyLFxuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG4gXG4tXHRpZiAoMSAmIzQzOyBzcC1cdTAwM2VsZW4gPT0gWEZSTV9NQVhfREVQVEgpIHtcbiYjNDM7XHRpZiAoc3AtXHUwMDNlbGVuIFx1MDAzZT0gWEZSTV9NQVhfREVQVEgpIHtcbiBcdFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOQlVGRkVSRVJST1IpO1xuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0vZXNwaW50Y3AuYyBiL25ldC94ZnJtL2VzcGludGNwLmNcbmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS9lc3BpbnRjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS9lc3BpbnRjcC5jXG5AQCAtMzcsNiAmIzQzOzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0c2tiLVx1MDAzZWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHNvY2tfbmV0KHNrKSwgc2tiLVx1MDAzZXNrYl9paWYpO1xuJiM0MztcdGlmICghc2tiLVx1MDAzZWRldikge1xuJiM0MztcdFx0WEZSTV9JTkNfU1RBVFMoc29ja19uZXQoc2spLCBMSU5VWF9NSUJfWEZSTUlORVJST1IpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4gXHRpZiAoc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuQEAgLTQ1LDYgJiM0Mzs1MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxuICNlbmRpZlxuIFx0XHR4ZnJtNF9yY3ZfZW5jYXAoc2tiLCBJUFBST1RPX0VTUCwgMCwgVENQX0VOQ0FQX0VTUElOVENQKTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztvdXQ6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG5AQCAtNTE1LDcgJiM0Mzs1MjEsOCBAQCBzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcbiBcdHN0cnBfc3RvcChcdTAwMjZjdHgtXHUwMDNlc3RycCk7XG4gXG4gXHRzay1cdTAwM2Vza19wcm90ID0gXHUwMDI2dGNwX3Byb3Q7XG4tXHRiYXJyaWVyKCk7XG4mIzQzO1xuJiM0MztcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuIFx0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2Y3R4LVx1MDAzZXdvcmspO1xuIFx0c3RycF9kb25lKFx1MDAyNmN0eC1cdTAwM2VzdHJwKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCBlYjFiNmY2NzczOWUxLi41Y2Q2ZDQzMTY0ZGJjIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTU1LDI1ICYjNDM7MTU1LDUwIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gXHR9XG4gfVxuIFxuJiM0MztlbnVtIHtcbiYjNDM7XHROQVRfS0VFUEFMSVZFX0JBVENIX1NJWkUgPSAxNixcbiYjNDM7XHROQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwgPSAxLFxuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4mIzQzO1x0c3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07XG4mIzQzO1x0dW5zaWduZWQgaW50IG5yO1xuIFx0dGltZTY0X3QgbmV4dF9ydW47XG4gXHR0aW1lNjRfdCBub3c7XG4gfTtcbiBcbi1zdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuJiM0MztzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiB7XG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xuJiM0MztcbiYjNDM7XHRpZiAoIVJFQURfT05DRSh4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdGlmIChjdHgtXHUwMDNlbnIgPT0gQVJSQVlfU0laRShjdHgtXHUwMDNlYmF0Y2gpKVxuJiM0MztcdFx0cmV0dXJuIE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTDtcbiYjNDM7XG4mIzQzO1x0eGZybV9zdGF0ZV9ob2xkKHgpO1xuJiM0MztcdGN0eC1cdTAwM2ViYXRjaFtjdHgtXHUwMDNlbnImIzQzOyYjNDM7XSA9IHg7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4mIzQzO1x0XHRcdFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcbiYjNDM7e1xuIFx0Ym9vbCBzZW5kX2tlZXBhbGl2ZSA9IGZhbHNlO1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmUga2E7XG4tXHR0aW1lNjRfdCBuZXh0X3J1bjtcbiYjNDM7XHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XG4gXHR1MzIgaW50ZXJ2YWw7XG4gXHRpbnQgZGVsdGE7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNngtXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmICh4LVx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiBcdGludGVydmFsID0geC1cdTAwM2VuYXRfa2VlcGFsaXZlX2ludGVydmFsO1xuIFx0aWYgKCFpbnRlcnZhbClcbi1cdFx0cmV0dXJuIDA7XG4tXG4tXHRzcGluX2xvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTg3LDE0ICYjNDM7MjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRcdHNlbmRfa2VlcGFsaXZlID0gdHJ1ZTtcbiBcdH1cbiBcbi1cdHNwaW5fdW5sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4mIzQzO291dDpcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuIFxuIFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxuIFx0XHRuYXRfa2VlcGFsaXZlX3NlbmQoXHUwMDI2a2EpO1xuIFxuLVx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbiYjNDM7XHRpZiAobmV4dF9ydW4gXHUwMDI2XHUwMDI2ICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pKVxuIFx0XHRjdHgtXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcbi1cdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTIwMiwxMyAmIzQzOzIyNywyMyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xuIFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuIFx0c3RydWN0IG5ldCAqbmV0O1xuJiM0MztcdGludCBlcnIsIGk7XG4gXG4gXHRjdHgubmV4dF9ydW4gPSAwO1xuIFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcbiBcbiBcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbi1cdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG4mIzQzO1x0ZG8ge1xuJiM0MztcdFx0Y3R4Lm5yID0gMDtcbiYjNDM7XHRcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0LCBcdTAwMjZjdHgpO1xuJiM0MztcdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY3R4Lm5yOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgXHUwMDI2Y3R4KTtcbiYjNDM7XHRcdFx0eGZybV9zdGF0ZV9wdXQoY3R4LmJhdGNoW2ldKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztcdH0gd2hpbGUgKGVyciA9PSBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwpO1xuIFx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXHUwMDI2d2FsaywgbmV0KTtcbiBcdGlmIChjdHgubmV4dF9ydW4pXG4gXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9vdXRwdXQuYyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmNcbmluZGV4IGNjMzVjMmZjYmJlMDkuLmUzMDViYTMyZTM1NmIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX291dHB1dC5jXG5AQCAtNjM2LDEwICYjNDM7NjM2LDggQEAgc3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4gXHRuZl9yZXNldF9jdChza2IpO1xuIFxuIFx0ZXJyID0gc2tiX2RzdChza2IpLVx1MDAzZW9wcy1cdTAwM2Vsb2NhbF9vdXQobmV0LCBzaywgc2tiKTtcbi1cdGlmICh1bmxpa2VseShlcnIgIT0gMSkpIHtcbi1cdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0aWYgKHVubGlrZWx5KGVyciAhPSAxKSlcbiBcdFx0cmV0dXJuIGVycjtcbi1cdH1cbiBcbiBcdC8qIEluIHRyYW5zcG9ydCBtb2RlLCBuZXR3b3JrIGRlc3RpbmF0aW9uIGlzXG4gXHQgKiBkaXJlY3RseSByZWFjaGFibGUsIHdoaWxlIGluIHR1bm5lbCBtb2RlLFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcbmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3VzZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV91c2VyLmNcbkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxuIFx0aWYgKChlcnIgPSBhdHRhY2hfYXV0aF90cnVuYyhcdTAwMjZ4LVx1MDAzZWFhbGcsIFx1MDAyNngtXHUwMDNlcHJvcHMuYWFsZ28sXG4gXHRcdFx0XHQgICAgIGF0dHJzW1hGUk1BX0FMR19BVVRIX1RSVU5DXSwgZXh0YWNrKSkpXG4gXHRcdGdvdG8gZXJyb3I7XG4tXHRpZiAoIXgtXHUwMDNlcHJvcHMuYWFsZ28pIHtcbiYjNDM7XHRpZiAoIXgtXHUwMDNlYWFsZykge1xuIFx0XHRpZiAoKGVyciA9IGF0dGFjaF9hdXRoKFx1MDAyNngtXHUwMDNlYWFsZywgXHUwMDI2eC1cdTAwM2Vwcm9wcy5hYWxnbyxcbiBcdFx0XHRcdCAgICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF0sIGV4dGFjaykpKVxuIFx0XHRcdGdvdG8gZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybTZfaW5wdXRfYWRkciYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9yY3YmIzM0OywKICAgICYjMzQ7ZXNwaW50Y3BfY2xvc2UmIzM0OywKICAgICYjMzQ7eGZybV9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybV9hZGRfc2EmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXHUwMDNlZGV2YCBpbiBgaGFuZGxlX2VzcGAgKEVTUCBpbiBUQ1ApLCByZXBsYWNlcyBgYmFycmllcigpYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3UoKWAgaW4gYGVzcGludGNwX2Nsb3NlYCwgcmV3cml0ZXMgdGhlIE5BVCBrZWVwYWxpdmUgd29ya3F1ZXVlIHRvIHVzZSBiYXRjaGluZyBpbiBgeGZybV9uYXRfa2VlcGFsaXZlLmNgLCByZW1vdmVzIGEgZG91YmxlLWZyZWUgaW4gYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLCBhbmQgZml4ZXMgYSBmaWVsZCBjaGVjayBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLiBUaGVzZSBhcmUgYWxsIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGFuZCBJUHNlYyBsb2dpYywgd2hpY2ggYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDozNDowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmMKaW5kZXggNzZmN2EyZGU5MTA4ZS4uYzk2ZjdlMGQwYTQ4MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmMKQEAgLTIzMiwyNiAmIzQzOzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlcwogICoJUmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyCiAgKglzbyB0aGF0IHRoZXkgYXBwZWFyIGluIHRoZSBvcmRlciB0aGV5IHdpbGwgYXQgdGhlIGZpbmFsIGRlc3RpbmF0aW9uLgogICoJU2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2YKJiM0MzsgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi4KICAqLwotc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKJiM0MztzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpCiB7Ci0JaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0OwomIzQzOwl1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7CiAJc3RydWN0IGluNl9hZGRyICphZGRyczsKIAlzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjsKIAogCXNlZ21lbnRzX2xlZnQgPSBydGhkci0mZ3Q7c2VnbWVudHNfbGVmdDsKIAlpZiAoc2VnbWVudHNfbGVmdCA9PSAwKQotCQlyZXR1cm47Ci0JcnRoZHItJmd0O3NlZ21lbnRzX2xlZnQgPSAwOwomIzQzOwkJcmV0dXJuIDA7CiAKLQkvKiBUaGUgdmFsdWUgb2YgcnRoZHItJmd0O2hkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbQotCSAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nCi0JICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzCi0JICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuCi0JICoKLQkgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuCiYjNDM7CS8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50CiYjNDM7CSAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LgogCSAqLwogCXNlZ21lbnRzID0gcnRoZHItJmd0O2hkcmxlbiAmZ3Q7Jmd0OyAxOwomIzQzOwlpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJ0aGRyLSZndDtzZWdtZW50c19sZWZ0ID0gMDsKIAogCWFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS0mZ3Q7YWRkcjsKIAlmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTsKQEAgLTI2MSw2ICYjNDM7MjYzLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKIAogCWFkZHJzWzBdID0gaXBoLSZndDtkYWRkcjsKIAlpcGgtJmd0O2RhZGRyID0gZmluYWxfYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcikKQEAgLTI3Myw2ICYjNDM7Mjc3LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKQogCX0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07CiAJY2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47CiAJaW50IG5leHRoZHIgPSBpcGgtJmd0O25leHRoZHI7CiYjNDM7CWludCBlcnI7CiAKIAlleHRoZHIuaXBoJiM0MzsmIzQzOzsKIApAQCAtMjkyLDcgJiM0MzsyOTcsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpCiAJCQlicmVhazsKIAogCQljYXNlIE5FWFRIRFJfUk9VVElORzoKLQkJCWlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7CiYjNDM7CQkJZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jCmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfaW5wdXQuYwpAQCAtMjQ3LDcgJiM0MzsyNDcsNyBAQCBpbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsCiAJCWdvdG8gZHJvcDsKIAl9CiAKLQlpZiAoMSAmIzQzOyBzcC0mZ3Q7bGVuID09IFhGUk1fTUFYX0RFUFRIKSB7CiYjNDM7CWlmIChzcC0mZ3Q7bGVuICZndDs9IFhGUk1fTUFYX0RFUFRIKSB7CiAJCVhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1JTkJVRkZFUkVSUk9SKTsKIAkJZ290byBkcm9wOwogCX0KZGlmZiAtLWdpdCBhL25ldC94ZnJtL2VzcGludGNwLmMgYi9uZXQveGZybS9lc3BpbnRjcC5jCmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL2VzcGludGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0vZXNwaW50Y3AuYwpAQCAtMzcsNiAmIzQzOzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKQogCiAJcmN1X3JlYWRfbG9jaygpOwogCXNrYi0mZ3Q7ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBza2ItJmd0O3NrYl9paWYpOwomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCiAJaWYgKHNrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpCkBAIC00NSw2ICYjNDM7NTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaykKICNlbmRpZgogCQl4ZnJtNF9yY3ZfZW5jYXAoc2tiLCBJUFBST1RPX0VTUCwgMCwgVENQX0VOQ0FQX0VTUElOVENQKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MztvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKQEAgLTUxNSw3ICYjNDM7NTIxLDggQEAgc3RhdGljIHZvaWQgZXNwaW50Y3BfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiAJc3RycF9zdG9wKCZhbXA7Y3R4LSZndDtzdHJwKTsKIAogCXNrLSZndDtza19wcm90ID0gJmFtcDt0Y3BfcHJvdDsKLQliYXJyaWVyKCk7CiYjNDM7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwogCiAJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtjdHgtJmd0O3dvcmspOwogCXN0cnBfZG9uZSgmYW1wO2N0eC0mZ3Q7c3RycCk7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IGViMWI2ZjY3NzM5ZTEuLjVjZDZkNDMxNjRkYmMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCkBAIC0xNTUsMjUgJiM0MzsxNTUsNTAgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAl9CiB9CiAKJiM0MztlbnVtIHsKJiM0MzsJTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFID0gMTYsCiYjNDM7CU5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCA9IDEsCiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHsKJiM0MzsJc3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07CiYjNDM7CXVuc2lnbmVkIGludCBucjsKIAl0aW1lNjRfdCBuZXh0X3J1bjsKIAl0aW1lNjRfdCBub3c7CiB9OwogCi1zdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQomIzQzO3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogewogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7CiYjNDM7CiYjNDM7CWlmICghUkVBRF9PTkNFKHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWlmIChjdHgtJmd0O25yID09IEFSUkFZX1NJWkUoY3R4LSZndDtiYXRjaCkpCiYjNDM7CQlyZXR1cm4gTkFUX0tFRVBBTElWRV9CQVRDSF9GVUxMOwomIzQzOwomIzQzOwl4ZnJtX3N0YXRlX2hvbGQoeCk7CiYjNDM7CWN0eC0mZ3Q7YmF0Y2hbY3R4LSZndDtuciYjNDM7JiM0MztdID0geDsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpCiYjNDM7ewogCWJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTsKIAlzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTsKLQl0aW1lNjRfdCBuZXh0X3J1bjsKJiM0MzsJdGltZTY0X3QgbmV4dF9ydW4gPSAwOwogCXUzMiBpbnRlcnZhbDsKIAlpbnQgZGVsdGE7CiAKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7eC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmICh4LSZndDtrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKIAlpbnRlcnZhbCA9IHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7CiAJaWYgKCFpbnRlcnZhbCkKLQkJcmV0dXJuIDA7Ci0KLQlzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MzsJCWdvdG8gb3V0OwogCiAJZGVsdGEgPSAoaW50KShjdHgtJmd0O25vdyAtIHgtJmd0O2xhc3R1c2VkKTsKIAlpZiAoZGVsdGEgJmx0OyBpbnRlcnZhbCkgewpAQCAtMTg3LDE0ICYjNDM7MjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiAJCXNlbmRfa2VlcGFsaXZlID0gdHJ1ZTsKIAl9CiAKLQlzcGluX3VubG9jaygmYW1wO3gtJmd0O2xvY2spOwomIzQzO291dDoKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt4LSZndDtsb2NrKTsKIAogCWlmIChzZW5kX2tlZXBhbGl2ZSkKIAkJbmF0X2tlZXBhbGl2ZV9zZW5kKCZhbXA7a2EpOwogCi0JaWYgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikKJiM0MzsJaWYgKG5leHRfcnVuICZhbXA7JmFtcDsgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikpCiAJCWN0eC0mZ3Q7bmV4dF9ydW4gPSBuZXh0X3J1bjsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTIwMiwxMyAmIzQzOzIyNywyMyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDsKIAlzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7CiAJc3RydWN0IG5ldCAqbmV0OwomIzQzOwlpbnQgZXJyLCBpOwogCiAJY3R4Lm5leHRfcnVuID0gMDsKIAljdHgubm93ID0ga3RpbWVfZ2V0X3JlYWxfc2Vjb25kcygpOwogCiAJbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsIHhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLndvcmspOwogCXhmcm1fc3RhdGVfd2Fsa19pbml0KCZhbXA7d2FsaywgSVBQUk9UT19FU1AsIE5VTEwpOwotCXhmcm1fc3RhdGVfd2FsayhuZXQsICZhbXA7d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSwgJmFtcDtjdHgpOwomIzQzOwlkbyB7CiYjNDM7CQljdHgubnIgPSAwOwomIzQzOwkJZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgJmFtcDt3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgJmFtcDtjdHgpOwomIzQzOwkJbG9jYWxfYmhfZGlzYWJsZSgpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IGN0eC5ucjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgJmFtcDtjdHgpOwomIzQzOwkJCXhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7CiYjNDM7CQl9CiYjNDM7CQlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MzsJfSB3aGlsZSAoZXJyID09IE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCk7CiAJeGZybV9zdGF0ZV93YWxrX2RvbmUoJmFtcDt3YWxrLCBuZXQpOwogCWlmIChjdHgubmV4dF9ydW4pCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO25ldC0mZ3Q7eGZybS5uYXRfa2VlcGFsaXZlX3dvcmssCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX291dHB1dC5jIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuYwppbmRleCBjYzM1YzJmY2JiZTA5Li5lMzA1YmEzMmUzNTZiIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKQEAgLTYzNiwxMCAmIzQzOzYzNiw4IEBAIHN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCW5mX3Jlc2V0X2N0KHNrYik7CiAKIAllcnIgPSBza2JfZHN0KHNrYiktJmd0O29wcy0mZ3Q7bG9jYWxfb3V0KG5ldCwgc2ssIHNrYik7Ci0JaWYgKHVubGlrZWx5KGVyciAhPSAxKSkgewotCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKIAkJcmV0dXJuIGVycjsKLQl9CiAKIAkvKiBJbiB0cmFuc3BvcnQgbW9kZSwgbmV0d29yayBkZXN0aW5hdGlvbiBpcwogCSAqIGRpcmVjdGx5IHJlYWNoYWJsZSwgd2hpbGUgaW4gdHVubmVsIG1vZGUsCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LAogCWlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoJmFtcDt4LSZndDthYWxnLCAmYW1wO3gtJmd0O3Byb3BzLmFhbGdvLAogCQkJCSAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhfVFJVTkNdLCBleHRhY2spKSkKIAkJZ290byBlcnJvcjsKLQlpZiAoIXgtJmd0O3Byb3BzLmFhbGdvKSB7CiYjNDM7CWlmICgheC0mZ3Q7YWFsZykgewogCQlpZiAoKGVyciA9IGF0dGFjaF9hdXRoKCZhbXA7eC0mZ3Q7YWFsZywgJmFtcDt4LSZndDtwcm9wcy5hYWxnbywKIAkJCQkgICAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhdLCBleHRhY2spKSkKIAkJCWdvdG8gZXJyb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggU2VyaWVzIGluIHRoZSBOZXR3b3JrIFN0YWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2ggc2VyaWVzLiBJdCBsb29rcyBsaWtlIHdlJiMzOTt2ZSBnb3QgYSBzZXQgb2YgbW9kaWZpY2F0aW9ucyB0b3VjaGluZyBzZXZlcmFsIGtleSBmaWxlcyB3aXRoaW4gYG5ldC9pcHY2L2AgYW5kIGBuZXQveGZybS9gLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byByZXZpZXcgd2l0aCBhIGZ1enppbmcgc3RyYXRlZ3kgaW4gbWluZC4gVGhlIGFmZmVjdGVkIGZpbGVzIGFyZTogYGFoNi5jYCwgYHhmcm02X2lucHV0LmNgLCBgZXNwaW50Y3AuY2AsIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIGB4ZnJtX291dHB1dC5jYCwgYW5kIGB4ZnJtX3VzZXIuY2AuCgpNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgdGhhdCB0aGUgY2hhbmdlcyBhcmUgbGFyZ2VseSBmdW5jdGlvbmFsLCB3aGljaCBtZWFucyB3ZSBjYW4gbGlrZWx5IHRyaWdnZXIgYSByYW5nZSBvZiBuZXcgZXhlY3V0aW9uIHBhdGhzLgoKSGVyZSYjMzk7cyB0aGUgZ2lzdCBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZzoKCjEuICAqKmBuZXQvaXB2Ni9haDYuY2A6KiogVGhlIHJldHVybiB0eXBlIG9mIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgaGFzIGJlZW4gY2hhbmdlZCB0byBgaW50YCwgYW5kIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGZvciBhIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb24gd2l0aCBgLUVJTlZBTGAsIHdoaWNoIGlzIHRoZW4gcHJvcGFnYXRlZCBieSBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLiBUaGlzIGVycm9yIGhhbmRsaW5nIGNoYW5nZSBzaG91bGQgYmUgaW52ZXN0aWdhdGVkOyBzcGVjaWZpY2FsbHksIGlmIHRoZSBlcnJvciBjb25kaXRpb25zIGFyZSByZWFzb25hYmxlLCBnaXZlbiB0aGF0IGl0IGFwcGVhcnMgdGhlIGNhbGxlciBkaWQgbm90IGhhbmRsZSBhIGZhaWx1cmUgY2FzZS4KCjIuICAqKmBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYDoqKiBXZSYjMzk7dmUgZ290IGEgc3VidGxlIGNoYW5nZSBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIHN3aXRjaGluZyBhbiBlcXVhbGl0eSBjaGVjayB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbCBjaGVjay4gVGhpcyBjb3VsZCBiZSBhIGJvdW5kYXJ5IGNvbmRpdGlvbiBmaXggb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBpZiBub3QgaGFuZGxlZCByaWdodC4KCjMuICAqKmBuZXQveGZybS9lc3BpbnRjcC5jYDoqKiBOdWxsIGBza2ItJmd0O2RldmAgY2hlY2tzIGFkZGVkIHRvIGBoYW5kbGVfZXNwYCB0byBkcm9wIHBhY2tldHMsIGFuZCB0aGUgcmVwbGFjZW1lbnQgb2YgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAgbWFrZXMgbWUgdGhpbmsgdGhpcyBtaWdodCBiZSBhIG1lbW9yeS1zYWZldHkgaW1wcm92ZW1lbnQuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyBSQ1UgY2hhbmdlIGlzIGNvcnJlY3QuCgo0LiAgKipgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgOioqIFRoZSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBoYXMgYmVlbiByZXdyaXR0ZW4gdXNpbmcgYSBiYXRjaGluZyBhcHByb2FjaC4gRGVmaW5pdGVseSBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBidXQgYWx3YXlzIHdvcnRoIGNoZWNraW5nIGZvciByYWNlcyBpbiBiYXRjaGluZyBpbXBsZW1lbnRhdGlvbnMuCgo1LiAgKipgbmV0L3hmcm0veGZybV9vdXRwdXQuY2A6KiogVGhlIGNvbmRpdGlvbmFsIGBrZnJlZV9za2JgIGNhbGwgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YCwgd2hpY2ggbWVhbnMgdGhlIGZ1bmN0aW9uIGlzIG5vdyBhc3N1bWluZyB0aGF0IGEgZmFpbGVkIGBsb2NhbF9vdXRgIGNhbGwgd2lsbCBmcmVlIHRoZSBTS0IuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHZlcmlmeSBiZWNhdXNlIGRvdWJsZS1mcmVlcyBhcmUgY29tbW9uIGluIHRoZXNlIGNvbnRleHRzLgoKNi4gICoqYG5ldC94ZnJtL3hmcm1fdXNlci5jYDoqKiBBIHNtYWxsIGNoYW5nZSBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLCBzd2l0Y2hpbmcgYSBudWxsIGNoZWNrIGZvciBgeC0mZ3Q7cHJvcHMuYWFsZ29gIHRvIGB4LSZndDthYWxnYC4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgYnVnIGZpeC4KClRoaXMgYWxsIHBvaW50cyB0byBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgc28gdGhpcyBkZWZpbml0ZWx5IG1lcml0cyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIEdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJiMzOTtsbCBpZGVudGlmeSBzb21lIGZvY3VzIHN5bWJvbHMgYW5kIHRoZWlyIGNvbnRleHQuIFdlIGNhbiB1c2UgdGhlc2Ugc3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyLgoKVGhlIGtleSBmdW5jdGlvbnMgdGhhdCBJJiMzOTtsbCBsb29rIGF0IGluIGRldGFpbDoKCiogICBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgIChzaW5jZSB0aGUgZnVuY3Rpb24gYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBpcyBjYWxsZWQgYnkgdGhlc2UgZnVuY3Rpb25zLikKKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYAoqICAgYGVzcGludGNwX2Nsb3NlYAoqICAgYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgIChvciBtYXliZSBgeGZybV9vdXRwdXRgPykKKiAgIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAKCk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgdGhlc2UgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGVpciB2aXNpYmlsaXR5LCBjYWxsc2l0ZXMsIGFuZCBjb250ZXh0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZCkgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvYWg2LmM9MjM5PXN0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbi0tXG5uZXQvaXB2Ni9haDYuYy0yNjktXG5uZXQvaXB2Ni9haDYuYzoyNzA6c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxubmV0L2lwdjYvYWg2LmMtMjcxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODE5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgSVB2NiBNdXRhYmxlIE9wdGlvbnMgQ2xlYXJpbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgd2hlcmUgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBpcyBiZWluZyB1c2VkLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBzdWJ0bGUgYnVncyByZWxhdGVkIHRvIGhvdyBtdXRhYmxlIG9wdGlvbnMgYXJlIGhhbmRsZWQuIEEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjYWxsIHNpdGVzIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaW1lIHRvIGdldCBpbnRvIGBhaDYuY2AgYW5kIGZpZ3VyZSBvdXQgd2hvJiMzOTtzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYz0yMzk9c3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTI2OS1cbm5ldC9pcHY2L2FoNi5jOjI3MDpzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5uZXQvaXB2Ni9haDYuYy0yNzEte1xuLS1cbm5ldC9pcHY2L2FoNi5jPTM1MD1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvYWg2LmMtNDE2LVx0aWYgKGV4dGxlbikge1xubmV0L2lwdjYvYWg2LmM6NDE3Olx0XHRlcnIgPSBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyh0b3BfaXBoLFxubmV0L2lwdjYvYWg2LmMtNDE4LVx0XHRcdFx0XHRcdCBleHRsZW4gLSBzaXplb2YoKmlwaF9leHQpICYjNDM7XG4tLVxubmV0L2lwdjYvYWg2LmM9NTE5PXN0YXRpYyBpbnQgYWg2X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTYxMy1cbm5ldC9pcHY2L2FoNi5jOjYxNDpcdGVyciA9IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKGlwNmgsIGhkcl9sZW4sIFhGUk1fUE9MSUNZX0lOKTtcbm5ldC9pcHY2L2FoNi5jLTYxNS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM0MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRW50cnkgUG9pbnRzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgLiBUaG9zZSBhcmUsIHdpdGhvdXQgYSBkb3VidCwgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIGludG8gdGhpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0uIFRoZXkmIzM5O3JlIHdoZXJlIHRoZSBkYXRhIGZsb3cgYmVnaW5zIGFuZCBlbmRzLCBtYWtpbmcgdGhlbSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBoeXBvdGhlc2VzIGFib3V0IHRoZSBuYXR1cmUgb2YgdGhpcyBkYXRhIGFuZCBwb3RlbnRpYWwgcHJvY2Vzc2luZyB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zLCBidXQgYmVmb3JlIGRpZ2dpbmcgZGVlcGVyLCBJIHdhbnQgdG8gY2xhcmlmeSBzb21lIGFzc3VtcHRpb25zLgoKTm93LCBteSBhdHRlbnRpb24gaGFzIHNoaWZ0ZWQgdG8gYHhmcm02X2lucHV0X2FkZHJgLiBJIHdhbnQgdG8gdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB0aG9zZSBmdW5jdGlvbnMuIEkgd2FudCB0byBjaGVjayB0byBjb25maXJtIHRoYXQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZnVuY3Rpb25zIGFyZSBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/KGludHx2b2lkKSB4ZnJtNl9pbnB1dF9hZGRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hmcm0uaD0xODQ4PWludCB4ZnJtNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTg0OTppbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsXG5pbmNsdWRlL25ldC94ZnJtLmgtMTg1MC1cdFx0ICAgICB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsIHU4IHByb3RvKTtcbi0tXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jPTIzNT1FWFBPUlRfU1lNQk9MKHhmcm02X3Jjdik7XG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jOjIzNjppbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jLTIzNy1cdFx0ICAgICB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsIHU4IHByb3RvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGVzZSBwb2ludHM6CgoqKkV4YW1pbmluZyBOZXR3b3JrIFNlY3VyaXR5IEluZnJhc3RydWN0dXJlKioKCk9rYXksIHNvIGB4ZnJtNl9pbnB1dF9hZGRyYCBpcyBleHBsaWNpdGx5IGV4cG9ydGVkLiBUaGF0IHRlbGxzIG1lIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIGFjY2Vzc2VkIGV4dGVybmFsbHksIGxpa2VseSBieSBzb21lIG90aGVyIG1vZHVsZSBvciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JrIHN0YWNrLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlaW5nIHVzZWQgYW5kLCBjcml0aWNhbGx5LCBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgZGVwZW5kZW5jaWVzIHRpZWQgdG8gaXQuIFRoZSBleHBvcnQgaXRzZWxmIGlzbiYjMzk7dCBpbmhlcmVudGx5IGEgcHJvYmxlbSwgYnV0IGl0IGRlbWFuZHMgc2NydXRpbnkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBob3cgdGhpcyBtaWdodCBwbGF5IHdpdGggdGhlIFRDUCBjb25uZWN0aW9uIGNsb3NpbmcgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGBlc3BpbnRjcF9jbG9zZWAgc3BlY2lmaWNhbGx5LiBJdCBzZWVtcyBsaWtlIHRoZSBjb25uZWN0aW9uIGlzIHRyeWluZyB0byBjbG9zZSBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBjaGVja2luZyB0aGUgY29kZSB0byBlbnN1cmUgYGVzcGludGNwX2Nsb3NlYCBpcyBjb3JyZWN0bHkgbWFuYWdpbmcgdGhlIGFkZHJlc3MuIENvdWxkIHRoZXJlIGJlIHNvbWUgaW50ZXJhY3Rpb24gd2hlcmUgYWRkcmVzcyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGB4ZnJtNl9pbnB1dF9hZGRyYCBpcyBtaXNoYW5kbGVkIGR1cmluZyBjb25uZWN0aW9uIHRlcm1pbmF0aW9uPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgb3IgaW1wcm9wZXIgZnJlZXMgaWYgdGhhdCYjMzk7cyB0aGUgcmVsZXZhbnQgY29kZSBzZWN0aW9uLiBBbnkgaW1wcm9wZXIgdXNlIHRoZXJlIGNvdWxkIGxlYWQgdG8gZXhwbG9pdGFibGUgZmxhd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/KGludHx2b2lkKSBlc3BpbnRjcF9jbG9zZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTUwMT1zdGF0aWMgdm9pZCBlc3BpbnRjcF9yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cbm5ldC94ZnJtL2VzcGludGNwLmM6NTE2OnN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxubmV0L3hmcm0vZXNwaW50Y3AuYy01MTcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgQ2xvc3VyZSBvZiBgZXNwaW50Y3BfY2xvc2VgKioKCk9rYXksIHNvIGBlc3BpbnRjcF9jbG9zZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIEkgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IGZpbmRpbmcgaXRzIHVzYWdlcy4gQmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgY29tcGlsYXRpb24gdW5pdC4gVGhlcmVmb3JlLCBhIHNpbXBsZSBnbG9iYWwgc2VhcmNoIGlzbiYjMzk7dCBnb2luZyB0byBjdXQgaXQuIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIGFuZCB1bmRlcnN0YW5kIHRoZSBzY29wZSBjb25zdHJhaW50cy4gTXkgZ29hbCBub3cgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIHBsYWNlcyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoYXQgc3RhdGljIGRlY2xhcmF0aW9uIHdoZXJlIGl0JiMzOTtzIGFjdHVhbGx5ICpjYWxsZWQqLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgbG9va2luZyBvdXRzaWRlIG9mIHRoYXQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlc3BpbnRjcF9jbG9zZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTUwMT1zdGF0aWMgdm9pZCBlc3BpbnRjcF9yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cbm5ldC94ZnJtL2VzcGludGNwLmM6NTE2OnN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxubmV0L3hmcm0vZXNwaW50Y3AuYy01MTcte1xuLS1cbm5ldC94ZnJtL2VzcGludGNwLmM9NTUyPXN0YXRpYyB2b2lkIGJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gKmVzcGludGNwX3Byb3QsXG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYy01NjAtXHRlc3BpbnRjcF9wcm90LVx1MDAzZXJlY3Ztc2cgPSBlc3BpbnRjcF9yZWN2bXNnO1xubmV0L3hmcm0vZXNwaW50Y3AuYzo1NjE6XHRlc3BpbnRjcF9wcm90LVx1MDAzZWNsb3NlID0gZXNwaW50Y3BfY2xvc2U7XG5uZXQveGZybS9lc3BpbnRjcC5jLTU2Mi1cdGVzcGludGNwX3Byb3QtXHUwMDNlcmVsZWFzZV9jYiA9IGVzcGludGNwX3JlbGVhc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipQcm90b2NvbCBDYWxsYmFjayBDb25zaWRlcmF0aW9uKioKCkFscmlnaHQsIHRoaXMgaXMgYSBwcm90b2NvbCBjYWxsYmFjay4gVGhhdCYjMzk7cyBnb29kOyB3ZSBjYW4gd29yayB3aXRoIHRoYXQsIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBjb25zaWRlciBpbmNsdWRpbmcgaW4gdGhlIGN1cnJlbnQgd29ya2Zsb3cuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHNvbWV0aGluZy4uLiBsZXQmIzM5O3Mgc2VlLCB3aGF0IHdhcyB0aGF0IGZ1bmN0aW9uIGFnYWluPyBBaCB5ZXMsIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YC4gTmVlZCB0byBzZWUgaWYgaXQgcGxheXMgbmljZWx5IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb3cuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9vdXRwdXQuYz02MjA9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9vdXRwdXRfcmVzdW1lKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjIxLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYyMy1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyNAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBMb2NhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBxdWVzdGlvbiwgdGhlIGNvcmUgb2YgbXkgdGhpbmtpbmcgcmlnaHQgbm93LCBpczogV2hlcmUgcHJlY2lzZWx5ICppcyogaXQgY2FsbGVkPyBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIHF1ZXJ5OyBpdCYjMzk7cyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIEkmIzM5O20gYnVpbGRpbmcuIEkmIzM5O20gbm90IGxvb2tpbmcgZm9yIGEgdmFndWUgZGVzY3JpcHRvcjsgSSBuZWVkIHNwZWNpZmljaXR5LiBJcyAmIzM0O2l0JiMzNDsgYSBkZWZpbmVkIG9iamVjdCwgcHJvY2Vzcywgb3IgY29uY2VwdD8gTXkga25vd2xlZGdlIHRlbGxzIG1lIHRoYXQgdGhlIG51YW5jZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbmV4dCBhY3Rpb24uIE15IG1lbnRhbCBnZWFycyBhcmUgc3RhcnRpbmcgdG8gdHVybjsgSSYjMzk7bSBpbXBsaWNpdGx5IGFjY2Vzc2luZyBteSBleGlzdGluZyBrbm93bGVkZ2UgYmFzZSwgYXR0ZW1wdGluZyB0byBsaW5rIHRoaXMgJiMzNDtpdCYjMzQ7IHRvIGtub3duIGNvbnRleHRzLiBUaGlzIGxvY2F0aW9uIGlzIG5vdCBsaXRlcmFsLCBidXQgaXMgcmF0aGVyIGEgc2VhcmNoIGZvciBhIG1vcmUgc3BlY2lmaWMgZGVmaW5pdGlvbi4gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fZGV2X2RpcmVjdF9vdXRwdXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9vdXRwdXQuYz02MjA9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9vdXRwdXRfcmVzdW1lKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjIxLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYyMy1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTc0OD1pbnQgeGZybV9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzg1LVx0XHRpZiAoeC1cdTAwM2Vwcm9wcy5tb2RlID09IFhGUk1fTU9ERV9UVU5ORUwgXHUwMDI2XHUwMDI2ICFza2ItXHUwMDNlc2spXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc4NjpcdFx0XHRyZXR1cm4geGZybV9kZXZfZGlyZWN0X291dHB1dChzaywgeCwgc2tiKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzg1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBYRlJNIE91dHB1dCoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgeGZybV9vdXRwdXRgIGZ1bmN0aW9uIGhlcmUg4oCTIHRoYXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQsIHRoZSBlbnRyeSBnYXRlIGZvciBldmVyeXRoaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSwgaXRzIGludGVyYWN0aW9ucywgYW5kIGl0cyBjb250cm9sIGZsb3cuIEZpcnN0IHN0b3A6IGxldCYjMzk7cyBnbyBjaGVjayB0aGUgYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGJ1aWx0LiBJdCBwcm9iYWJseSBob2xkcyBzb21lIG9mIHRoZSBjcnVjaWFsIGluaXRpYWxpemF0aW9uIGRldGFpbHMgYW5kIHRoZSB1bmRlcnBpbm5pbmdzIG9mIGhvdyB0aGUgc3RhdGUgaXRzZWxmIGlzIHB1dCB0b2dldGhlci4gR290dGEgZ2V0IHRoZSBmb3VuZGF0aW9ucyBmaXJzdCwgcmlnaHQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/c3RydWN0IHhmcm1fc3RhdGUgXFwqeGZybV9zdGF0ZV9jb25zdHJ1Y3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9ODk2PXN0YXRpYyB2b2lkIHhmcm1fc21hcmtfaW5pdChzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCB4ZnJtX21hcmsgKm0pXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtOTA2LVxubmV0L3hmcm0veGZybV91c2VyLmM6OTA3OnN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxubmV0L3hmcm0veGZybV91c2VyLmMtOTA4LVx0XHRcdFx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcnNhX2luZm8gKnAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MjAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKlRoZSBDcnV4IG9mIHRoZSBNYXR0ZXI6IExvY2F0aW9uLCBMb2NhdGlvbiwgTG9jYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSBwcmVjaXNlbHkgYXJlIHdlIHNpdHVhdGluZyB0aGlzIGFyZ3VtZW50IG9yIGNvbmNlcHQ/IEJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGZvcm11bGF0ZSBhIGNvaGVyZW50IHJlc3BvbnNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb250ZXh0LiBXaGF0IGFyZSB3ZSBjYWxsaW5nIHRoaXMgc3BlY2lmaWMgaXRlbSBvciBwaGVub21lbm9uPyBUaGUgdGVybWlub2xvZ3kgdXNlZCB3aWxsIGRyYXN0aWNhbGx5IGltcGFjdCBteSBpbml0aWFsIGZyYW1pbmcgYW5kIHN1YnNlcXVlbnQgYW5hbHlzaXMuIEtub3dpbmcgdGhlIGNvcnJlY3QgJiMzNDtuYW1lJiMzNDsgaXMgY3JpdGljYWwuIEl0IGRldGVybWluZXMgbXkgaW5pdGlhbCBzZWFyY2ggcGFyYW1ldGVycyBpbiBteSBtZW50YWwgZmlsaW5nIGNhYmluZXQgb2YgcGFzdCBleHBlcmllbmNlcyBhbmQgbGVhcm5pbmdzLiBBbSBJIGRlYWxpbmcgd2l0aCBhIHN0YW5kYXJkaXplZCB0ZXJtLCBhIGNvbGxvcXVpYWxpc20sIGEgcHJvcHJpZXRhcnkgZGVzaWduYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgc3BlY2lmaWNpdHkgb2YgdGhlIGFwcGVsbGF0aW9uIGRpY3RhdGVzIG15IGNvbmZpZGVuY2UgaW4gbW92aW5nIGZvcndhcmQuIE9uY2UgSSBrbm93IHRoZSB0ZXJtIG9mIHJlZmVyZW5jZSwgdGhlIGFwcHJvcHJpYXRlIGZyYW1ld29yayBmb3IgZnVydGhlciBjb25zaWRlcmF0aW9uIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlci4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgbm9tZW5jbGF0dXJlIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3N0YXRlX2NvbnN0cnVjdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3VzZXIuYz04OTY9c3RhdGljIHZvaWQgeGZybV9zbWFya19pbml0KHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IHhmcm1fbWFyayAqbSlcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzo5MDc6c3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDgtXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyAqcCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMDM5PXN0YXRpYyBpbnQgeGZybV9hZGRfc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTA1MS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEwNTI6XHR4ID0geGZybV9zdGF0ZV9jb25zdHJ1Y3QobmV0LCBwLCBhdHRycywgXHUwMDI2ZXJyLCBleHRhY2spO1xubmV0L3hmcm0veGZybV91c2VyLmMtMTA1My1cdGlmICgheClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMDgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5BVCBLZWVwYWxpdmUgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gYHhmcm1fYWRkX3NhYCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBtYWluIGZ1bmN0aW9uIHRvIGxvb2sgYXQuIFRoYXQmIzM5O3MgdGhlIG9uZSB0aGF0IGtpY2tzIGV2ZXJ5dGhpbmcgb2ZmLCByaWdodD8gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiB0aGF0JiMzOTtzIG5hZ2dpbmcgYXQgbWUgaXMgYG5hdF9rZWVwYWxpdmVfd29ya2AuIFRoaXMgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIGJ1dCBpdCYjMzk7cyBub3QgdGhlIGluaXRpYWwgdHJpZ2dlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCAqZG9lcyouIExldCBtZSBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgaW50ZXJlc3RpbmcgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3RgLiBUaG9zZSBhcmUgbGlrZWx5IHRoZSBndXRzIG9mIGhvdyB0aGUga2VlcGFsaXZlIGlzIGhhbmRsZWQuIE5lZWQgdG8gdHJhY2UgZnJvbSBgeGZybV9hZGRfc2FgIHRvIHRob3NlIHRvIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZCkgbmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTE2Mz1zdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY5LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcwOnN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTcxLXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxODU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4Ni1cdFx0XHRcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI0LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI1OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc3OQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGFuZCBgaGFuZGxlX2VzcGAqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LiBUaGUgY2x1ZSBoZXJlIGlzIHRoZSBuYW1pbmcgLSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyB0aGUgd29ya3F1ZXVlIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCBrZWVwaW5nIE5BVCBjb25uZWN0aW9ucyBhbGl2ZS4gVGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIFdlIG5lZWQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBtYWludGVuYW5jZSBpcyBiZWluZyBoYW5kbGVkLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gaG93IHRoZSBoYW5kbGluZyBvY2N1cnMgLSBzcGVjaWZpY2FsbHksIHRvIGNoZWNrIHRoZSBgaGFuZGxlX2VzcGAgZnVuY3Rpb24gd2l0aGluIGBuZXQveGZybS9lc3BpbnRjcC5jYC4gRVNQLCBvciBFbmNhcHN1bGF0aW5nIFNlY3VyaXR5IFBheWxvYWQsIG9mdGVuIHBsYXlzIGEgcm9sZSBpbiBWUE5zIGFuZCBzZWN1cmUgY29ubmVjdGlvbnMsIGFuZCBOQVQgb2Z0ZW4gbmVlZHMgc3BlY2lmaWMgaGFuZGxpbmcgZm9yIHRoZXNlIHByb3RvY29scy4gVGhhdCBzdWdnZXN0cyBhIHBvc3NpYmxlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIE5BVCBrZWVwYWxpdmUgYW5kIGhhbmRsaW5nIG9mIHNlY3VyZSBjb25uZWN0aW9ucy4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIGhhbmRsZV9lc3AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vZXNwaW50Y3AuYz0xMj1zdGF0aWMgdm9pZCBoYW5kbGVfbm9uZXNwKHN0cnVjdCBlc3BpbnRjcF9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTI4LVxubmV0L3hmcm0vZXNwaW50Y3AuYzoyOTpzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcbm5ldC94ZnJtL2VzcGludGNwLmMtMzAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTE1MgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIGBoYW5kbGVfZXNwYCBFeGVjdXRpb24qKgoKT2theSwgc28gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IG9uIG15IG1pbmQgaXM6IHdoZXJlIHRoZSBoZWNrIGlzIGBoYW5kbGVfZXNwYCBhY3R1YWxseSBiZWluZyBpbnZva2VkPyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCB0byBmdWxseSBncmFzcCBpdHMgcm9sZSBhbmQgaW1wYWN0LiBXaXRob3V0IGtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCwgSSYjMzk7bSBlc3NlbnRpYWxseSBmbHlpbmcgYmxpbmQuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZW50cnkgcG9pbnRzLCB3aGljaCBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHRyaWdnZXJpbmcgdGhpcyByb3V0aW5lLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgYSBzcGVjaWZpYyBzeXN0ZW0gY2FsbCBwYXRoLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gS25vd2luZyB0aGUgY2FsbGVyIGlzIGZ1bmRhbWVudGFsIHRvIGludGVycHJldGluZyB0aGUgYmVoYXZpb3Igb2YgYGhhbmRsZV9lc3BgIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gYW55IGZ1cnRoZXIgYW5hbHlzaXMgSSBuZWVkIHRvIHBlcmZvcm0sIHN1Y2ggYXMgZGVidWdnaW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBpZGVudGlmeWluZyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byB0aGUgZnVuY3Rpb24mIzM5O3MgdXNlLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX2VzcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTEyPXN0YXRpYyB2b2lkIGhhbmRsZV9ub25lc3Aoc3RydWN0IGVzcGludGNwX2N0eCAqY3R4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL2VzcGludGNwLmMtMjgtXG5uZXQveGZybS9lc3BpbnRjcC5jOjI5OnN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxubmV0L3hmcm0vZXNwaW50Y3AuYy0zMC17XG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYz01Nz1zdGF0aWMgdm9pZCBlc3BpbnRjcF9yY3Yoc3RydWN0IHN0cnBhcnNlciAqc3RycCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTExMy1cdGVsc2Vcbm5ldC94ZnJtL2VzcGludGNwLmM6MTE0Olx0XHRoYW5kbGVfZXNwKHNrYiwgc3RycC1cdTAwM2Vzayk7XG5uZXQveGZybS9lc3BpbnRjcC5jLTExNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTgxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRVNQSU5UQ1AgUmVjZWl2ZSBQYXRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGVudHJ5IHBvaW50IGlzIGBlc3BpbnRjcF9yY3ZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IHN5bWJvbHMgdGhhdCBhcmUgaW52b2x2ZWQgaW4gdGhpcyBwcm9jZXNzLiBTbyBJJiMzOTttIGxvb2tpbmcgYXQ6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgdGhlIGBlc3BpbnRjcGAgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgZXNwaW50Y3BfcmN2YCBhbmQgYGVzcGludGNwX2Nsb3NlYCwgYHhmcm1fb3V0cHV0YCwgYHhmcm1fYWRkX3NhYCwgYW5kIGFsc28gYG5hdF9rZWVwYWxpdmVfd29ya2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBGb3IgYG5ldC9pcHY2L2FoNi5jYCwgSSYjMzk7bSBndWVzc2luZyBgQ09ORklHX0lORVQ2X0FIYCBpcyBhIG11c3QuIGBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYCBtb3N0IGxpa2VseSBuZWVkcyBgQ09ORklHX0lQVjZgLCBuYXR1cmFsbHkuIEZvciBgbmV0L3hmcm0vZXNwaW50Y3AuY2AsIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gaXQmIzM5O3MgYENPTkZJR19JTkVUX0VTUElOVENQYC4gQW5kIHRoZSBOQVQga2VlcGFsaXZlIGZ1bmN0aW9uIGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHByb2JhYmx5IHJlbGllcyBvbiBgQ09ORklHX1hGUk1gLiBBbmQgdGhlbiBmb3IgYG5ldC94ZnJtL3hmcm1fb3V0cHV0LmNgLCBhZ2FpbiwgSSBiZXQgaXQmIzM5O3MgYWxzbyBgQ09ORklHX1hGUk1gLiBGaW5hbGx5LCBgbmV0L3hmcm0veGZybV91c2VyLmNgLCBsaWtlbHkgbGVhbnMgb24gYENPTkZJR19YRlJNX1VTRVJgLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGVzZSBhc3N1bXB0aW9ucywgYnV0IHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBtYXBwaW5nIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lORVQ2X0FIJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTE0NT1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoxNDY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTE0Ny1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0yNT1DT05GSUdfU1lOX0NPT0tJRVM9eVxuYXJjaC9hcm0vY29uZmlncy9zcGl0el9kZWZjb25maWc6MjY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTI3LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnPTQ3PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnOjQ4OkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZy00OS1DT05GSUdfSU5FVDZfRVNQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTE1Mz1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MTU0OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTE1NS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE2OT1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTcwOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3MS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnPTU0PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc6NTU6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctNTYtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZz01Nj1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnOjU3OkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTU4LUNPTkZJR19JTkVUNl9FU1A9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6NDI6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTQzLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnPTM3PUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc6Mzg6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTM5LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz0zNj1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZzozNzpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnLTM4LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjQyOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy00My1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzozOTpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNDAtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc9Mzg9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6Mzk6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTQwLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTM3PUNPTkZJR19UQ1BfTUQ1U0lHPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnOjM4OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0zOS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZz0yND1DT05GSUdfTkVUX0lQSVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvamF6el9kZWZjb25maWc6MjU6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnLTI2LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6NDg6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy00OS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTUxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6NTI6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctNTMtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZz00Mj1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzo0MzpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZy00NC1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnPTQ0PUNPTkZJR19JTkVUX0lQQ09NUD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnOjQ1OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTQ2LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9NDU9Q09ORklHX0lORVRfSVBDT01QPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc6NDY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctNDctQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc9NDY9Q09ORklHX0lORVRfSVBDT01QPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjQ3OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZy00OC1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZz00Mz1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc6NDQ6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTQ1LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz01MD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6NTE6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz01OD1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc6NTk6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTYwLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0zMz1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzozNDpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTM1LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnPTYxPUNPTkZJR19JTkVUX0lQQ09NUD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZzo2MjpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctNjMtQ09ORklHX0lORVQ2X0lQQ09NUD1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc9NTA9Q09ORklHX1NZTl9DT09LSUVTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnOjUxOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz04MT1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6ODI6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTgzLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTEwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MTExOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTExMi1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTY1PUNPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNjY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNjctQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTE1Nj1DT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTU3OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTU4LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9NTE9Q09ORklHX0lQVjZfUFJJVkFDWT15XG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjUyOkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTUzLUNPTkZJR19JTkVUNl9FU1A9eVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzMyX2RlZmNvbmZpZz0yMz1DT05GSUdfSU5FVF9JUENPTVA9eVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnOjI0OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMjUtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnPTUwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZzo1MTpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnLTUyLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9ODM9Q09ORklHX1RDUF9NRDVTSUc9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzo4NDpDT05GSUdfSU5FVDZfQUg9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy04NS1DT05GSUdfSU5FVDZfRVNQPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9ODQ9Q09ORklHX1RDUF9NRDVTSUc9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjg1OkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctODYtQ09ORklHX0lORVQ2X0VTUD15XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxuLS1cbm5ldC9pcHY2L0tjb25maWctNDYtXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9Mjg9aXB2Ni0kKENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMKSAmIzQzOz0gaW9hbTZfaXB0dW5uZWwub1xubmV0L2lwdjYvTWFrZWZpbGUtMjktXG5uZXQvaXB2Ni9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSU5FVDZfQUgpICYjNDM7PSBhaDYub1xubmV0L2lwdjYvTWFrZWZpbGUtMzEtb2JqLSQoQ09ORklHX0lORVQ2X0VTUCkgJiM0Mzs9IGVzcDYub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQzMAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqSU5FVDZfQUggQ29uZmlybWF0aW9uKioKCkFscmlnaHQsIHRoYXQmIzM5O3MgaXQuIEFmdGVyIHJldmlld2luZyB0aGUgY29udGV4dCwgdGhlIGV2aWRlbmNlLCBhbmQgdGhlIHJlbGV2YW50IFJGQ3MsIEkmIzM5O20gY29uZmlkZW50IGluIHRoZSBjb25jbHVzaW9uLiBUaGUgdXNlIG9mIGBJTkVUNl9BSGAgaXMgdGhlIGNvcnJlY3QgYXBwcm9hY2ggaGVyZS4gTm8gZnVydGhlciBpbnZlc3RpZ2F0aW9uIGlzIG5lY2Vzc2FyeSBvbiB0aGF0IGFzcGVjdCBvZiB0aGUgZGVzaWduOyBtb3Zpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMzc9Q09ORklHX0lORVRfRVNQX09GRkxPQUQ9bVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxMzg6Q09ORklHX0lORVRfRVNQSU5UQ1A9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMzktQ09ORklHX0lORVRfSVBDT01QPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE1Mz1DT05GSUdfSU5FVF9FU1BfT0ZGTE9BRD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjE1NDpDT05GSUdfSU5FVF9FU1BJTlRDUD15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE1NS1DT05GSUdfSU5FVF9JUENPTVA9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xNTI9Q09ORklHX0lORVRfRVNQPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNTM6Q09ORklHX0lORVRfRVNQSU5UQ1A9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTE1NC1DT05GSUdfSU5FVF9JUENPTVA9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNDM9Q09ORklHX0lORVRfRVNQPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNDQ6Q09ORklHX0lORVRfRVNQSU5UQ1A9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE0NS1DT05GSUdfSU5FVF9JUENPTVA9bVxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzY5PWNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODEtXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXHRib29sIFwmIzM0O0lQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY0L2VzcDQuYz05OT1zdGF0aWMgdm9pZCBlc3Bfc3NnX3VucmVmKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCB2b2lkICp0bXAsIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgYWxyZWFkeV91bnJlZilcbi0tXG5uZXQvaXB2NC9lc3A0LmMtMTI0LVxubmV0L2lwdjQvZXNwNC5jOjEyNTojaWZkZWYgQ09ORklHX0lORVRfRVNQSU5UQ1Bcbm5ldC9pcHY0L2VzcDQuYy0xMjYtc3RhdGljIHN0cnVjdCBzb2NrICplc3BfZmluZF90Y3Bfc2soc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L2lwdjQvZXNwNC5jPTMwOT1zdGF0aWMgc3RydWN0IGlwX2VzcF9oZHIgKmVzcF9vdXRwdXRfdWRwX2VuY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvZXNwNC5jLTMzOC1cbm5ldC9pcHY0L2VzcDQuYzozMzk6I2lmZGVmIENPTkZJR19JTkVUX0VTUElOVENQXG5uZXQvaXB2NC9lc3A0LmMtMzQwLXN0YXRpYyBzdHJ1Y3QgaXBfZXNwX2hkciAqZXNwX291dHB1dF90Y3BfZW5jYXAoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4tLVxubmV0L2lwdjQvZXNwNC5jPTExMTI9c3RhdGljIGludCBlc3BfaW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY0L2VzcDQuYy0xMTUwLVx0XHRcdGJyZWFrO1xubmV0L2lwdjQvZXNwNC5jOjExNTE6I2lmZGVmIENPTkZJR19JTkVUX0VTUElOVENQXG5uZXQvaXB2NC9lc3A0LmMtMTE1Mi1cdFx0Y2FzZSBUQ1BfRU5DQVBfRVNQSU5UQ1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzcxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25maXJtYXRpb24gb24gSU5FVF9FU1BJTlRDUCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBBZnRlciByZXZpZXdpbmcgdGhlIGxhdGVzdCBkYXRhIGFuZCBjb25zaWRlcmluZyB0aGUgYXJjaGl0ZWN0dXJlLCB0aGUgYXBwcm9hY2ggdXNpbmcgYElORVRfRVNQSU5UQ1BgIGlzLCBpbiBmYWN0LCB0aGUgYXBwcm9wcmlhdGUgcGF0aCB0byBwdXJzdWUuIE5vIGZ1cnRoZXIgcmVmaW5lbWVudCBvciByZS1ldmFsdWF0aW9uIHNlZW1zIG5lY2Vzc2FyeSBhdCB0aGlzIHBvaW50LiBUaGF0JiMzOTtzIGEgc29saWQgY29uZmlybWF0aW9uLCBhbmQgd2UgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoYXQgaW1wbGVtZW50YXRpb24gbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYRlJNX1VTRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hbHBoYS9jb25maWdzL2RlZmNvbmZpZz0xMj1DT05GSUdfVU5JWD15XG5hcmNoL2FscGhhL2NvbmZpZ3MvZGVmY29uZmlnOjEzOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9hbHBoYS9jb25maWdzL2RlZmNvbmZpZy0xNC1DT05GSUdfTkVUX0tFWT1tXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz01Nz1DT05GSUdfVU5JWD15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjU4OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy01OS1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZz00Mj1DT05GSUdfVU5JWF9ESUFHPXlcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWctNDQtQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTY4PUNPTkZJR19VTklYPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzo2OTpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZy03MC1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnPTUxPUNPTkZJR19VTklYPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZzo1MjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy01My1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMTM9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxMTQ6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTExNS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMjk9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMzA6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTEzMS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZz0zNj1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnOjM3OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZy0zOC1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZz0xMT1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9jb2JhbHRfZGVmY29uZmlnOjEyOkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZy0xMy1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZz0zND1DT05GSUdfVU5JWF9ESUFHPXlcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc6MzU6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTM2LUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMjktQ09ORklHX1hGUk1fU1RBVElTVElDUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6Mjg6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy0yOS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnLTI1LUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnLTMzLUNPTkZJR19ORVRfS0VZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZz00MD1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZzo0MTpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnLTQyLUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTUzPUNPTkZJR19QQUNLRVQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1NDpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctNTUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6MjQ6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMjUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWc9MjM9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWctMjUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9MjU9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZzoyNjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWctMjctQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9MjY9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZzoyNzpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTI0PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnOjI1OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWctMjYtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yNj1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6Mjc6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTQyPUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctNDQtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTMyYml0X2RlZmNvbmZpZzozMjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9NDI9Q09ORklHX1VOSVg9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctNDQtQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9jbTUyMDBfZGVmY29uZmlnPTE3PUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvY201MjAwX2RlZmNvbmZpZzoxODpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvY201MjAwX2RlZmNvbmZpZy0xOS1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9saXRlNTIwMGJfZGVmY29uZmlnPTIwPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZzoyMTpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZy0yMi1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9tb3Rpb25wcm9fZGVmY29uZmlnPTE3PUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbW90aW9ucHJvX2RlZmNvbmZpZzoxODpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbW90aW9ucHJvX2RlZmNvbmZpZy0xOS1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZz0yMT1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L3RxbTUyMDBfZGVmY29uZmlnOjIyOkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZy0yMy1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9hc3A4MzQ3X2RlZmNvbmZpZz0yMT1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L2FzcDgzNDdfZGVmY29uZmlnOjIyOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9hc3A4MzQ3X2RlZmNvbmZpZy0yMy1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc9NDE9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6NDI6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZy00My1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnOjI0OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZy0yNS1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc9Mzc9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc6Mzg6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZy0zOS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc9MTIzPUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6MTI0OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWctMTI1LUNPTkZJR19aSVNPRlM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz0zMz1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWc6MzQ6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctMzUtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2hvbGx5X2RlZmNvbmZpZz0yMD1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWc6MjE6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWctMjItQ09ORklHX0lORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnPTIwPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnOjIxOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTIwMF9kZWZjb25maWctMjItQ09ORklHX0lORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnPTIzPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnOjI0OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWctMjUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZzozMjpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWc9MzI9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZzozMzpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWctMzQtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTcyPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjczOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNzQtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz05Nz1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6OTg6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTktQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MzU9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZzozNjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMzctQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Nzg9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo3OTpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctODAtQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XG4tLVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz01Nz1DT05GSUdfUEFDS0VUPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6NTg6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTU5LUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xMjc9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEyODpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMjktQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMTg9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjExOTpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMjAtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnPTI4PUNPTkZJR19VTklYPXlcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnOjI5OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMzAtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzMyX2RlZmNvbmZpZz0xNT1DT05GSUdfVU5JWD15XG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MTY6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMTctQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0zMT1DT05GSUdfVU5JWD15XG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc6MzI6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9NjM9Q09ORklHX1BBQ0tFVD15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjY0OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02NS1DT05GSUdfSVBfTVVMVElDQVNUPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9NjQ9Q09ORklHX1BBQ0tFVD15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6NjU6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctNjYtQ09ORklHX0lQX01VTFRJQ0FTVD15XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTEyNjk9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19ub3BvbGljeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEyNzItXHRpZiAoIVJFQURfT05DRShuZXQtXHUwMDNleGZybS5wb2xpY3lfY291bnRbZGlyXSkgXHUwMDI2XHUwMDI2ICFzZWNwYXRoX2V4aXN0cyhza2IpKVxuaW5jbHVkZS9uZXQveGZybS5oOjEyNzM6XHRcdHJldHVybiBSRUFEX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbZGlyXSkgPT0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVDtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjc0LVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0xMzY5PXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fcm91dGVfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEzNzMtXHRpZiAoIVJFQURfT05DRShuZXQtXHUwMDNleGZybS5wb2xpY3lfY291bnRbWEZSTV9QT0xJQ1lfT1VUXSkgXHUwMDI2XHUwMDI2XG5pbmNsdWRlL25ldC94ZnJtLmg6MTM3NDpcdCAgICBSRUFEX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfT1VUXSkgPT0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVClcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzc1LVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjMwMD1zdHJ1Y3QgeGZybV90cmFuc2xhdG9yIHtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjMxNC1cbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKVxuaW5jbHVkZS9uZXQveGZybS5oLTIzMTYtZXh0ZXJuIGludCB4ZnJtX3JlZ2lzdGVyX3RyYW5zbGF0b3Ioc3RydWN0IHhmcm1fdHJhbnNsYXRvciAqeHRyKTtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTU3MT1zdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NzI6I2RlZmluZSBYRlJNX1VTRVJQT0xJQ1lfVU5TUEVDXHQwXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3MzojZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9CTE9DS1x0MVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NzQ6I2RlZmluZSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUXHQyXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTU3NS1cdF9fdThcdFx0XHRcdGluO1xuLS1cbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gWEZSTV9VU0VSIFx1MDAyNlx1MDAyNiBDT01QQVRfRk9SX1U2NF9BTElHTk1FTlQgXHUwMDI2XHUwMDI2IFxcXG5uZXQveGZybS9LY29uZmlnLTM1LVx0XHRIQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyMC1cdCAgbm8gbG9uZ2VyIG5lZWQgUEZfS0VZIHNvY2tldHMuIFBsZWFzZSB1c2UgdGhlIG5ldGxpbmtcbm5ldC94ZnJtL0tjb25maWc6MTIxOlx0ICBpbnRlcmZhY2UgKFhGUk1fVVNFUikgdG8gY29uZmlndXJlIElQc2VjLlxubmV0L3hmcm0vS2NvbmZpZy0xMjItXG4tLVxubmV0L3hmcm0vTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1hGUk1fQUxHTykgJiM0Mzs9IHhmcm1fYWxnby5vXG5uZXQveGZybS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfWEZSTV9VU0VSKSAmIzQzOz0geGZybV91c2VyLm9cbm5ldC94ZnJtL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKSAmIzQzOz0geGZybV9jb21wYXQub1xubmV0L3hmcm0vTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1hGUk1fSVBDT01QKSAmIzQzOz0geGZybV9pcGNvbXAub1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE2Nj1zdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF93aXRoX2lmaWQoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMwMS1cdGlmICgoIWRzdF9vcmlnLVx1MDAzZWRldiB8fCAhKGRzdF9vcmlnLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSkgXHUwMDI2XHUwMDI2XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMDI6XHQgICAgUkVBRF9PTkNFKG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W2Rpcl0pID09IFhGUk1fVVNFUlBPTElDWV9CTE9DSykge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzAzLVx0XHRlcnIgPSAtRVBFUk07XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjcwPWludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3NTY6XHRcdGlmIChSRUFEX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbZGlyXSkgPT0gWEZSTV9VU0VSUE9MSUNZX0JMT0NLKSB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTctXHRcdFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOTk9QT0xTKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQzMTA9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMxOC1cdG11dGV4X2luaXQoXHUwMDI2bmV0LVx1MDAzZXhmcm0ueGZybV9jZmdfbXV0ZXgpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzE5Olx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfSU5dID0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVDtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDMyMDpcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0ZXRF0gPSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzIxOlx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfT1VUXSA9IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQ7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQzMjItXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTI5MzA9c3RhdGljIGJvb2wga21faXNfYWxpdmUoY29uc3Qgc3RydWN0IGttX2V2ZW50ICpjKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yOTQ2LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjI5NDc6I2lmIElTX0VOQUJMRUQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjk0OC1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHhmcm1fdHJhbnNsYXRvcl9sb2NrKTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTQ2PXN0YXRpYyBib29sIHhmcm1fdXNlcnBvbGljeV9pc192YWxpZChfX3U4IHBvbGljeSlcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NDcte1xubmV0L3hmcm0veGZybV91c2VyLmM6MjU0ODpcdHJldHVybiBwb2xpY3kgPT0gWEZSTV9VU0VSUE9MSUNZX0JMT0NLIHx8XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTQ5Olx0ICAgICAgIHBvbGljeSA9PSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xubmV0L3hmcm0veGZybV91c2VyLmMtMjU1MC19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0PTE1Mz1DT05GSUdfVlNPQ0tFVFNfTE9PUEJBQ0s9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjE1NDpDT05GSUdfWEZSTV9VU0VSPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9OTE9Q09ORklHX1ZTWD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6OTI6Q09ORklHX1hGUk1fVVNFUj15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTgyPUNPTkZJR19WU09DS0VUU19MT09QQkFDSz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ6ODM6Q09ORklHX1hGUk1fVVNFUj15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD0xMjQ9Q09ORklHX1ZTT0NLRVRTX0xPT1BCQUNLPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6MTI1OkNPTkZJR19YRlJNX1VTRVI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTIyNT1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjIyNjpDT05GSUdfWEZSTV9VU0VSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTIyNy1DT05GSUdfWkVST1BMVVNfRkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvY29uZmlnPTIxPUNPTkZJR19WTEFOXzgwMjFRPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvY29uZmlnOjIyOkNPTkZJR19YRlJNX1VTRVI9bVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZz0yNT1DT05GSUdfVlhMQU49eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnOjI2OkNPTkZJR19YRlJNX1VTRVI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTIzOD1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjIzOTpDT05GSUdfWEZSTV9VU0VSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTI0MC1DT05GSUdfWkVST1BMVVNfRkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc9MTM4PUNPTkZJR19YRlJNX0lOVEVSRkFDRT1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjEzOTpDT05GSUdfWEZSTV9VU0VSPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc9NTU9Q09ORklHX1ZYTEFOPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzo1NjpDT05GSUdfWEZSTV9VU0VSPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZz0xMDc9Q09ORklHX1hGUk1fU1RBVElTVElDUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzoxMDg6Q09ORklHX1hGUk1fVVNFUj1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjYyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqWEZSTSBVc2VyIENvbmZpZ3VyYXRpb24gVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgYFhGUk1fVVNFUmAgc2V0dGluZyBpcyB0aGUgd2F5IHRvIGdvLiBCdXQsIHlvdSBrbm93IG1lLCBhbHdheXMgZG91YmxlLWNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyEgQmVmb3JlIEkgZnVsbHkgY29tbWl0IHRvIHRoaXMgY29uZmlndXJhdGlvbiBwYXRoLCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgYFhGUk1gIGNvbmZpZ3VyYXRpb24gaW4gaXRzIGVudGlyZXR5LiBJdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCwgYW5kIG1pc3NpbmcgYSBkZXRhaWwgdGhlcmUgY291bGQgZGVyYWlsIHRoZSB3aG9sZSBwcm9jZXNzLiBCZXN0IHRvIHRha2UgYSBtb21lbnQgYW5kIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGVudmlyb25tZW50IEkmIzM5O20gYnVpbGRpbmcgb24uIExldCBtZSBqdXN0IGdvIHRocm91Z2ggdGhlIHJlbGV2YW50IHBhcmFtZXRlcnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYyMQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgWEZSTSBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGBYRlJNYCBpcyBlc3NlbnRpYWxseSBhIGhpZGRlbiBmbGFnLCBhIGJvb2xlYW4sIGFjdGl2YXRlZCBpbXBsaWNpdGx5IHdoZW4gb3RoZXIgb3B0aW9ucyBsaWtlIGBJTkVUX0VTUElOVENQYCwgYElORVQ2X0FIYCwgb3IgYFhGUk1fVVNFUmAgYXJlIGNob3Nlbi4gVGhpcyBpcyBnb29kIHRvIGtub3c7IEkgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGljaXRseSBkZWZpbmUgYFhGUk1gIGlmIHRoZSB1bmRlcmx5aW5nIGNvbXBvbmVudCBpcyBhbHJlYWR5IGluIHBsYXkuIE1ha2VzIHRoaW5ncyBjbGVhbmVyLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIHJlYWNoYWJsZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRocy4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgYGVzcGludGNwX3JjdmAgYW5kIGBlc3BpbnRjcF9jbG9zZWAuIEFoLCBnb29kLCB0aGV5JiMzOTtyZSBwYXJ0IG9mIGBlc3BpbnRjcF9wcm90YCBhcyBleHBlY3RlZC4gVGhhdCBtYWtlcyBzZW5zZS4gTmV4dCwgYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLi4uIGl0JiMzOTtzIHN0YXRpYywgc28gaXQmIzM5O3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBIb3dldmVyLCBgeGZybV9vdXRwdXRgICppcyogZXhwb3J0ZWQsIHNvIHRoYXQgaXMgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi4KCk1vdmluZyBvbiwgYG5hdF9rZWVwYWxpdmVfd29ya2AgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIGFzIEkgc3VzcGVjdGVkLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoZW4sIEkmIzM5O20gZXhhbWluaW5nIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIEFnYWluLCBpdCYjMzk7cyBzdGF0aWMsIGJ1dCBgeGZybV9hZGRfc2FgIGlzIHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1vZHVsZSYjMzk7cyBiZWhhdmlvci4KCkZpbmFsbHksIEkmIzM5O20gdmVyaWZ5aW5nIHRoZSBBSCBjb21wb25lbnRzLiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIGFyZSBzdGF0aWMgYXMgd2VsbCwgYnV0IHRoZXkgYXJlIHJlZ2lzdGVyZWQgYXMgaGFuZGxlcnMsIHNvIHRoZXkgYXJlIGNyaXRpY2FsLiBUaGUgc2FtZSBnb2VzIGZvciBgeGZybTZfaW5wdXRfYWRkcmAgd2hpY2ggaXMgZXhwb3J0ZWQuCgpTbyB0aGUgY29yZSBzeW1ib2xzIEkmIzM5O20gdHJhY2tpbmcgYXJlOgoqICAgYGFoNl9pbnB1dGAKKiAgIGBhaDZfb3V0cHV0YAoqICAgYHhmcm02X2lucHV0X2FkZHJgCiogICBgZXNwaW50Y3BfcmN2YAoqICAgYGVzcGludGNwX2Nsb3NlYAoqICAgYHhmcm1fb3V0cHV0YAoqICAgYHhmcm1fYWRkX3NhYAoqICAgYG5hdF9rZWVwYWxpdmVfd29ya2AKCkkgbmVlZCB0byBjb25maXJtIGBlc3BpbnRjcF9yY3ZgIGlzIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJJiMzOTttIGxvb2tpbmcgZm9yLi4uIEkmIzM5O2xsIGNoZWNrIGludG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VzcGludGNwX3JjdiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTI5PXN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC94ZnJtL2VzcGludGNwLmMtNTYtXG5uZXQveGZybS9lc3BpbnRjcC5jOjU3OnN0YXRpYyB2b2lkIGVzcGludGNwX3JjdihzdHJ1Y3Qgc3RycGFyc2VyICpzdHJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3hmcm0vZXNwaW50Y3AuYy01OC17XG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYz00NDE9c3RhdGljIGludCBlc3BpbnRjcF9pbml0X3NrKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTQ0NC1cdHN0cnVjdCBzdHJwX2NhbGxiYWNrcyBjYiA9IHtcbm5ldC94ZnJtL2VzcGludGNwLmM6NDQ1Olx0XHQucmN2X21zZyA9IGVzcGludGNwX3Jjdixcbm5ldC94ZnJtL2VzcGludGNwLmMtNDQ2LVx0XHQucGFyc2VfbXNnID0gZXNwaW50Y3BfcGFyc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjgwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipJbnRlcm5hbCBDb2RlIFJldmlldzogUmVjZWl2ZSBDYWxsYmFjayAmYW1wOyBOQVQgS2VlcGFsaXZlKioKCk9rYXksIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgYGVzcGludGNwX3JjdmAgaXMgdGhlIHJlY2VpdmUgY2FsbGJhY2sgZnVuY3Rpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gTmVlZCB0byBjb25maXJtIHRoYXQgcXVpY2tseTsgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGludmVzdGlnYXRlIGBuYXRfa2VlcGFsaXZlX3dvcmtgLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgcGllY2UgdG8gY2hlY2ssIGFzIEkgc3VzcGVjdCB0aGVzZSB0d28gZnVuY3Rpb25zIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbSBpbnRlcmFjdHMgd2l0aCB0aGUgaW5jb21pbmcgZGF0YSBzdHJlYW0gdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgbG9naWMsIHRoZSB0aW1pbmcsIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L25ldG5zL3hmcm0uaD0zMj1zdHJ1Y3QgbmV0bnNfeGZybSB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oLTg1LVx0c3RydWN0IG11dGV4IHhmcm1fY2ZnX211dGV4O1xuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oOjg2Olx0c3RydWN0IGRlbGF5ZWRfd29ya1x0bmF0X2tlZXBhbGl2ZV93b3JrO1xuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oLTg3LX07XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTU4PWVudW0ge1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Mi1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2MzpzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjQtXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqYmF0Y2hbTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFXTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjktXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNzA6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNzEte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcyOlx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE3My1cbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxODU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NjpcdFx0XHRcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODcte1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNC1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNTpzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNzpcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cdHN0cnVjdCB4ZnJtX3N0YXRlX3dhbGsgd2Fsaztcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMzU6XHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzYtXHR4ZnJtX3N0YXRlX3dhbGtfaW5pdChcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM4LVx0XHRjdHgubnIgPSAwO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjM5Olx0XHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgXHUwMDI2Y3R4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQxLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjdHgubnI7IGkmIzQzOyYjNDM7KSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDI6XHRcdFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShjdHguYmF0Y2hbaV0sIFx1MDAyNmN0eCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDMtXHRcdFx0eGZybV9zdGF0ZV9wdXQoY3R4LmJhdGNoW2ldKTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDgtXHRpZiAoY3R4Lm5leHRfcnVuKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjQ5Olx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjUwLVx0XHRcdFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI4Mz12b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5MC1cdG5ldCA9IHhzX25ldCh4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5MTpcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjkyLX1cbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yOTQ9aW50IF9fbmV0X2luaXQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5NS17XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyOTY6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIG5hdF9rZWVwYWxpdmVfd29yayk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTctXHRyZXR1cm4gMDtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0zMDA9aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDEte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzAyOlx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmspO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAzLVx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzIxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIGhhdmluZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyB0aGUgYWN0dWFsIGZ1bmN0aW9uIGhvb2tlZCBpbnRvIHRoZSB3b3JrcXVldWUgZm9yIGhhbmRsaW5nIE5BVCBrZWVwYWxpdmUgdGFza3MuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhvdWdoLCBzbyBJJiMzOTtsbCB0cnVzdCBteSBndXQgZm9yIG5vdywgYnV0IEkgd2FudCB0byB2ZXJpZnkgdGhhdC4KCk5leHQgSSYjMzk7bGwgY2hlY2sgYHhmcm1fYWRkX3NhYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9hZGRfc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9OTA3PXN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEwMzgtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMDM5OnN0YXRpYyBpbnQgeGZybV9hZGRfc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDQwLVx0XHQgICAgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjkzNz1zdGF0aWMgaW50IHhmcm1fYWRkX3BvbF9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzAwMy1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMwMDQ6c3RhdGljIGludCB4ZnJtX2FkZF9zYV9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMDA1LVx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzQ4LX0geGZybV9kaXNwYXRjaFtYRlJNX05SX01TR1RZUEVTXSA9IHtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NDk6XHRbWEZSTV9NU0dfTkVXU0EgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2FkZF9zYSAgICAgICAgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTAtXHRbWEZSTV9NU0dfREVMU0EgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RlbF9zYSAgICAgICAgfSxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzYxLVx0W1hGUk1fTVNHX0FDUVVJUkUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfYWNxdWlyZSAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzYyOlx0W1hGUk1fTVNHX0VYUElSRSAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfc2FfZXhwaXJlIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzYzLVx0W1hGUk1fTVNHX1VQRFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfcG9saWN5ICAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzY0Olx0W1hGUk1fTVNHX1VQRFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfc2EgICAgICAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzY1LVx0W1hGUk1fTVNHX1BPTEVYUElSRSAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfcG9sX2V4cGlyZX0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTk5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTZWN1cml0eSBBc3NvY2lhdGlvbiBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHhmcm1fYWRkX3NhYCBpcyBpbmRlZWQgdGhlIG5ldGxpbmsgY2FsbGJhY2sgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIE5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYGVzcGludGNwX3JjdmAsIGBlc3BpbnRjcF9jbG9zZWAsIGB4ZnJtX291dHB1dGAsIGB4ZnJtX2FkZF9zYWAsIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG1hcHBpbmcgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMuIFRoZSByZWxldmFudCBvbmVzIHNlZW0gdG8gYmUgYElORVQ2X0FIYCwgYElORVRfRVNQSU5UQ1BgLCBhbmQgYFhGUk1fVVNFUmAuIEkmIzM5O2xsIGNyb3NzLXJlZmVyZW5jZSB0aGVzZSB3aXRoIHRoZSBzeW1ib2xzIHRvIGVzdGFibGlzaCB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgZm9yIEFIIHByb2Nlc3NpbmcgaW4gSVB2Niwgc28gSSBzaG91bGQgZW5zdXJlIEkgdW5kZXJzdGFuZCB0aGVpciBmdW5jdGlvbiBjbGVhcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZCkgYWg2X2lucHV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2FoNi5jPTM1MD1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvYWg2LmMtNDc0LVxubmV0L2lwdjYvYWg2LmM6NDc1OnN0YXRpYyB2b2lkIGFoNl9pbnB1dF9kb25lKHZvaWQgKmRhdGEsIGludCBlcnIpXG5uZXQvaXB2Ni9haDYuYy00NzYte1xuLS1cbm5ldC9pcHY2L2FoNi5jLTUxOC1cbm5ldC9pcHY2L2FoNi5jOjUxOTpzdGF0aWMgaW50IGFoNl9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY2L2FoNi5jLTUyMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Nzg3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyBDb3JlIEZ1bmN0aW9uYWxpdHkqKgoKUmlnaHQsIHNvLCB0YWtpbmcgc3RvY2sgb2YgdGhpbmdzLi4uIFllcywgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB0aG9zZSBhcmUgaW5kZWVkIHRoZSAqcHJpbWFyeSogZnVuY3Rpb25zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZS4gTm8gcXVlc3Rpb24gYWJvdXQgaXQuIEJ1dCwgeW91IGtub3cgbWUsIEkgbGlrZSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbW92ZSBmb3J3YXJkLiBBIHNvbGlkIHZlcmlmaWNhdGlvbiBpcyBhbHdheXMgd2lzZSwgc28gbGV0JiMzOTtzIGp1c3QgdGFrZSBhIHF1aWNrIHBlZWsgYXQgYHhmcm1fb3V0cHV0YCBhZ2FpbiwganVzdCB0byBiZSAqY29tcGxldGVseSogc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBpbiBvdXIgaW5pdGlhbCBhbmFseXNpcy4gSXQgbmV2ZXIgaHVydHMgdG8gZG91YmxlLWNoZWNrIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIHhmcm1fb3V0cHV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hmcm0uaD0xODAzPWludCB4ZnJtX3RyYW5zX3F1ZXVlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTE4MDUtXHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqKSk7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTgwNjppbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTgwNzppbnQgeGZybV9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xODA4LWludCB4ZnJtNF90dW5uZWxfY2hlY2tfc2l6ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTI2LVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzoyNzpzdGF0aWMgaW50IHhmcm1fb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQveGZybS94ZnJtX291dHB1dC5jLTI4LXN0YXRpYyBpbnQgeGZybV9pbm5lcl9leHRyYWN0X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYz00OTY9RVhQT1JUX1NZTUJPTF9HUEwocGt0Z2VuX3hmcm1fb3V0ZXJfbW9kZV9vdXRwdXQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNDk4LVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo0OTk6c3RhdGljIGludCB4ZnJtX291dHB1dF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTAwLXtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTU5Mi1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM6NTkzOmludCB4ZnJtX291dHB1dF9yZXN1bWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxubmV0L3hmcm0veGZybV9vdXRwdXQuYy01OTQte1xuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIyPXN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjUzLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2NTQ6c3RhdGljIGludCB4ZnJtX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTY1NS17XG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTgtXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjY1OTpzdGF0aWMgaW50IHhmcm1fb3V0cHV0X2dzbyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjYwLXtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTY5Nz1zdGF0aWMgdm9pZCB4ZnJtX2dldF9pbm5lcl9pcHByb3RvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzQ3LVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo3NDg6aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzQ5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NTUKCQkJCQkJCW91dHB1dDogMjk0CgkJCQkJCQl0aG91Z2h0czogNDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2VjdXJpdHkgSW1wbGljYXRpb25zIG9mIFRoaXMgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBtZXRob2RpY2FsbHkgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGUgY2hhbmdlcy4gUmlnaHQgbm93LCBJJiMzOTttIHZlcmlmeWluZyB0aGUgZnVuY3Rpb24gbmFtZXMsIGp1c3QgdG8gYmUgc3VyZSBJJiMzOTttIHVzaW5nIHRoZSBjb3JyZWN0IGlkZW50aWZpZXJzLiAqYHhmcm1fb3V0cHV0YCogbG9va3MgcmlnaHQsIEkgY29uZmlybSAqYG5hdF9rZWVwYWxpdmVfd29ya2AqIGlzIHRoZSBjb3JyZWN0IG5hbWUuLi4gYW5kICpgeGZybV9hZGRfc2FgKiwgKmBlc3BpbnRjcF9jbG9zZWAqLCAqYGVzcGludGNwX3JjdmAqLCAqYHhmcm02X2lucHV0X2FkZHJgKiwgKmBhaDZfaW5wdXRgKiBhbmQgKmBhaDZfb3V0cHV0YCogYXJlIGFsbCB2ZXJpZmllZC4KClRoZSByZWFzb24gSSYjMzk7bSBkb2luZyB0aGlzIGlzIGJlY2F1c2UgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIGluZGljYXRlcyBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBjb3JlIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIHRoZXJlJiMzOTtzIGEgZml4IGZvciBhbiBvdXQtb2YtYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIHdoaWNoIGlzIGltcG9ydGFudCBmb3Igcm91dGluZyBzZWN1cml0eS4gVGhlcmUgaXMgYWxzbyBhIGRlcHRoIGNoZWNrIGZpeCBpbiBgeGZybTZfaW5wdXRfYWRkcmAuIEEgbnVsbCBwb2ludGVyIGNoZWNrIGlzIGJlaW5nIGFkZGVkIHRvIGBza2ItJmd0O2RldmAgd2l0aGluIGBoYW5kbGVfZXNwYCwgd2hpY2ggaXMgYSBjb21tb24gc291cmNlIG9mIGV4cGxvaXRhYmxlIGVycm9ycyBpZiBtaXNoYW5kbGVkLiBSZXBsYWNpbmcgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAgaXMgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gUmV3cml0aW5nIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGVzdGVkLCBhcyBpdCBjb3VsZCBoYXZlIHN1YnRsZSBlZmZlY3RzIG9uIHNlY3VyaXR5LiBJIGFsc28gc2VlIGEgZG91YmxlLWZyZWUgcmVtb3ZlZCBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIHdoaWNoIGlzIGFuIGV4cGxvaXRhYmxlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlLCBhbmQgYSBmaXggaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmb3IgYSBmaWVsZCBjaGVjay4gVGhlc2UgYXJlIGFsbCBjcml0aWNhbCBhcmVhcyBvZiB0aGUga2VybmVsLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBhcmVhcyBmb3IgZnV6emluZyB3aWxsIGJlOgoKKiAgIGBhaDZfaW5wdXRgCiogICBgYWg2X291dHB1dGAKKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYAoqICAgYGVzcGludGNwX3JjdmAKKiAgIGBlc3BpbnRjcF9jbG9zZWAKKiAgIGB4ZnJtX291dHB1dGAKKiAgIGB4ZnJtX2FkZF9zYWAKKiAgIGBuYXRfa2VlcGFsaXZlX3dvcmtgCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIEJhc2VkIG9uIHRoZSBwYXRjaCwgdGhlIGNvbmZpZ3MgSSBuZWVkIGFyZTogYElORVQ2X0FIYCwgYElORVRfRVNQSU5UQ1BgLCBhbmQgYFhGUk1fVVNFUmAuCgpPa2F5LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybTZfaW5wdXRfYWRkciYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9yY3YmIzM0OywKICAgICYjMzQ7ZXNwaW50Y3BfY2xvc2UmIzM0OywKICAgICYjMzQ7eGZybV9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybV9hZGRfc2EmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXHUwMDNlZGV2YCBpbiBgaGFuZGxlX2VzcGAgKEVTUCBpbiBUQ1ApLCByZXBsYWNlcyBgYmFycmllcigpYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3UoKWAgaW4gYGVzcGludGNwX2Nsb3NlYCwgcmV3cml0ZXMgdGhlIE5BVCBrZWVwYWxpdmUgd29ya3F1ZXVlIHRvIHVzZSBiYXRjaGluZyBpbiBgeGZybV9uYXRfa2VlcGFsaXZlLmNgLCByZW1vdmVzIGEgZG91YmxlLWZyZWUgaW4gYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLCBhbmQgZml4ZXMgYSBmaWVsZCBjaGVjayBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLiBUaGVzZSBhcmUgYWxsIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGFuZCBJUHNlYyBsb2dpYywgd2hpY2ggYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVDZfQUgmIzM0OywKICAgICYjMzQ7SU5FVF9FU1BJTlRDUCYjMzQ7LAogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaDZfaW5wdXQmIzM0OywKICAgICYjMzQ7YWg2X291dHB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtNl9pbnB1dF9hZGRyJiMzNDssCiAgICAmIzM0O2VzcGludGNwX3JjdiYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9jbG9zZSYjMzQ7LAogICAgJiMzNDt4ZnJtX291dHB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtX2FkZF9zYSYjMzQ7LAogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnRhaW5zIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBJdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYW5kIHByb3BhZ2F0ZXMgdGhlIGVycm9yLCBmaXhlcyBhIGRlcHRoIGNoZWNrIGluIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYWRkcyBhIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgYHNrYi1cdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBvZiBmaXhlcyBmb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyAoaW4gaXB2Nl9yZWFycmFuZ2VfcnRoZHIgYW5kIHhmcm02X2lucHV0X2FkZHIpLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIChpbiBoYW5kbGVfZXNwKSwgdXNlLWFmdGVyLWZyZWUvY29uY3VycmVuY3kgaXNzdWVzIChpbiBlc3BpbnRjcF9jbG9zZSBhbmQgeGZybV9uYXRfa2VlcGFsaXZlKSwgZG91YmxlIGZyZWUgKGluIHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQpLCBhbmQgbG9naWMgZXJyb3JzIChpbiB4ZnJtX3N0YXRlX2NvbnN0cnVjdCkuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgS0FTQU4sIExPQ0tERVAsIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBmdWxseSBzdWZmaWNpZW50IHRvIGNvdmVyIHRoZXNlIGNoYW5nZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDozNDowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmMKaW5kZXggNzZmN2EyZGU5MTA4ZS4uYzk2ZjdlMGQwYTQ4MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmMKQEAgLTIzMiwyNiAmIzQzOzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlcwogICoJUmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyCiAgKglzbyB0aGF0IHRoZXkgYXBwZWFyIGluIHRoZSBvcmRlciB0aGV5IHdpbGwgYXQgdGhlIGZpbmFsIGRlc3RpbmF0aW9uLgogICoJU2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2YKJiM0MzsgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi4KICAqLwotc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKJiM0MztzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpCiB7Ci0JaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0OwomIzQzOwl1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7CiAJc3RydWN0IGluNl9hZGRyICphZGRyczsKIAlzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjsKIAogCXNlZ21lbnRzX2xlZnQgPSBydGhkci0mZ3Q7c2VnbWVudHNfbGVmdDsKIAlpZiAoc2VnbWVudHNfbGVmdCA9PSAwKQotCQlyZXR1cm47Ci0JcnRoZHItJmd0O3NlZ21lbnRzX2xlZnQgPSAwOwomIzQzOwkJcmV0dXJuIDA7CiAKLQkvKiBUaGUgdmFsdWUgb2YgcnRoZHItJmd0O2hkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbQotCSAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nCi0JICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzCi0JICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuCi0JICoKLQkgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuCiYjNDM7CS8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50CiYjNDM7CSAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LgogCSAqLwogCXNlZ21lbnRzID0gcnRoZHItJmd0O2hkcmxlbiAmZ3Q7Jmd0OyAxOwomIzQzOwlpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJ0aGRyLSZndDtzZWdtZW50c19sZWZ0ID0gMDsKIAogCWFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS0mZ3Q7YWRkcjsKIAlmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTsKQEAgLTI2MSw2ICYjNDM7MjYzLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKIAogCWFkZHJzWzBdID0gaXBoLSZndDtkYWRkcjsKIAlpcGgtJmd0O2RhZGRyID0gZmluYWxfYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcikKQEAgLTI3Myw2ICYjNDM7Mjc3LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKQogCX0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07CiAJY2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47CiAJaW50IG5leHRoZHIgPSBpcGgtJmd0O25leHRoZHI7CiYjNDM7CWludCBlcnI7CiAKIAlleHRoZHIuaXBoJiM0MzsmIzQzOzsKIApAQCAtMjkyLDcgJiM0MzsyOTcsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpCiAJCQlicmVhazsKIAogCQljYXNlIE5FWFRIRFJfUk9VVElORzoKLQkJCWlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7CiYjNDM7CQkJZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jCmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfaW5wdXQuYwpAQCAtMjQ3LDcgJiM0MzsyNDcsNyBAQCBpbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsCiAJCWdvdG8gZHJvcDsKIAl9CiAKLQlpZiAoMSAmIzQzOyBzcC0mZ3Q7bGVuID09IFhGUk1fTUFYX0RFUFRIKSB7CiYjNDM7CWlmIChzcC0mZ3Q7bGVuICZndDs9IFhGUk1fTUFYX0RFUFRIKSB7CiAJCVhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1JTkJVRkZFUkVSUk9SKTsKIAkJZ290byBkcm9wOwogCX0KZGlmZiAtLWdpdCBhL25ldC94ZnJtL2VzcGludGNwLmMgYi9uZXQveGZybS9lc3BpbnRjcC5jCmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL2VzcGludGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0vZXNwaW50Y3AuYwpAQCAtMzcsNiAmIzQzOzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKQogCiAJcmN1X3JlYWRfbG9jaygpOwogCXNrYi0mZ3Q7ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBza2ItJmd0O3NrYl9paWYpOwomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCiAJaWYgKHNrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpCkBAIC00NSw2ICYjNDM7NTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaykKICNlbmRpZgogCQl4ZnJtNF9yY3ZfZW5jYXAoc2tiLCBJUFBST1RPX0VTUCwgMCwgVENQX0VOQ0FQX0VTUElOVENQKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MztvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKQEAgLTUxNSw3ICYjNDM7NTIxLDggQEAgc3RhdGljIHZvaWQgZXNwaW50Y3BfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiAJc3RycF9zdG9wKCZhbXA7Y3R4LSZndDtzdHJwKTsKIAogCXNrLSZndDtza19wcm90ID0gJmFtcDt0Y3BfcHJvdDsKLQliYXJyaWVyKCk7CiYjNDM7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwogCiAJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtjdHgtJmd0O3dvcmspOwogCXN0cnBfZG9uZSgmYW1wO2N0eC0mZ3Q7c3RycCk7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IGViMWI2ZjY3NzM5ZTEuLjVjZDZkNDMxNjRkYmMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCkBAIC0xNTUsMjUgJiM0MzsxNTUsNTAgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAl9CiB9CiAKJiM0MztlbnVtIHsKJiM0MzsJTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFID0gMTYsCiYjNDM7CU5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCA9IDEsCiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHsKJiM0MzsJc3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07CiYjNDM7CXVuc2lnbmVkIGludCBucjsKIAl0aW1lNjRfdCBuZXh0X3J1bjsKIAl0aW1lNjRfdCBub3c7CiB9OwogCi1zdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQomIzQzO3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogewogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7CiYjNDM7CiYjNDM7CWlmICghUkVBRF9PTkNFKHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWlmIChjdHgtJmd0O25yID09IEFSUkFZX1NJWkUoY3R4LSZndDtiYXRjaCkpCiYjNDM7CQlyZXR1cm4gTkFUX0tFRVBBTElWRV9CQVRDSF9GVUxMOwomIzQzOwomIzQzOwl4ZnJtX3N0YXRlX2hvbGQoeCk7CiYjNDM7CWN0eC0mZ3Q7YmF0Y2hbY3R4LSZndDtuciYjNDM7JiM0MztdID0geDsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpCiYjNDM7ewogCWJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTsKIAlzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTsKLQl0aW1lNjRfdCBuZXh0X3J1bjsKJiM0MzsJdGltZTY0X3QgbmV4dF9ydW4gPSAwOwogCXUzMiBpbnRlcnZhbDsKIAlpbnQgZGVsdGE7CiAKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7eC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmICh4LSZndDtrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKIAlpbnRlcnZhbCA9IHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7CiAJaWYgKCFpbnRlcnZhbCkKLQkJcmV0dXJuIDA7Ci0KLQlzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MzsJCWdvdG8gb3V0OwogCiAJZGVsdGEgPSAoaW50KShjdHgtJmd0O25vdyAtIHgtJmd0O2xhc3R1c2VkKTsKIAlpZiAoZGVsdGEgJmx0OyBpbnRlcnZhbCkgewpAQCAtMTg3LDE0ICYjNDM7MjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiAJCXNlbmRfa2VlcGFsaXZlID0gdHJ1ZTsKIAl9CiAKLQlzcGluX3VubG9jaygmYW1wO3gtJmd0O2xvY2spOwomIzQzO291dDoKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt4LSZndDtsb2NrKTsKIAogCWlmIChzZW5kX2tlZXBhbGl2ZSkKIAkJbmF0X2tlZXBhbGl2ZV9zZW5kKCZhbXA7a2EpOwogCi0JaWYgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikKJiM0MzsJaWYgKG5leHRfcnVuICZhbXA7JmFtcDsgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikpCiAJCWN0eC0mZ3Q7bmV4dF9ydW4gPSBuZXh0X3J1bjsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTIwMiwxMyAmIzQzOzIyNywyMyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDsKIAlzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7CiAJc3RydWN0IG5ldCAqbmV0OwomIzQzOwlpbnQgZXJyLCBpOwogCiAJY3R4Lm5leHRfcnVuID0gMDsKIAljdHgubm93ID0ga3RpbWVfZ2V0X3JlYWxfc2Vjb25kcygpOwogCiAJbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsIHhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLndvcmspOwogCXhmcm1fc3RhdGVfd2Fsa19pbml0KCZhbXA7d2FsaywgSVBQUk9UT19FU1AsIE5VTEwpOwotCXhmcm1fc3RhdGVfd2FsayhuZXQsICZhbXA7d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSwgJmFtcDtjdHgpOwomIzQzOwlkbyB7CiYjNDM7CQljdHgubnIgPSAwOwomIzQzOwkJZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgJmFtcDt3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgJmFtcDtjdHgpOwomIzQzOwkJbG9jYWxfYmhfZGlzYWJsZSgpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IGN0eC5ucjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgJmFtcDtjdHgpOwomIzQzOwkJCXhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7CiYjNDM7CQl9CiYjNDM7CQlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MzsJfSB3aGlsZSAoZXJyID09IE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCk7CiAJeGZybV9zdGF0ZV93YWxrX2RvbmUoJmFtcDt3YWxrLCBuZXQpOwogCWlmIChjdHgubmV4dF9ydW4pCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO25ldC0mZ3Q7eGZybS5uYXRfa2VlcGFsaXZlX3dvcmssCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX291dHB1dC5jIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuYwppbmRleCBjYzM1YzJmY2JiZTA5Li5lMzA1YmEzMmUzNTZiIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKQEAgLTYzNiwxMCAmIzQzOzYzNiw4IEBAIHN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCW5mX3Jlc2V0X2N0KHNrYik7CiAKIAllcnIgPSBza2JfZHN0KHNrYiktJmd0O29wcy0mZ3Q7bG9jYWxfb3V0KG5ldCwgc2ssIHNrYik7Ci0JaWYgKHVubGlrZWx5KGVyciAhPSAxKSkgewotCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKIAkJcmV0dXJuIGVycjsKLQl9CiAKIAkvKiBJbiB0cmFuc3BvcnQgbW9kZSwgbmV0d29yayBkZXN0aW5hdGlvbiBpcwogCSAqIGRpcmVjdGx5IHJlYWNoYWJsZSwgd2hpbGUgaW4gdHVubmVsIG1vZGUsCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LAogCWlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoJmFtcDt4LSZndDthYWxnLCAmYW1wO3gtJmd0O3Byb3BzLmFhbGdvLAogCQkJCSAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhfVFJVTkNdLCBleHRhY2spKSkKIAkJZ290byBlcnJvcjsKLQlpZiAoIXgtJmd0O3Byb3BzLmFhbGdvKSB7CiYjNDM7CWlmICgheC0mZ3Q7YWFsZykgewogCQlpZiAoKGVyciA9IGF0dGFjaF9hdXRoKCZhbXA7eC0mZ3Q7YWFsZywgJmFtcDt4LSZndDtwcm9wcy5hYWxnbywKIAkJCQkgICAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhdLCBleHRhY2spKSkKIAkJCWdvdG8gZXJyb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ2CgkJCQkJCQlvdXRwdXQ6IDE2MwoJCQkJCQkJdGhvdWdodHM6IDk0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYXNzZXNzIHRoaXMgcGF0Y2ggc2VyaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24sIHNpbmNlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBjYXRjaCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBMZXQmIzM5O3MgZGlnIGluLgoKVGhlIGZpcnN0IHBhdGNoIHRvdWNoZXMgYG5ldC9pcHY2L2FoNi5jYC4gSXQgbG9va3MgbGlrZSBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGdvdCBhIGJvdW5kcyBjaGVjayBhZGRlZCB0byBpdC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBhIHZhbGlkYXRpb24gZml4IHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcywgd2hpY2ggaXMgZ29vZCwgYnV0IGl0IGRvZXNuJiMzOTt0IHNjcmVhbSAmIzM0O3VuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWsmIzM0OyB0byBtZS4gTW92aW5nIG9uLCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGp1c3QgaGFuZGxlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoYXQgZnVuY3Rpb24uCgpOZXh0LCB3ZSBoYXZlIGBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYCwgd2hpY2ggaXMgYWxzbyBhIGJvdW5kcyBjaGVjay4gSXQmIzM5O3MgdGlnaHRlbmluZyB1cCBhIGNvbmRpdGlvbiB0byBwcmV2ZW50IGlzc3VlcywgYnV0IHN0aWxsIGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBhIEtNU0FOIHRhcmdldC4KClRoZSB0aGlyZCBwYXRjaCwgYG5ldC94ZnJtL2VzcGludGNwLmNgLCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYWRkcmVzc2VzIHNvbWUgdXNlLWFmdGVyLWZyZWUgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcy4gU3BlY2lmaWNhbGx5LCBpdCBhZGRzIGEgY2hlY2sgZm9yIGAhc2tiLSZndDtkZXZgIGFuZCBzd2FwcyBvdXQgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgLiBJbXBvcnRhbnQgZml4ZXMsIGJ1dCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4KClRoZW4sIHRoZXJlJiMzOTtzIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHdoaWNoIHNlZW1zIHRvIGJlIGFsbCBhYm91dCBjb25jdXJyZW5jeSwgbG9ja2luZywgYW5kIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcy4gSXQgcmVzdHJ1Y3R1cmVzIHdvcmsgcHJvY2Vzc2luZyB1c2luZyBhIGBiYXRjaGAgYXJyYXksIHJlcGxhY2VzIGBzcGluX2xvY2tgIHdpdGggYHNwaW5fbG9ja19iaGAsIGFuZCBhZGRzIGB4ZnJtX3N0YXRlX2hvbGRgIGFuZCBgeGZybV9zdGF0ZV9wdXRgLiBUaGlzIGlzIHNvbGlkLCBidXQgYWdhaW4sIGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgYSBLTVNBTiBpc3N1ZSBzcGVjaWZpY2FsbHkuCgpJbiBgbmV0L3hmcm0veGZybV9vdXRwdXQuY2AsIHRoZXJlJiMzOTtzIGEgZml4IGZvciBkb3VibGUgZnJlZXMgb3IgbWVtb3J5IGxlYWtzLiBUaGUgcGF0Y2ggcmVtb3ZlcyBhIGBrZnJlZV9za2Ioc2tiKWAgY2FsbCB1bmRlciBjZXJ0YWluIGVycm9yIGNvbmRpdGlvbnMuIFRoaXMgaXMgZ29vZCBzYW5pdGF0aW9uLCBidXQgbm90IGEgS01TQU4gZmxhZy4KCkxhc3RseSwgYG5ldC94ZnJtL3hmcm1fdXNlci5jYCBoYXMgYSBzaW1wbGUgbG9naWMgYnVnIGZpeC4gSXQgY2hhbmdlcyBhIGNvbmRpdGlvbmFsIGNoZWNrLCBidXQgdGhpcyBhZ2FpbiBoYXMgbm90aGluZyB0byBkbyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKU28sIHNjYW5uaW5nIHRoZXNlIGNoYW5nZXMsIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBLTVNBTiBmbGFncy4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFdlJiMzOTtyZSBtYWlubHkgc2VlaW5nIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMsIGxvY2tpbmcgYnVncywgYW5kIGxvZ2ljIGVycm9ycy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBpc3N1ZXMgdGhhdCBLQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSB1c3VhbCBzdXNwZWN0cyBhcmUgZGVzaWduZWQgdG8gY2F0Y2guCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgb24gYG5ldC9pcHY2L2FoNi5jYC4gVGhhdCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGZ1bmN0aW9uIHdpdGggdGhlIGJvdW5kcyBjaGVjay4uLiBgc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzYC4uLiB0aGF0IGNsZWFybHkgcHJldmVudHMgcmVhZGluZyBvdXRzaWRlIHRoZSBgYWRkcnNgIGFycmF5LiAgQSBLQVNBTiB3b3VsZCBkZWZpbml0ZWx5IHNlZSB0aGF0LgoKQW5kIHRoYXQgYG5hdF9rZWVwYWxpdmVfd29ya19jdHhgIGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2Agd2l0aCBpdHMgYGJhdGNoYCBhcnJheS4uLiB0aGUgYXJyYXkgaXRzZWxmIGlzIHBvcHVsYXRlZCBhbmQgdXNlZCBjb3JyZWN0bHkuIFRoZXJlJiMzOTtzIG5vIGx1cmtpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhlcmUuCgpDb25jbHVzaW9uOiBObywgd2UgKmRvbiYjMzk7dCogbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGZvciB0aGlzLiBUaGVzZSBwYXRjaGVzIGFkZHJlc3MgdnVsbmVyYWJpbGl0aWVzIHRoYXQgYXJlIHdlbGwtY292ZXJlZCBieSBleGlzdGluZyB0b29scy4gTXkgcmVhc29uaW5nIGlzIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIChpbiBpcHY2X3JlYXJyYW5nZV9ydGhkciBhbmQgeGZybTZfaW5wdXRfYWRkciksIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgKGluIGhhbmRsZV9lc3ApLCB1c2UtYWZ0ZXItZnJlZS9jb25jdXJyZW5jeSBpc3N1ZXMgKGluIGVzcGludGNwX2Nsb3NlIGFuZCB4ZnJtX25hdF9rZWVwYWxpdmUpLCBkb3VibGUgZnJlZSAoaW4geGZybV9kZXZfZGlyZWN0X291dHB1dCksIGFuZCBsb2dpYyBlcnJvcnMgKGluIHhmcm1fc3RhdGVfY29uc3RydWN0KS4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlc2UgY2hhbmdlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6MDguNjk1NzQ5NzQ1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNTI3MDk5MDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVQ2X0FIXCIsXG4gICAgXCJJTkVUX0VTUElOVENQXCIsXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaDZfaW5wdXRcIixcbiAgICBcImFoNl9vdXRwdXRcIixcbiAgICBcInhmcm02X2lucHV0X2FkZHJcIixcbiAgICBcImVzcGludGNwX3JjdlwiLFxuICAgIFwiZXNwaW50Y3BfY2xvc2VcIixcbiAgICBcInhmcm1fb3V0cHV0XCIsXG4gICAgXCJ4ZnJtX2FkZF9zYVwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXFx1MDAzZWRldmAgaW4gYGhhbmRsZV9lc3BgIChFU1AgaW4gVENQKSwgcmVwbGFjZXMgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAsIHJld3JpdGVzIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgcmVtb3ZlcyBhIGRvdWJsZS1mcmVlIGluIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YCwgYW5kIGZpeGVzIGEgZmllbGQgY2hlY2sgaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YC4gVGhlc2UgYXJlIGFsbCByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBhbmQgSVBzZWMgbG9naWMsIHdoaWNoIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjA4LjY5NTc1NjA1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMjIyOTQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTA6MzQ6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWg2LmMgYi9uZXQvaXB2Ni9haDYuY1xcbmluZGV4IDc2ZjdhMmRlOTEwOGUuLmM5NmY3ZTBkMGE0ODEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcXG4rKysgYi9uZXQvaXB2Ni9haDYuY1xcbkBAIC0yMzIsMjYgKzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlc1xcbiAgKlxcdFJlYXJyYW5nZSB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpbiBAaXBoIGFuZCB0aGUgYWRkcmVzc2VzIGluIEBydGhkclxcbiAgKlxcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXFxuICAqXFx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBpZiBzZWdtZW50c19sZWZ0IGV4Y2VlZHMgdGhlIG51bWJlciBvZlxcbisgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi5cXG4gICovXFxuLXN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXFxuK3N0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4ge1xcbi1cXHRpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XFxuK1xcdHVuc2lnbmVkIGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcXG4gXFx0c3RydWN0IGluNl9hZGRyICphZGRycztcXG4gXFx0c3RydWN0IGluNl9hZGRyIGZpbmFsX2FkZHI7XFxuIFxcbiBcXHRzZWdtZW50c19sZWZ0ID0gcnRoZHItXFx1MDAzZXNlZ21lbnRzX2xlZnQ7XFxuIFxcdGlmIChzZWdtZW50c19sZWZ0ID09IDApXFxuLVxcdFxcdHJldHVybjtcXG4tXFx0cnRoZHItXFx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdC8qIFRoZSB2YWx1ZSBvZiBydGhkci1cXHUwMDNlaGRybGVuIGhhcyBiZWVuIHZlcmlmaWVkIGVpdGhlciBieSB0aGUgc3lzdGVtXFxuLVxcdCAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nXFxuLVxcdCAqIHBhY2tldHMuICBTbyB3ZSBjYW4gYXNzdW1lIHRoYXQgaXQgaXMgZXZlbiBhbmQgdGhhdCBzZWdtZW50cyBpc1xcbi1cXHQgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VnbWVudHNfbGVmdC5cXG4tXFx0ICpcXG4tXFx0ICogRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyBvcHRpb24gaXMgb2YgdHlwZSAwLlxcbitcXHQvKiBSYXcgbG9jYWxseSBnZW5lcmF0ZWQgcGFja2V0cyBjYW4gcmVhY2ggQUg2IHdpdGhvdXQgdGhlIGludmFyaWFudFxcbitcXHQgKiByZXF1aXJlZCBieSB0aGUgcnQwLXN0eWxlIGFkZHJlc3MgcmVhcnJhbmdlbWVudCBiZWxvdy5cXG4gXFx0ICovXFxuIFxcdHNlZ21lbnRzID0gcnRoZHItXFx1MDAzZWhkcmxlbiBcXHUwMDNlXFx1MDAzZSAxO1xcbitcXHRpZiAoc2VnbWVudHNfbGVmdCBcXHUwMDNlIHNlZ21lbnRzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJ0aGRyLVxcdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcXG4gXFxuIFxcdGFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS1cXHUwMDNlYWRkcjtcXG4gXFx0ZmluYWxfYWRkciA9IGFkZHJzW3NlZ21lbnRzIC0gMV07XFxuQEAgLTI2MSw2ICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxcbiBcXG4gXFx0YWRkcnNbMF0gPSBpcGgtXFx1MDAzZWRhZGRyO1xcbiBcXHRpcGgtXFx1MDAzZWRhZGRyID0gZmluYWxfYWRkcjtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXFxuQEAgLTI3Myw2ICsyNzcsNyBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXFxuIFxcdH0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07XFxuIFxcdGNoYXIgKmVuZCA9IGV4dGhkci5yYXcgKyBsZW47XFxuIFxcdGludCBuZXh0aGRyID0gaXBoLVxcdTAwM2VuZXh0aGRyO1xcbitcXHRpbnQgZXJyO1xcbiBcXG4gXFx0ZXh0aGRyLmlwaCsrO1xcbiBcXG5AQCAtMjkyLDcgKzI5Nyw5IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRjYXNlIE5FWFRIRFJfUk9VVElORzpcXG4tXFx0XFx0XFx0aXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcXG4rXFx0XFx0XFx0ZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcXG4rXFx0XFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRkZWZhdWx0OlxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jIGIvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xcbmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xcbisrKyBiL25ldC9pcHY2L3hmcm02X2lucHV0LmNcXG5AQCAtMjQ3LDcgKzI0Nyw3IEBAIGludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcXG4gXFx0XFx0Z290byBkcm9wO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoMSArIHNwLVxcdTAwM2VsZW4gPT0gWEZSTV9NQVhfREVQVEgpIHtcXG4rXFx0aWYgKHNwLVxcdTAwM2VsZW4gXFx1MDAzZT0gWEZSTV9NQVhfREVQVEgpIHtcXG4gXFx0XFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOQlVGRkVSRVJST1IpO1xcbiBcXHRcXHRnb3RvIGRyb3A7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0vZXNwaW50Y3AuYyBiL25ldC94ZnJtL2VzcGludGNwLmNcXG5pbmRleCAzNzRlMWI5NjQ0MzgzLi42NzRhZWRjNWFmNWEyIDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL2VzcGludGNwLmNcXG4rKysgYi9uZXQveGZybS9lc3BpbnRjcC5jXFxuQEAgLTM3LDYgKzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxcbiBcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHNvY2tfbmV0KHNrKSwgc2tiLVxcdTAwM2Vza2JfaWlmKTtcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbiBcXHRpZiAoc2stXFx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNilcXG5AQCAtNDUsNiArNTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG4gI2VuZGlmXFxuIFxcdFxcdHhmcm00X3Jjdl9lbmNhcChza2IsIElQUFJPVE9fRVNQLCAwLCBUQ1BfRU5DQVBfRVNQSU5UQ1ApO1xcbiBcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4rb3V0OlxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG5AQCAtNTE1LDcgKzUyMSw4IEBAIHN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxcbiBcXHRzdHJwX3N0b3AoXFx1MDAyNmN0eC1cXHUwMDNlc3RycCk7XFxuIFxcbiBcXHRzay1cXHUwMDNlc2tfcHJvdCA9IFxcdTAwMjZ0Y3BfcHJvdDtcXG4tXFx0YmFycmllcigpO1xcbitcXG4rXFx0c3luY2hyb25pemVfcmN1KCk7XFxuIFxcbiBcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2Y3R4LVxcdTAwM2V3b3JrKTtcXG4gXFx0c3RycF9kb25lKFxcdTAwMjZjdHgtXFx1MDAzZXN0cnApO1xcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuaW5kZXggZWIxYjZmNjc3MzllMS4uNWNkNmQ0MzE2NGRiYyAxMDA2NDRcXG4tLS0gYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuQEAgLTE1NSwyNSArMTU1LDUwIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXFxuIFxcdH1cXG4gfVxcbiBcXG4rZW51bSB7XFxuK1xcdE5BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRSA9IDE2LFxcbitcXHROQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwgPSAxLFxcbit9O1xcbitcXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xcbitcXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqYmF0Y2hbTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFXTtcXG4rXFx0dW5zaWduZWQgaW50IG5yO1xcbiBcXHR0aW1lNjRfdCBuZXh0X3J1bjtcXG4gXFx0dGltZTY0X3Qgbm93O1xcbiB9O1xcbiBcXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4rc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxuIHtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcXG4rXFxuK1xcdGlmICghUkVBRF9PTkNFKHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdGlmIChjdHgtXFx1MDAzZW5yID09IEFSUkFZX1NJWkUoY3R4LVxcdTAwM2ViYXRjaCkpXFxuK1xcdFxcdHJldHVybiBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEw7XFxuK1xcbitcXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XFxuK1xcdGN0eC1cXHUwMDNlYmF0Y2hbY3R4LVxcdTAwM2VucisrXSA9IHg7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbitcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxcbit7XFxuIFxcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmUga2E7XFxuLVxcdHRpbWU2NF90IG5leHRfcnVuO1xcbitcXHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XFxuIFxcdHUzMiBpbnRlcnZhbDtcXG4gXFx0aW50IGRlbHRhO1xcbiBcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGlmICh4LVxcdTAwM2VrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4gXFx0aW50ZXJ2YWwgPSB4LVxcdTAwM2VuYXRfa2VlcGFsaXZlX2ludGVydmFsO1xcbiBcXHRpZiAoIWludGVydmFsKVxcbi1cXHRcXHRyZXR1cm4gMDtcXG4tXFxuLVxcdHNwaW5fbG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0ZGVsdGEgPSAoaW50KShjdHgtXFx1MDAzZW5vdyAtIHgtXFx1MDAzZWxhc3R1c2VkKTtcXG4gXFx0aWYgKGRlbHRhIFxcdTAwM2MgaW50ZXJ2YWwpIHtcXG5AQCAtMTg3LDE0ICsyMTIsMTQgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4gXFx0XFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xcbiBcXHR9XFxuIFxcbi1cXHRzcGluX3VubG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuK291dDpcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxcbiBcXHRcXHRuYXRfa2VlcGFsaXZlX3NlbmQoXFx1MDAyNmthKTtcXG4gXFxuLVxcdGlmICghY3R4LVxcdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcXHUwMDNjIGN0eC1cXHUwMDNlbmV4dF9ydW4pXFxuK1xcdGlmIChuZXh0X3J1biBcXHUwMDI2XFx1MDAyNiAoIWN0eC1cXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXFx1MDAzYyBjdHgtXFx1MDAzZW5leHRfcnVuKSlcXG4gXFx0XFx0Y3R4LVxcdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xcbi1cXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5AQCAtMjAyLDEzICsyMjcsMjMgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbiBcXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldDtcXG4rXFx0aW50IGVyciwgaTtcXG4gXFxuIFxcdGN0eC5uZXh0X3J1biA9IDA7XFxuIFxcdGN0eC5ub3cgPSBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7XFxuIFxcbiBcXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XFxuIFxcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFxcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XFxuLVxcdHhmcm1fc3RhdGVfd2FsayhuZXQsIFxcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcXHUwMDI2Y3R4KTtcXG4rXFx0ZG8ge1xcbitcXHRcXHRjdHgubnIgPSAwO1xcbitcXHRcXHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFxcdTAwMjZjdHgpO1xcbitcXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjdHgubnI7IGkrKykge1xcbitcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgXFx1MDAyNmN0eCk7XFxuK1xcdFxcdFxcdHhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuK1xcdH0gd2hpbGUgKGVyciA9PSBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwpO1xcbiBcXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcXHUwMDI2d2FsaywgbmV0KTtcXG4gXFx0aWYgKGN0eC5uZXh0X3J1bilcXG4gXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX291dHB1dC5jIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xcbmluZGV4IGNjMzVjMmZjYmJlMDkuLmUzMDViYTMyZTM1NmIgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmNcXG5AQCAtNjM2LDEwICs2MzYsOCBAQCBzdGF0aWMgaW50IHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4gXFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG4gXFxuIFxcdGVyciA9IHNrYl9kc3Qoc2tiKS1cXHUwMDNlb3BzLVxcdTAwM2Vsb2NhbF9vdXQobmV0LCBzaywgc2tiKTtcXG4tXFx0aWYgKHVubGlrZWx5KGVyciAhPSAxKSkge1xcbi1cXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0aWYgKHVubGlrZWx5KGVyciAhPSAxKSlcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4tXFx0fVxcbiBcXG4gXFx0LyogSW4gdHJhbnNwb3J0IG1vZGUsIG5ldHdvcmsgZGVzdGluYXRpb24gaXNcXG4gXFx0ICogZGlyZWN0bHkgcmVhY2hhYmxlLCB3aGlsZSBpbiB0dW5uZWwgbW9kZSxcXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xcbmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xcbkBAIC05NDAsNyArOTQwLDcgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdGlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoXFx1MDAyNngtXFx1MDAzZWFhbGcsIFxcdTAwMjZ4LVxcdTAwM2Vwcm9wcy5hYWxnbyxcXG4gXFx0XFx0XFx0XFx0ICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF9UUlVOQ10sIGV4dGFjaykpKVxcbiBcXHRcXHRnb3RvIGVycm9yO1xcbi1cXHRpZiAoIXgtXFx1MDAzZXByb3BzLmFhbGdvKSB7XFxuK1xcdGlmICgheC1cXHUwMDNlYWFsZykge1xcbiBcXHRcXHRpZiAoKGVyciA9IGF0dGFjaF9hdXRoKFxcdTAwMjZ4LVxcdTAwM2VhYWxnLCBcXHUwMDI2eC1cXHUwMDNlcHJvcHMuYWFsZ28sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF0sIGV4dGFjaykpKVxcbiBcXHRcXHRcXHRnb3RvIGVycm9yO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoxMC4zMjkwMTAwNzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTgyNDE5Njc5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVDZfQUhcIixcbiAgICBcIklORVRfRVNQSU5UQ1BcIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoNl9pbnB1dFwiLFxuICAgIFwiYWg2X291dHB1dFwiLFxuICAgIFwieGZybTZfaW5wdXRfYWRkclwiLFxuICAgIFwiZXNwaW50Y3BfcmN2XCIsXG4gICAgXCJlc3BpbnRjcF9jbG9zZVwiLFxuICAgIFwieGZybV9vdXRwdXRcIixcbiAgICBcInhmcm1fYWRkX3NhXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29udGFpbnMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUHY2IGFuZCBJUHNlYy9YRlJNIG5ldHdvcmtpbmcgc3RhY2suIEl0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IsIGZpeGVzIGEgZGVwdGggY2hlY2sgaW4gYHhmcm02X2lucHV0X2FkZHJgLCBhZGRzIGEgTlVMTCBwb2ludGVyIGNoZWNrIGZvciBgc2tiLVxcdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNDA2M2UyY2MwYzE5MGU1MGExYzlkNTMzY2NkOTkwMThhOWM3NmVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTA6MzQ6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9haDYuYyBiL25ldC9pcHY2L2FoNi5jXG5pbmRleCA3NmY3YTJkZTkxMDhlLi5jOTZmN2UwZDBhNDgxIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcbisrKyBiL25ldC9pcHY2L2FoNi5jXG5AQCAtMjMyLDI2ICsyMzIsMjggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0UmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyXG4gICpcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXG4gICpcdFNlZSBBcHBlbmRpeCBBMiBvZiBSRkMgMjQwMiBmb3IgZGV0YWlscy5cbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCAtRUlOVkFMIGlmIHNlZ21lbnRzX2xlZnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mXG4rICogYWRkcmVzc2VzIGRlc2NyaWJlZCBieSBoZHJsZW4uXG4gICovXG4tc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbitzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4ge1xuLVx0aW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xuK1x0dW5zaWduZWQgaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xuIFx0c3RydWN0IGluNl9hZGRyICphZGRycztcbiBcdHN0cnVjdCBpbjZfYWRkciBmaW5hbF9hZGRyO1xuIFxuIFx0c2VnbWVudHNfbGVmdCA9IHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQ7XG4gXHRpZiAoc2VnbWVudHNfbGVmdCA9PSAwKVxuLVx0XHRyZXR1cm47XG4tXHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBUaGUgdmFsdWUgb2YgcnRoZHItXHUwMDNlaGRybGVuIGhhcyBiZWVuIHZlcmlmaWVkIGVpdGhlciBieSB0aGUgc3lzdGVtXG4tXHQgKiBjYWxsIGlmIGl0IGlzIGxvY2FsbHkgZ2VuZXJhdGVkLCBvciBieSBpcHY2X3J0aGRyX3JjdigpIGZvciBpbmNvbWluZ1xuLVx0ICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzXG4tXHQgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VnbWVudHNfbGVmdC5cbi1cdCAqXG4tXHQgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuXG4rXHQvKiBSYXcgbG9jYWxseSBnZW5lcmF0ZWQgcGFja2V0cyBjYW4gcmVhY2ggQUg2IHdpdGhvdXQgdGhlIGludmFyaWFudFxuK1x0ICogcmVxdWlyZWQgYnkgdGhlIHJ0MC1zdHlsZSBhZGRyZXNzIHJlYXJyYW5nZW1lbnQgYmVsb3cuXG4gXHQgKi9cbiBcdHNlZ21lbnRzID0gcnRoZHItXHUwMDNlaGRybGVuIFx1MDAzZVx1MDAzZSAxO1xuK1x0aWYgKHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuIFxuIFx0YWRkcnMgPSAoKHN0cnVjdCBydDBfaGRyICopcnRoZHIpLVx1MDAzZWFkZHI7XG4gXHRmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTtcbkBAIC0yNjEsNiArMjYzLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiBcbiBcdGFkZHJzWzBdID0gaXBoLVx1MDAzZWRhZGRyO1xuIFx0aXBoLVx1MDAzZWRhZGRyID0gZmluYWxfYWRkcjtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5AQCAtMjczLDYgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbiBcdH0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07XG4gXHRjaGFyICplbmQgPSBleHRoZHIucmF3ICsgbGVuO1xuIFx0aW50IG5leHRoZHIgPSBpcGgtXHUwMDNlbmV4dGhkcjtcbitcdGludCBlcnI7XG4gXG4gXHRleHRoZHIuaXBoKys7XG4gXG5AQCAtMjkyLDcgKzI5Nyw5IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBORVhUSERSX1JPVVRJTkc6XG4tXHRcdFx0aXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbitcdFx0XHRlcnIgPSBpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xuK1x0XHRcdGlmIChlcnIpXG4rXHRcdFx0XHRyZXR1cm4gZXJyO1xuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG5pbmRleCA4OWQwNDQzYjUzMDczLi4wN2VkZWYyNTg5ODQ0IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuQEAgLTI0Nyw3ICsyNDcsNyBAQCBpbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsXG4gXHRcdGdvdG8gZHJvcDtcbiBcdH1cbiBcbi1cdGlmICgxICsgc3AtXHUwMDNlbGVuID09IFhGUk1fTUFYX0RFUFRIKSB7XG4rXHRpZiAoc3AtXHUwMDNlbGVuIFx1MDAzZT0gWEZSTV9NQVhfREVQVEgpIHtcbiBcdFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOQlVGRkVSRVJST1IpO1xuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0vZXNwaW50Y3AuYyBiL25ldC94ZnJtL2VzcGludGNwLmNcbmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS9lc3BpbnRjcC5jXG4rKysgYi9uZXQveGZybS9lc3BpbnRjcC5jXG5AQCAtMzcsNiArMzcsMTEgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2VzcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2spXG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRza2ItXHUwMDNlZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBza2ItXHUwMDNlc2tiX2lpZik7XG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0WEZSTV9JTkNfU1RBVFMoc29ja19uZXQoc2spLCBMSU5VWF9NSUJfWEZSTUlORVJST1IpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4gXHRpZiAoc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuQEAgLTQ1LDYgKzUwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2VzcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2spXG4gI2VuZGlmXG4gXHRcdHhmcm00X3Jjdl9lbmNhcChza2IsIElQUFJPVE9fRVNQLCAwLCBUQ1BfRU5DQVBfRVNQSU5UQ1ApO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4rb3V0OlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuQEAgLTUxNSw3ICs1MjEsOCBAQCBzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcbiBcdHN0cnBfc3RvcChcdTAwMjZjdHgtXHUwMDNlc3RycCk7XG4gXG4gXHRzay1cdTAwM2Vza19wcm90ID0gXHUwMDI2dGNwX3Byb3Q7XG4tXHRiYXJyaWVyKCk7XG4rXG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbiBcbiBcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNmN0eC1cdTAwM2V3b3JrKTtcbiBcdHN0cnBfZG9uZShcdTAwMjZjdHgtXHUwMDNlc3RycCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuaW5kZXggZWIxYjZmNjc3MzllMS4uNWNkNmQ0MzE2NGRiYyAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuQEAgLTE1NSwyNSArMTU1LDUwIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gXHR9XG4gfVxuIFxuK2VudW0ge1xuK1x0TkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFID0gMTYsXG4rXHROQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwgPSAxLFxuK307XG4rXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xuK1x0c3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07XG4rXHR1bnNpZ25lZCBpbnQgbnI7XG4gXHR0aW1lNjRfdCBuZXh0X3J1bjtcbiBcdHRpbWU2NF90IG5vdztcbiB9O1xuIFxuLXN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4rc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4ge1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcbitcbitcdGlmICghUkVBRF9PTkNFKHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbCkpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0aWYgKGN0eC1cdTAwM2VuciA9PSBBUlJBWV9TSVpFKGN0eC1cdTAwM2ViYXRjaCkpXG4rXHRcdHJldHVybiBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEw7XG4rXG4rXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XG4rXHRjdHgtXHUwMDNlYmF0Y2hbY3R4LVx1MDAzZW5yKytdID0geDtcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcbit7XG4gXHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTtcbi1cdHRpbWU2NF90IG5leHRfcnVuO1xuK1x0dGltZTY0X3QgbmV4dF9ydW4gPSAwO1xuIFx0dTMyIGludGVydmFsO1xuIFx0aW50IGRlbHRhO1xuIFxuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rXG4rXHRpZiAoeC1cdTAwM2VrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpXG4rXHRcdGdvdG8gb3V0O1xuK1xuIFx0aW50ZXJ2YWwgPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7XG4gXHRpZiAoIWludGVydmFsKVxuLVx0XHRyZXR1cm4gMDtcbi1cbi1cdHNwaW5fbG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuQEAgLTE4NywxNCArMjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRcdHNlbmRfa2VlcGFsaXZlID0gdHJ1ZTtcbiBcdH1cbiBcbi1cdHNwaW5fdW5sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rb3V0OlxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiBcbiBcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiBcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiBcbi1cdGlmICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pXG4rXHRpZiAobmV4dF9ydW4gXHUwMDI2XHUwMDI2ICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pKVxuIFx0XHRjdHgtXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcbi1cdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTIwMiwxMyArMjI3LDIzIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCBjdHg7XG4gXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4rXHRpbnQgZXJyLCBpO1xuIFxuIFx0Y3R4Lm5leHRfcnVuID0gMDtcbiBcdGN0eC5ub3cgPSBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7XG4gXG4gXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfaW5pdChcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XG4tXHR4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcdTAwMjZjdHgpO1xuK1x0ZG8ge1xuK1x0XHRjdHgubnIgPSAwO1xuK1x0XHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgXHUwMDI2Y3R4KTtcbitcdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjdHgubnI7IGkrKykge1xuK1x0XHRcdG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoY3R4LmJhdGNoW2ldLCBcdTAwMjZjdHgpO1xuK1x0XHRcdHhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7XG4rXHRcdH1cbitcdFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4rXHR9IHdoaWxlIChlcnIgPT0gTkFUX0tFRVBBTElWRV9CQVRDSF9GVUxMKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19kb25lKFx1MDAyNndhbGssIG5ldCk7XG4gXHRpZiAoY3R4Lm5leHRfcnVuKVxuIFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMgYi9uZXQveGZybS94ZnJtX291dHB1dC5jXG5pbmRleCBjYzM1YzJmY2JiZTA5Li5lMzA1YmEzMmUzNTZiIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xuKysrIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xuQEAgLTYzNiwxMCArNjM2LDggQEAgc3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4gXHRuZl9yZXNldF9jdChza2IpO1xuIFxuIFx0ZXJyID0gc2tiX2RzdChza2IpLVx1MDAzZW9wcy1cdTAwM2Vsb2NhbF9vdXQobmV0LCBzaywgc2tiKTtcbi1cdGlmICh1bmxpa2VseShlcnIgIT0gMSkpIHtcbi1cdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRpZiAodW5saWtlbHkoZXJyICE9IDEpKVxuIFx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuIFxuIFx0LyogSW4gdHJhbnNwb3J0IG1vZGUsIG5ldHdvcmsgZGVzdGluYXRpb24gaXNcbiBcdCAqIGRpcmVjdGx5IHJlYWNoYWJsZSwgd2hpbGUgaW4gdHVubmVsIG1vZGUsXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuaW5kZXggZDZkYjYzMzA0YmE2Yi4uNjI2NmE5MmNmMzAyMCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXG4rKysgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuQEAgLTk0MCw3ICs5NDAsNyBAQCBzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcbiBcdGlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoXHUwMDI2eC1cdTAwM2VhYWxnLCBcdTAwMjZ4LVx1MDAzZXByb3BzLmFhbGdvLFxuIFx0XHRcdFx0ICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF9UUlVOQ10sIGV4dGFjaykpKVxuIFx0XHRnb3RvIGVycm9yO1xuLVx0aWYgKCF4LVx1MDAzZXByb3BzLmFhbGdvKSB7XG4rXHRpZiAoIXgtXHUwMDNlYWFsZykge1xuIFx0XHRpZiAoKGVyciA9IGF0dGFjaF9hdXRoKFx1MDAyNngtXHUwMDNlYWFsZywgXHUwMDI2eC1cdTAwM2Vwcm9wcy5hYWxnbyxcbiBcdFx0XHRcdCAgICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF0sIGV4dGFjaykpKVxuIFx0XHRcdGdvdG8gZXJyb3I7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoxMC4zMjkwMTE5ODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDYyNzY0NDMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBTZXJpZXMgaW4gdGhlIE5ldHdvcmsgU3RhY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2ggc2VyaWVzLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIHNldCBvZiBtb2RpZmljYXRpb25zIHRvdWNoaW5nIHNldmVyYWwga2V5IGZpbGVzIHdpdGhpbiBgbmV0L2lwdjYvYCBhbmQgYG5ldC94ZnJtL2AsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHJldmlldyB3aXRoIGEgZnV6emluZyBzdHJhdGVneSBpbiBtaW5kLiBUaGUgYWZmZWN0ZWQgZmlsZXMgYXJlOiBgYWg2LmNgLCBgeGZybTZfaW5wdXQuY2AsIGBlc3BpbnRjcC5jYCwgYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgYHhmcm1fb3V0cHV0LmNgLCBhbmQgYHhmcm1fdXNlci5jYC5cblxuTXkgaW5pdGlhbCByZWFkIHRlbGxzIG1lIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGxhcmdlbHkgZnVuY3Rpb25hbCwgd2hpY2ggbWVhbnMgd2UgY2FuIGxpa2VseSB0cmlnZ2VyIGEgcmFuZ2Ugb2YgbmV3IGV4ZWN1dGlvbiBwYXRocy5cblxuSGVyZSdzIHRoZSBnaXN0IG9mIHdoYXQncyBoYXBwZW5pbmc6XG5cbjEuICAqKmBuZXQvaXB2Ni9haDYuY2A6KiogVGhlIHJldHVybiB0eXBlIG9mIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgaGFzIGJlZW4gY2hhbmdlZCB0byBgaW50YCwgYW5kIHRoZXJlJ3MgYSBuZXcgY2hlY2sgZm9yIGEgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbiB3aXRoIGAtRUlOVkFMYCwgd2hpY2ggaXMgdGhlbiBwcm9wYWdhdGVkIGJ5IGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2AuIFRoaXMgZXJyb3IgaGFuZGxpbmcgY2hhbmdlIHNob3VsZCBiZSBpbnZlc3RpZ2F0ZWQ7IHNwZWNpZmljYWxseSwgaWYgdGhlIGVycm9yIGNvbmRpdGlvbnMgYXJlIHJlYXNvbmFibGUsIGdpdmVuIHRoYXQgaXQgYXBwZWFycyB0aGUgY2FsbGVyIGRpZCBub3QgaGFuZGxlIGEgZmFpbHVyZSBjYXNlLlxuXG4yLiAgKipgbmV0L2lwdjYveGZybTZfaW5wdXQuY2A6KiogV2UndmUgZ290IGEgc3VidGxlIGNoYW5nZSBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIHN3aXRjaGluZyBhbiBlcXVhbGl0eSBjaGVjayB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbCBjaGVjay4gVGhpcyBjb3VsZCBiZSBhIGJvdW5kYXJ5IGNvbmRpdGlvbiBmaXggb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBpZiBub3QgaGFuZGxlZCByaWdodC5cblxuMy4gICoqYG5ldC94ZnJtL2VzcGludGNwLmNgOioqIE51bGwgYHNrYi1cdTAwM2VkZXZgIGNoZWNrcyBhZGRlZCB0byBgaGFuZGxlX2VzcGAgdG8gZHJvcCBwYWNrZXRzLCBhbmQgdGhlIHJlcGxhY2VtZW50IG9mIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgIG1ha2VzIG1lIHRoaW5rIHRoaXMgbWlnaHQgYmUgYSBtZW1vcnktc2FmZXR5IGltcHJvdmVtZW50LiBMZXQncyBtYWtlIHN1cmUgdGhpcyBSQ1UgY2hhbmdlIGlzIGNvcnJlY3QuXG5cbjQuICAqKmBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2A6KiogVGhlIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGhhcyBiZWVuIHJld3JpdHRlbiB1c2luZyBhIGJhdGNoaW5nIGFwcHJvYWNoLiBEZWZpbml0ZWx5IGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJ1dCBhbHdheXMgd29ydGggY2hlY2tpbmcgZm9yIHJhY2VzIGluIGJhdGNoaW5nIGltcGxlbWVudGF0aW9ucy5cblxuNS4gICoqYG5ldC94ZnJtL3hmcm1fb3V0cHV0LmNgOioqIFRoZSBjb25kaXRpb25hbCBga2ZyZWVfc2tiYCBjYWxsIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIHdoaWNoIG1lYW5zIHRoZSBmdW5jdGlvbiBpcyBub3cgYXNzdW1pbmcgdGhhdCBhIGZhaWxlZCBgbG9jYWxfb3V0YCBjYWxsIHdpbGwgZnJlZSB0aGUgU0tCLiBUaGlzIGlzIGltcG9ydGFudCB0byB2ZXJpZnkgYmVjYXVzZSBkb3VibGUtZnJlZXMgYXJlIGNvbW1vbiBpbiB0aGVzZSBjb250ZXh0cy5cblxuNi4gICoqYG5ldC94ZnJtL3hmcm1fdXNlci5jYDoqKiBBIHNtYWxsIGNoYW5nZSBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLCBzd2l0Y2hpbmcgYSBudWxsIGNoZWNrIGZvciBgeC1cdTAwM2Vwcm9wcy5hYWxnb2AgdG8gYHgtXHUwMDNlYWFsZ2AuIFRoaXMgYXBwZWFycyB0byBiZSBhIGJ1ZyBmaXguXG5cblRoaXMgYWxsIHBvaW50cyB0byBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgc28gdGhpcyBkZWZpbml0ZWx5IG1lcml0cyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIEdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJ2xsIGlkZW50aWZ5IHNvbWUgZm9jdXMgc3ltYm9scyBhbmQgdGhlaXIgY29udGV4dC4gV2UgY2FuIHVzZSB0aGVzZSBzeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXIuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgSSdsbCBsb29rIGF0IGluIGRldGFpbDpcblxuKiAgIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgKHNpbmNlIHRoZSBmdW5jdGlvbiBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGlzIGNhbGxlZCBieSB0aGVzZSBmdW5jdGlvbnMuKVxuKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYFxuKiAgIGBlc3BpbnRjcF9jbG9zZWBcbiogICBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAgKG9yIG1heWJlIGB4ZnJtX291dHB1dGA/KVxuKiAgIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGBcblxuTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gc2VhcmNoIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZWlyIHZpc2liaWxpdHksIGNhbGxzaXRlcywgYW5kIGNvbnRleHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6MjAuOTU2NjYyMThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNTE0ODgyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvYWg2LmM9MjM5PXN0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTI2OS1cXG5uZXQvaXB2Ni9haDYuYzoyNzA6c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbm5ldC9pcHY2L2FoNi5jLTI3MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjI0LjE3MTgxNjA1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NDQyNjMxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIElQdjYgTXV0YWJsZSBPcHRpb25zIENsZWFyaW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgd2hlcmUgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBpcyBiZWluZyB1c2VkLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBzdWJ0bGUgYnVncyByZWxhdGVkIHRvIGhvdyBtdXRhYmxlIG9wdGlvbnMgYXJlIGhhbmRsZWQuIEEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjYWxsIHNpdGVzIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaW1lIHRvIGdldCBpbnRvIGBhaDYuY2AgYW5kIGZpZ3VyZSBvdXQgd2hvJ3MgY2FsbGluZyB0aGF0IGZ1bmN0aW9uLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MTksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoyNi44MTYwODMxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcwNjU0MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2FoNi5jPTIzOT1zdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXFxuLS1cXG5uZXQvaXB2Ni9haDYuYy0yNjktXFxubmV0L2lwdjYvYWg2LmM6MjcwOnN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG5uZXQvaXB2Ni9haDYuYy0yNzEte1xcbi0tXFxubmV0L2lwdjYvYWg2LmM9MzUwPXN0YXRpYyBpbnQgYWg2X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTQxNi1cXHRpZiAoZXh0bGVuKSB7XFxubmV0L2lwdjYvYWg2LmM6NDE3OlxcdFxcdGVyciA9IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHRvcF9pcGgsXFxubmV0L2lwdjYvYWg2LmMtNDE4LVxcdFxcdFxcdFxcdFxcdFxcdCBleHRsZW4gLSBzaXplb2YoKmlwaF9leHQpICtcXG4tLVxcbm5ldC9pcHY2L2FoNi5jPTUxOT1zdGF0aWMgaW50IGFoNl9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTYxMy1cXG5uZXQvaXB2Ni9haDYuYzo2MTQ6XFx0ZXJyID0gaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoaXA2aCwgaGRyX2xlbiwgWEZSTV9QT0xJQ1lfSU4pO1xcbm5ldC9pcHY2L2FoNi5jLTYxNS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoyOS4yODY3NDMwODRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyMjcyNzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEVudHJ5IFBvaW50cyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkga2V5aW5nIGluIG9uIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAuIFRob3NlIGFyZSwgd2l0aG91dCBhIGRvdWJ0LCB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHMgaW50byB0aGlzIHBhcnQgb2YgdGhlIHN5c3RlbS4gVGhleSdyZSB3aGVyZSB0aGUgZGF0YSBmbG93IGJlZ2lucyBhbmQgZW5kcywgbWFraW5nIHRoZW0gdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEdpdmVuIHRoZSBjb250ZXh0LCBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBoeXBvdGhlc2VzIGFib3V0IHRoZSBuYXR1cmUgb2YgdGhpcyBkYXRhIGFuZCBwb3RlbnRpYWwgcHJvY2Vzc2luZyB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zLCBidXQgYmVmb3JlIGRpZ2dpbmcgZGVlcGVyLCBJIHdhbnQgdG8gY2xhcmlmeSBzb21lIGFzc3VtcHRpb25zLlxuXG5Ob3csIG15IGF0dGVudGlvbiBoYXMgc2hpZnRlZCB0byBgeGZybTZfaW5wdXRfYWRkcmAuIEkgd2FudCB0byB2ZXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRob3NlIGZ1bmN0aW9ucy4gSSB3YW50IHRvIGNoZWNrIHRvIGNvbmZpcm0gdGhhdCB0aGUgaW5wdXQgYW5kIG91dHB1dCBmdW5jdGlvbnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDozMi44ODkwMTg3NTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMzAyMjA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgeGZybTZfaW5wdXRfYWRkclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZnJtLmg9MTg0OD1pbnQgeGZybTZfcmN2KHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoxODQ5OmludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTg1MC1cXHRcXHQgICAgIHhmcm1fYWRkcmVzc190ICpzYWRkciwgdTggcHJvdG8pO1xcbi0tXFxubmV0L2lwdjYveGZybTZfaW5wdXQuYz0yMzU9RVhQT1JUX1NZTUJPTCh4ZnJtNl9yY3YpO1xcbm5ldC9pcHY2L3hmcm02X2lucHV0LmM6MjM2OmludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jLTIzNy1cXHRcXHQgICAgIHhmcm1fYWRkcmVzc190ICpzYWRkciwgdTggcHJvdG8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjM2LjAyMjA4NjI1M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODM5NDAzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGVzZSBwb2ludHM6XG5cbioqRXhhbWluaW5nIE5ldHdvcmsgU2VjdXJpdHkgSW5mcmFzdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBgeGZybTZfaW5wdXRfYWRkcmAgaXMgZXhwbGljaXRseSBleHBvcnRlZC4gVGhhdCB0ZWxscyBtZSBpdCdzIGRlc2lnbmVkIHRvIGJlIGFjY2Vzc2VkIGV4dGVybmFsbHksIGxpa2VseSBieSBzb21lIG90aGVyIG1vZHVsZSBvciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc3RhY2suIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQncyBiZWluZyB1c2VkIGFuZCwgY3JpdGljYWxseSwgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIGRlcGVuZGVuY2llcyB0aWVkIHRvIGl0LiBUaGUgZXhwb3J0IGl0c2VsZiBpc24ndCBpbmhlcmVudGx5IGEgcHJvYmxlbSwgYnV0IGl0IGRlbWFuZHMgc2NydXRpbnkuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGhvdyB0aGlzIG1pZ2h0IHBsYXkgd2l0aCB0aGUgVENQIGNvbm5lY3Rpb24gY2xvc2luZyBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZXNwaW50Y3BfY2xvc2VgIHNwZWNpZmljYWxseS4gSXQgc2VlbXMgbGlrZSB0aGUgY29ubmVjdGlvbiBpcyB0cnlpbmcgdG8gY2xvc2Ugc28gbGV0J3Mgc3RhcnQgd2l0aCBjaGVja2luZyB0aGUgY29kZSB0byBlbnN1cmUgYGVzcGludGNwX2Nsb3NlYCBpcyBjb3JyZWN0bHkgbWFuYWdpbmcgdGhlIGFkZHJlc3MuIENvdWxkIHRoZXJlIGJlIHNvbWUgaW50ZXJhY3Rpb24gd2hlcmUgYWRkcmVzcyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGB4ZnJtNl9pbnB1dF9hZGRyYCBpcyBtaXNoYW5kbGVkIGR1cmluZyBjb25uZWN0aW9uIHRlcm1pbmF0aW9uPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgb3IgaW1wcm9wZXIgZnJlZXMgaWYgdGhhdCdzIHRoZSByZWxldmFudCBjb2RlIHNlY3Rpb24uIEFueSBpbXByb3BlciB1c2UgdGhlcmUgY291bGQgbGVhZCB0byBleHBsb2l0YWJsZSBmbGF3cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgwMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjM5LjQwNjAzMDI1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxMDg4MTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgZXNwaW50Y3BfY2xvc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz01MDE9c3RhdGljIHZvaWQgZXNwaW50Y3BfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cXG5uZXQveGZybS9lc3BpbnRjcC5jOjUxNjpzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjQyLjYxNjkyMjg5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcxMjgyODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIENsb3N1cmUgb2YgYGVzcGludGNwX2Nsb3NlYCoqXG5cbk9rYXksIHNvIGBlc3BpbnRjcF9jbG9zZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIEkgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IGZpbmRpbmcgaXRzIHVzYWdlcy4gQmVjYXVzZSBpdCdzIHN0YXRpYywgaXQncyBub3QgZ29pbmcgdG8gYmUgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGNvbXBpbGF0aW9uIHVuaXQuIFRoZXJlZm9yZSwgYSBzaW1wbGUgZ2xvYmFsIHNlYXJjaCBpc24ndCBnb2luZyB0byBjdXQgaXQuIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgdW5kZXJzdGFuZCB0aGUgc2NvcGUgY29uc3RyYWludHMuIE15IGdvYWwgbm93IGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgd2l0aGluIHRoZSBzY29wZSBvZiB0aGF0IHN0YXRpYyBkZWNsYXJhdGlvbiB3aGVyZSBpdCdzIGFjdHVhbGx5ICpjYWxsZWQqLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgbG9va2luZyBvdXRzaWRlIG9mIHRoYXQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMDUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDo0NS4zODgyMDgzNjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTMyNTAzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXNwaW50Y3BfY2xvc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz01MDE9c3RhdGljIHZvaWQgZXNwaW50Y3BfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cXG5uZXQveGZybS9lc3BpbnRjcC5jOjUxNjpzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNy17XFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jPTU1Mj1zdGF0aWMgdm9pZCBidWlsZF9wcm90b3Moc3RydWN0IHByb3RvICplc3BpbnRjcF9wcm90LFxcbi0tXFxubmV0L3hmcm0vZXNwaW50Y3AuYy01NjAtXFx0ZXNwaW50Y3BfcHJvdC1cXHUwMDNlcmVjdm1zZyA9IGVzcGludGNwX3JlY3Ztc2c7XFxubmV0L3hmcm0vZXNwaW50Y3AuYzo1NjE6XFx0ZXNwaW50Y3BfcHJvdC1cXHUwMDNlY2xvc2UgPSBlc3BpbnRjcF9jbG9zZTtcXG5uZXQveGZybS9lc3BpbnRjcC5jLTU2Mi1cXHRlc3BpbnRjcF9wcm90LVxcdTAwM2VyZWxlYXNlX2NiID0gZXNwaW50Y3BfcmVsZWFzZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6NDcuNDgxNDYyODk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTk2NDI4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKlByb3RvY29sIENhbGxiYWNrIENvbnNpZGVyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGlzIGlzIGEgcHJvdG9jb2wgY2FsbGJhY2suIFRoYXQncyBnb29kOyB3ZSBjYW4gd29yayB3aXRoIHRoYXQsIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBjb25zaWRlciBpbmNsdWRpbmcgaW4gdGhlIGN1cnJlbnQgd29ya2Zsb3cuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHNvbWV0aGluZy4uLiBsZXQncyBzZWUsIHdoYXQgd2FzIHRoYXQgZnVuY3Rpb24gYWdhaW4/IEFoIHllcywgYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLiBOZWVkIHRvIHNlZSBpZiBpdCBwbGF5cyBuaWNlbHkgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZmxvdy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjM4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6NTAuNTAxMTEwMTQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDk5ODg2MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oc3RhdGljICk/KGludHx2b2lkKSB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fb3V0cHV0X3Jlc3VtZSk7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjEtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDo1My42MDEwMDIyNTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3ODQ2MzU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBMb2NhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHF1ZXN0aW9uLCB0aGUgY29yZSBvZiBteSB0aGlua2luZyByaWdodCBub3csIGlzOiBXaGVyZSBwcmVjaXNlbHkgKmlzKiBpdCBjYWxsZWQ/IFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBxdWVyeTsgaXQncyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIEknbSBidWlsZGluZy4gSSdtIG5vdCBsb29raW5nIGZvciBhIHZhZ3VlIGRlc2NyaXB0b3I7IEkgbmVlZCBzcGVjaWZpY2l0eS4gSXMgXCJpdFwiIGEgZGVmaW5lZCBvYmplY3QsIHByb2Nlc3MsIG9yIGNvbmNlcHQ/IE15IGtub3dsZWRnZSB0ZWxscyBtZSB0aGF0IHRoZSBudWFuY2UgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG5leHQgYWN0aW9uLiBNeSBtZW50YWwgZ2VhcnMgYXJlIHN0YXJ0aW5nIHRvIHR1cm47IEknbSBpbXBsaWNpdGx5IGFjY2Vzc2luZyBteSBleGlzdGluZyBrbm93bGVkZ2UgYmFzZSwgYXR0ZW1wdGluZyB0byBsaW5rIHRoaXMgXCJpdFwiIHRvIGtub3duIGNvbnRleHRzLiBUaGlzIGxvY2F0aW9uIGlzIG5vdCBsaXRlcmFsLCBidXQgaXMgcmF0aGVyIGEgc2VhcmNoIGZvciBhIG1vcmUgc3BlY2lmaWMgZGVmaW5pdGlvbi4gXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MjQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjU2LjM3OTQ2ODU1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxMjgxNzE1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fb3V0cHV0X3Jlc3VtZSk7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjEtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYz03NDg9aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzg1LVxcdFxcdGlmICh4LVxcdTAwM2Vwcm9wcy5tb2RlID09IFhGUk1fTU9ERV9UVU5ORUwgXFx1MDAyNlxcdTAwMjYgIXNrYi1cXHUwMDNlc2spXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo3ODY6XFx0XFx0XFx0cmV0dXJuIHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQoc2ssIHgsIHNrYik7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03ODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjU4LjU5MjI5MTkyMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI5MDU2MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWEZSTSBPdXRwdXQqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGB4ZnJtX291dHB1dGAgZnVuY3Rpb24gaGVyZSDigJMgdGhhdCdzIHRoZSBjZW50cmFsIHBvaW50LCB0aGUgZW50cnkgZ2F0ZSBmb3IgZXZlcnl0aGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUsIGl0cyBpbnRlcmFjdGlvbnMsIGFuZCBpdHMgY29udHJvbCBmbG93LiBGaXJzdCBzdG9wOiBsZXQncyBnbyBjaGVjayB0aGUgYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGJ1aWx0LiBJdCBwcm9iYWJseSBob2xkcyBzb21lIG9mIHRoZSBjcnVjaWFsIGluaXRpYWxpemF0aW9uIGRldGFpbHMgYW5kIHRoZSB1bmRlcnBpbm5pbmdzIG9mIGhvdyB0aGUgc3RhdGUgaXRzZWxmIGlzIHB1dCB0b2dldGhlci4gR290dGEgZ2V0IHRoZSBmb3VuZGF0aW9ucyBmaXJzdCwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzODUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTowMy4yMjEzNTEzNDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTY1NjI1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT9zdHJ1Y3QgeGZybV9zdGF0ZSBcXFxcKnhmcm1fc3RhdGVfY29uc3RydWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTg5Nj1zdGF0aWMgdm9pZCB4ZnJtX3NtYXJrX2luaXQoc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgeGZybV9tYXJrICptKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtOTA2LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjkwNzpzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJzYV9pbmZvICpwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTowNS45MTc5MjE1MzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyMzg2NTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqVGhlIENydXggb2YgdGhlIE1hdHRlcjogTG9jYXRpb24sIExvY2F0aW9uLCBMb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSBwcmVjaXNlbHkgYXJlIHdlIHNpdHVhdGluZyB0aGlzIGFyZ3VtZW50IG9yIGNvbmNlcHQ/IEJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGZvcm11bGF0ZSBhIGNvaGVyZW50IHJlc3BvbnNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb250ZXh0LiBXaGF0IGFyZSB3ZSBjYWxsaW5nIHRoaXMgc3BlY2lmaWMgaXRlbSBvciBwaGVub21lbm9uPyBUaGUgdGVybWlub2xvZ3kgdXNlZCB3aWxsIGRyYXN0aWNhbGx5IGltcGFjdCBteSBpbml0aWFsIGZyYW1pbmcgYW5kIHN1YnNlcXVlbnQgYW5hbHlzaXMuIEtub3dpbmcgdGhlIGNvcnJlY3QgXCJuYW1lXCIgaXMgY3JpdGljYWwuIEl0IGRldGVybWluZXMgbXkgaW5pdGlhbCBzZWFyY2ggcGFyYW1ldGVycyBpbiBteSBtZW50YWwgZmlsaW5nIGNhYmluZXQgb2YgcGFzdCBleHBlcmllbmNlcyBhbmQgbGVhcm5pbmdzLiBBbSBJIGRlYWxpbmcgd2l0aCBhIHN0YW5kYXJkaXplZCB0ZXJtLCBhIGNvbGxvcXVpYWxpc20sIGEgcHJvcHJpZXRhcnkgZGVzaWduYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgc3BlY2lmaWNpdHkgb2YgdGhlIGFwcGVsbGF0aW9uIGRpY3RhdGVzIG15IGNvbmZpZGVuY2UgaW4gbW92aW5nIGZvcndhcmQuIE9uY2UgSSBrbm93IHRoZSB0ZXJtIG9mIHJlZmVyZW5jZSwgdGhlIGFwcHJvcHJpYXRlIGZyYW1ld29yayBmb3IgZnVydGhlciBjb25zaWRlcmF0aW9uIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlci4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgbm9tZW5jbGF0dXJlIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzIwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTowOC45NDE3ODk5MjZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjY5Mzg4MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9zdGF0ZV9jb25zdHJ1Y3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9ODk2PXN0YXRpYyB2b2lkIHhmcm1fc21hcmtfaW5pdChzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCB4ZnJtX21hcmsgKm0pXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6OTA3OnN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTkwOC1cXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcnNhX2luZm8gKnAsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMDM5PXN0YXRpYyBpbnQgeGZybV9hZGRfc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDUxLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEwNTI6XFx0eCA9IHhmcm1fc3RhdGVfY29uc3RydWN0KG5ldCwgcCwgYXR0cnMsIFxcdTAwMjZlcnIsIGV4dGFjayk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTA1My1cXHRpZiAoIXgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjExLjE2ODczMzcwMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODgxMjQ4Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTkFUIEtlZXBhbGl2ZSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIGB4ZnJtX2FkZF9zYWAgaXMgdGhlIGVudHJ5IHBvaW50LCB0aGUgbWFpbiBmdW5jdGlvbiB0byBsb29rIGF0LiBUaGF0J3MgdGhlIG9uZSB0aGF0IGtpY2tzIGV2ZXJ5dGhpbmcgb2ZmLCByaWdodD8gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiB0aGF0J3MgbmFnZ2luZyBhdCBtZSBpcyBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhpcyBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgc28gaXQncyBhIGNyaXRpY2FsIHBpZWNlLCBidXQgaXQncyBub3QgdGhlIGluaXRpYWwgdHJpZ2dlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCAqZG9lcyouIExldCBtZSBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyBpbnRlcmVzdGluZyBpbiBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAgYW5kIGBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdGAuIFRob3NlIGFyZSBsaWtlbHkgdGhlIGd1dHMgb2YgaG93IHRoZSBrZWVwYWxpdmUgaXMgaGFuZGxlZC4gTmVlZCB0byB0cmFjZSBmcm9tIGB4ZnJtX2FkZF9zYWAgdG8gdGhvc2UgdG8gdW5kZXJzdGFuZCB0aGUgZW50aXJlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjA4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MTUuMDQ5OTg1NDM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzU3MDI2MDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oc3RhdGljICk/KGludHx2b2lkKSBuYXRfa2VlcGFsaXZlX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTYzPXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2OS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNzA6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTcxLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4NC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxODU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODYtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNToxOC40MDcwMjA5ODJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNjUzMjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYG5hdF9rZWVwYWxpdmVfd29ya2AgYW5kIGBoYW5kbGVfZXNwYCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LiBUaGUgY2x1ZSBoZXJlIGlzIHRoZSBuYW1pbmcgLSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyB0aGUgd29ya3F1ZXVlIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCBrZWVwaW5nIE5BVCBjb25uZWN0aW9ucyBhbGl2ZS4gVGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gV2UgbmVlZCB0byBzZWUgaG93IHRoZSBjb25uZWN0aW9uIG1haW50ZW5hbmNlIGlzIGJlaW5nIGhhbmRsZWQuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIGhvdyB0aGUgaGFuZGxpbmcgb2NjdXJzIC0gc3BlY2lmaWNhbGx5LCB0byBjaGVjayB0aGUgYGhhbmRsZV9lc3BgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3hmcm0vZXNwaW50Y3AuY2AuIEVTUCwgb3IgRW5jYXBzdWxhdGluZyBTZWN1cml0eSBQYXlsb2FkLCBvZnRlbiBwbGF5cyBhIHJvbGUgaW4gVlBOcyBhbmQgc2VjdXJlIGNvbm5lY3Rpb25zLCBhbmQgTkFUIG9mdGVuIG5lZWRzIHNwZWNpZmljIGhhbmRsaW5nIGZvciB0aGVzZSBwcm90b2NvbHMuIFRoYXQgc3VnZ2VzdHMgYSBwb3NzaWJsZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBOQVQga2VlcGFsaXZlIGFuZCBoYW5kbGluZyBvZiBzZWN1cmUgY29ubmVjdGlvbnMuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NzksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNToyMi41NDM1NTU5NzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjg0NDA1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWQpIGhhbmRsZV9lc3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz0xMj1zdGF0aWMgdm9pZCBoYW5kbGVfbm9uZXNwKHN0cnVjdCBlc3BpbnRjcF9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmMtMjgtXFxubmV0L3hmcm0vZXNwaW50Y3AuYzoyOTpzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG5uZXQveGZybS9lc3BpbnRjcC5jLTMwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MjUuNjEyMDA2MTg5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDEzNTIxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBgaGFuZGxlX2VzcGAgRXhlY3V0aW9uKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IG9uIG15IG1pbmQgaXM6IHdoZXJlIHRoZSBoZWNrIGlzIGBoYW5kbGVfZXNwYCBhY3R1YWxseSBiZWluZyBpbnZva2VkPyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIGFuZCBpbXBhY3QuIFdpdGhvdXQga25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0LCBJJ20gZXNzZW50aWFsbHkgZmx5aW5nIGJsaW5kLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGVudHJ5IHBvaW50cywgd2hpY2ggbW9kdWxlcyBvciBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIHRoaXMgcm91dGluZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYW4gaW50ZXJydXB0IGhhbmRsZXIsIGEgc3BlY2lmaWMgc3lzdGVtIGNhbGwgcGF0aCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBmdW5kYW1lbnRhbCB0byBpbnRlcnByZXRpbmcgdGhlIGJlaGF2aW9yIG9mIGBoYW5kbGVfZXNwYCB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIGFueSBmdXJ0aGVyIGFuYWx5c2lzIEkgbmVlZCB0byBwZXJmb3JtLCBzdWNoIGFzIGRlYnVnZ2luZywgb3B0aW1pemluZywgb3IgcG90ZW50aWFsbHkgaWRlbnRpZnlpbmcgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhlIGZ1bmN0aW9uJ3MgdXNlLiBMZXQncyBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE1MiwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MjkuMTUzMzYyODU3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY5NTg5NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhbmRsZV9lc3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz0xMj1zdGF0aWMgdm9pZCBoYW5kbGVfbm9uZXNwKHN0cnVjdCBlc3BpbnRjcF9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmMtMjgtXFxubmV0L3hmcm0vZXNwaW50Y3AuYzoyOTpzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG5uZXQveGZybS9lc3BpbnRjcC5jLTMwLXtcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmM9NTc9c3RhdGljIHZvaWQgZXNwaW50Y3BfcmN2KHN0cnVjdCBzdHJwYXJzZXIgKnN0cnAsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTExMy1cXHRlbHNlXFxubmV0L3hmcm0vZXNwaW50Y3AuYzoxMTQ6XFx0XFx0aGFuZGxlX2VzcChza2IsIHN0cnAtXFx1MDAzZXNrKTtcXG5uZXQveGZybS9lc3BpbnRjcC5jLTExNS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjMxLjUyMjk1ODI3NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTEyMzEyNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRVNQSU5UQ1AgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBlbnRyeSBwb2ludCBpcyBgZXNwaW50Y3BfcmN2YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGludm9sdmVkIGluIHRoaXMgcHJvY2Vzcy4gU28gSSdtIGxvb2tpbmcgYXQ6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgdGhlIGBlc3BpbnRjcGAgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgZXNwaW50Y3BfcmN2YCBhbmQgYGVzcGludGNwX2Nsb3NlYCwgYHhmcm1fb3V0cHV0YCwgYHhmcm1fYWRkX3NhYCwgYW5kIGFsc28gYG5hdF9rZWVwYWxpdmVfd29ya2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gRm9yIGBuZXQvaXB2Ni9haDYuY2AsIEknbSBndWVzc2luZyBgQ09ORklHX0lORVQ2X0FIYCBpcyBhIG11c3QuIGBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYCBtb3N0IGxpa2VseSBuZWVkcyBgQ09ORklHX0lQVjZgLCBuYXR1cmFsbHkuIEZvciBgbmV0L3hmcm0vZXNwaW50Y3AuY2AsIEknbSBwcmV0dHkgY2VydGFpbiBpdCdzIGBDT05GSUdfSU5FVF9FU1BJTlRDUGAuIEFuZCB0aGUgTkFUIGtlZXBhbGl2ZSBmdW5jdGlvbiBpbiBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLCBwcm9iYWJseSByZWxpZXMgb24gYENPTkZJR19YRlJNYC4gQW5kIHRoZW4gZm9yIGBuZXQveGZybS94ZnJtX291dHB1dC5jYCwgYWdhaW4sIEkgYmV0IGl0J3MgYWxzbyBgQ09ORklHX1hGUk1gLiBGaW5hbGx5LCBgbmV0L3hmcm0veGZybV91c2VyLmNgLCBsaWtlbHkgbGVhbnMgb24gYENPTkZJR19YRlJNX1VTRVJgLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZXNlIGFzc3VtcHRpb25zLCBidXQgdGhpcyBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG1hcHBpbmcgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1ODEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MzcuNDM1Mjc1MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTc5Nzc4NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU5FVDZfQUhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MTQ1PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoxNDY6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0xNDctQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0yNT1DT05GSUdfU1lOX0NPT0tJRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnOjI2OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9hcm0vY29uZmlncy9zcGl0el9kZWZjb25maWctMjctQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9hcm0vY29uZmlncy90ZWdyYV9kZWZjb25maWc6NDg6Q09ORklHX0lORVQ2X0FIPXlcXG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZy00OS1DT05GSUdfSU5FVDZfRVNQPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTUzPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MTU0OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xNTUtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE2OT1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjE3MDpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTcxLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZz01ND1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZzo1NTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctNTYtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnPTU2PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnOjU3OkNPTkZJR19JTkVUNl9BSD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZy01OC1DT05GSUdfSU5FVDZfRVNQPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjQyOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctNDMtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZz0zNz1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZzozODpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTM5LUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnPTM2PUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZzozNzpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZy0zOC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo0MjpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTQzLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9Mzg9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjM5OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNDAtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6Mzk6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy00MC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTM3PUNPTkZJR19UQ1BfTUQ1U0lHPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZzozODpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnLTM5LUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvamF6el9kZWZjb25maWc9MjQ9Q09ORklHX05FVF9JUElQPW1cXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZzoyNTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnLTI2LUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTQ3PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6NDg6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctNDktQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTUxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjUyOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy01My1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWc9NDI9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnOjQzOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZy00NC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9NDQ9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnOjQ1OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZy00Ni1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9NDU9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnOjQ2OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZy00Ny1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnPTQ2PUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc6NDc6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZy00OC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTQzPUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc6NDQ6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZy00NS1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz01MD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjUxOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTUyLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc9NTg9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzo1OTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTYwLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnPTMzPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzozNDpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy0zNS1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnPTYxPUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6NjI6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZy02My1DT05GSUdfSU5FVDZfSVBDT01QPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTUwPUNPTkZJR19TWU5fQ09PS0lFUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6NTE6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTgxPUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6ODI6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy04My1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTEwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjExMTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMTEyLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTE2NT1DT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjE2NjpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNjctQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTU2PUNPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTU3OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE1OC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9NTE9Q09ORklHX0lQVjZfUFJJVkFDWT15XFxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZzo1MjpDT05GSUdfSU5FVDZfQUg9eVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctNTMtQ09ORklHX0lORVQ2X0VTUD15XFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc9MjM9Q09ORklHX0lORVRfSVBDT01QPXlcXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MjQ6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMjUtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc9NTA9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZzo1MTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9ODM9Q09ORklHX1RDUF9NRDVTSUc9eVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6ODQ6Q09ORklHX0lORVQ2X0FIPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTg1LUNPTkZJR19JTkVUNl9FU1A9eVxcbi0tXFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTg0PUNPTkZJR19UQ1BfTUQ1U0lHPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6ODU6Q09ORklHX0lORVQ2X0FIPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctODYtQ09ORklHX0lORVQ2X0VTUD15XFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTM5PWNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTQ2LVxcbm5ldC9pcHY2L0tjb25maWc6NDc6Y29uZmlnIElORVQ2X0FIXFxubmV0L2lwdjYvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZT0yOD1pcHY2LSQoQ09ORklHX0lQVjZfSU9BTTZfTFdUVU5ORUwpICs9IGlvYW02X2lwdHVubmVsLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0yOS1cXG5uZXQvaXB2Ni9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSU5FVDZfQUgpICs9IGFoNi5vXFxubmV0L2lwdjYvTWFrZWZpbGUtMzEtb2JqLSQoQ09ORklHX0lORVQ2X0VTUCkgKz0gZXNwNi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjM5LjgzMzI2MDExOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUxNDkxMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKklORVQ2X0FIIENvbmZpcm1hdGlvbioqXG5cbkFscmlnaHQsIHRoYXQncyBpdC4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb250ZXh0LCB0aGUgZXZpZGVuY2UsIGFuZCB0aGUgcmVsZXZhbnQgUkZDcywgSSdtIGNvbmZpZGVudCBpbiB0aGUgY29uY2x1c2lvbi4gVGhlIHVzZSBvZiBgSU5FVDZfQUhgIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpcyBuZWNlc3Nhcnkgb24gdGhhdCBhc3BlY3Qgb2YgdGhlIGRlc2lnbjsgbW92aW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQzMCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjQyLjg4NDc1MzM1OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NzkzMDQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJTkVUX0VTUElOVENQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTM3PUNPTkZJR19JTkVUX0VTUF9PRkZMT0FEPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEzODpDT05GSUdfSU5FVF9FU1BJTlRDUD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMzktQ09ORklHX0lORVRfSVBDT01QPW1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTUzPUNPTkZJR19JTkVUX0VTUF9PRkZMT0FEPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjE1NDpDT05GSUdfSU5FVF9FU1BJTlRDUD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xNTUtQ09ORklHX0lORVRfSVBDT01QPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xNTI9Q09ORklHX0lORVRfRVNQPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTUzOkNPTkZJR19JTkVUX0VTUElOVENQPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTU0LUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTQzPUNPTkZJR19JTkVUX0VTUD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjE0NDpDT05GSUdfSU5FVF9FU1BJTlRDUD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE0NS1DT05GSUdfSU5FVF9JUENPTVA9bVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzgxLVxcbm5ldC9pcHY0L0tjb25maWc6MzgyOmNvbmZpZyBJTkVUX0VTUElOVENQXFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXFx0Ym9vbCBcXFwiSVA6IEVTUCBpbiBUQ1AgZW5jYXBzdWxhdGlvbiAoUkZDIDgyMjkpXFxcIlxcbi0tXFxubmV0L2lwdjQvZXNwNC5jPTk5PXN0YXRpYyB2b2lkIGVzcF9zc2dfdW5yZWYoc3RydWN0IHhmcm1fc3RhdGUgKngsIHZvaWQgKnRtcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBhbHJlYWR5X3VucmVmKVxcbi0tXFxubmV0L2lwdjQvZXNwNC5jLTEyNC1cXG5uZXQvaXB2NC9lc3A0LmM6MTI1OiNpZmRlZiBDT05GSUdfSU5FVF9FU1BJTlRDUFxcbm5ldC9pcHY0L2VzcDQuYy0xMjYtc3RhdGljIHN0cnVjdCBzb2NrICplc3BfZmluZF90Y3Bfc2soc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5uZXQvaXB2NC9lc3A0LmM9MzA5PXN0YXRpYyBzdHJ1Y3QgaXBfZXNwX2hkciAqZXNwX291dHB1dF91ZHBfZW5jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L2VzcDQuYy0zMzgtXFxubmV0L2lwdjQvZXNwNC5jOjMzOTojaWZkZWYgQ09ORklHX0lORVRfRVNQSU5UQ1BcXG5uZXQvaXB2NC9lc3A0LmMtMzQwLXN0YXRpYyBzdHJ1Y3QgaXBfZXNwX2hkciAqZXNwX291dHB1dF90Y3BfZW5jYXAoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuLS1cXG5uZXQvaXB2NC9lc3A0LmM9MTExMj1zdGF0aWMgaW50IGVzcF9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9lc3A0LmMtMTE1MC1cXHRcXHRcXHRicmVhaztcXG5uZXQvaXB2NC9lc3A0LmM6MTE1MTojaWZkZWYgQ09ORklHX0lORVRfRVNQSU5UQ1BcXG5uZXQvaXB2NC9lc3A0LmMtMTE1Mi1cXHRcXHRjYXNlIFRDUF9FTkNBUF9FU1BJTlRDUDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6NDUuMTgyNjg5Nzk5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODk2NTc2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ29uZmlybWF0aW9uIG9uIElORVRfRVNQSU5UQ1AqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEFmdGVyIHJldmlld2luZyB0aGUgbGF0ZXN0IGRhdGEgYW5kIGNvbnNpZGVyaW5nIHRoZSBhcmNoaXRlY3R1cmUsIHRoZSBhcHByb2FjaCB1c2luZyBgSU5FVF9FU1BJTlRDUGAgaXMsIGluIGZhY3QsIHRoZSBhcHByb3ByaWF0ZSBwYXRoIHRvIHB1cnN1ZS4gTm8gZnVydGhlciByZWZpbmVtZW50IG9yIHJlLWV2YWx1YXRpb24gc2VlbXMgbmVjZXNzYXJ5IGF0IHRoaXMgcG9pbnQuIFRoYXQncyBhIHNvbGlkIGNvbmZpcm1hdGlvbiwgYW5kIHdlIGNhbiBtb3ZlIGZvcndhcmQgd2l0aCB0aGF0IGltcGxlbWVudGF0aW9uIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzNzEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTo0OC4yNzIzNDk0NTNaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjQyNzg2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWEZSTV9VU0VSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYWxwaGEvY29uZmlncy9kZWZjb25maWc9MTI9Q09ORklHX1VOSVg9eVxcbmFyY2gvYWxwaGEvY29uZmlncy9kZWZjb25maWc6MTM6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9hbHBoYS9jb25maWdzL2RlZmNvbmZpZy0xNC1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTU3PUNPTkZJR19VTklYPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjU4OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctNTktQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZz00Mj1DT05GSUdfVU5JWF9ESUFHPXlcXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy00NC1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz02OD1DT05GSUdfVU5JWD15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjY5OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZy03MC1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9NTE9Q09ORklHX1VOSVg9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZzo1MjpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWctNTMtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMTM9Q09ORklHX1RMU19ERVZJQ0U9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MTE0OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMTE1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTI5PUNPTkZJR19UTFNfREVWSUNFPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjEzMDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTEzMS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnPTM2PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnOjM3OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctMzgtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZz0xMT1DT05GSUdfVU5JWD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZzoxMjpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9jb2JhbHRfZGVmY29uZmlnLTEzLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MzQ9Q09ORklHX1VOSVhfRElBRz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzozNTpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTM2LUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTI5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy0yOS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy0yOS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTIzPUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZzozMjpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc9NDA9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnOjQxOkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnLTQyLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9NTM9Q09ORklHX1BBQ0tFVD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1NDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTU1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI0OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnLTI1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9MjU9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc6MjY6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZy0yNy1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnPTI2PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnOjI3OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnLTI5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTI0PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZzoyNTpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MjY9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzoyNzpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc9NDI9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTQ0LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc6Mjg6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZy0yOS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnPTMxPUNPTkZJR19VTklYPXlcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxcbi0tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz00Mj1DT05GSUdfVU5JWD15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTQ0LUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9jbTUyMDBfZGVmY29uZmlnPTE3PUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L2NtNTIwMF9kZWZjb25maWc6MTg6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9jbTUyMDBfZGVmY29uZmlnLTE5LUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZz0yMD1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9saXRlNTIwMGJfZGVmY29uZmlnOjIxOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZy0yMi1DT05GSUdfSU5FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWc9MTc9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbW90aW9ucHJvX2RlZmNvbmZpZzoxODpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWctMTktQ09ORklHX0lORVQ9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZz0yMT1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZzoyMjpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L3RxbTUyMDBfZGVmY29uZmlnLTIzLUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzgzeHgvYXNwODM0N19kZWZjb25maWc9MjE9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzgzeHgvYXNwODM0N19kZWZjb25maWc6MjI6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9hc3A4MzQ3X2RlZmNvbmZpZy0yMy1DT05GSUdfSU5FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZz00MT1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6NDI6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctNDMtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnLTI1LUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgveGVzX21wYzg1eHhfZGVmY29uZmlnPTM3PUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZzozODpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZy0zOS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZz0xMjM9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6MTI0OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTEyNS1DT05GSUdfWklTT0ZTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz0zMz1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnOjM0OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZy0zNS1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWc9MjA9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2hvbGx5X2RlZmNvbmZpZzoyMTpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWctMjItQ09ORklHX0lORVQ9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTIwMF9kZWZjb25maWc9MjA9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnOjIxOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnLTIyLUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnPTIzPUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4M3h4X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4M3h4X2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnPTMxPUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZz0zMj1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZzozMzpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnLTM0LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTcyPUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo3MzpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy03NC1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9OTc9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo5ODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTktQ09ORklHX05FVF9LRVk9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZz0zNT1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZzozNjpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnLTM3LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Nzg9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6Nzk6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy04MC1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcXG4tLVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9NTc9Q09ORklHX1BBQ0tFVD15XFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZzo1ODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTU5LUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEyNz1DT05GSUdfVExTX0RFVklDRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEyODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTI5LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMTg9Q09ORklHX1RMU19ERVZJQ0U9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMTk6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEyMC1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2gyMDA3X2RlZmNvbmZpZz0yOD1DT05GSUdfVU5JWD15XFxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWc6Mjk6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMzAtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnPTE1PUNPTkZJR19VTklYPXlcXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MTY6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnLTE3LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0zMT1DT05GSUdfVU5JWD15XFxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZy0zMy1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTYzPUNPTkZJR19QQUNLRVQ9eVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6NjQ6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02NS1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz02ND1DT05GSUdfUEFDS0VUPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6NjU6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTY2LUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTEyNjk9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19ub3BvbGljeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI3Mi1cXHRpZiAoIVJFQURfT05DRShuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2NvdW50W2Rpcl0pIFxcdTAwMjZcXHUwMDI2ICFzZWNwYXRoX2V4aXN0cyhza2IpKVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMjczOlxcdFxcdHJldHVybiBSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W2Rpcl0pID09IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQ7XFxuaW5jbHVkZS9uZXQveGZybS5oLTEyNzQtXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTM2OT1zdGF0aWMgaW5saW5lIGludCB4ZnJtX3JvdXRlX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTEzNzMtXFx0aWYgKCFSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9jb3VudFtYRlJNX1BPTElDWV9PVVRdKSBcXHUwMDI2XFx1MDAyNlxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMzc0OlxcdCAgICBSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX09VVF0pID09IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQpXFxuaW5jbHVkZS9uZXQveGZybS5oLTEzNzUtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MjMwMD1zdHJ1Y3QgeGZybV90cmFuc2xhdG9yIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzE0LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzE2LWV4dGVybiBpbnQgeGZybV9yZWdpc3Rlcl90cmFuc2xhdG9yKHN0cnVjdCB4ZnJtX3RyYW5zbGF0b3IgKnh0cik7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTU3MT1zdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQge1xcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NTcyOiNkZWZpbmUgWEZSTV9VU0VSUE9MSUNZX1VOU1BFQ1xcdDBcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3MzojZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9CTE9DS1xcdDFcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3NDojZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9BQ0NFUFRcXHQyXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzUtXFx0X191OFxcdFxcdFxcdFxcdGluO1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIFhGUk1fVVNFUiBcXHUwMDI2XFx1MDAyNiBDT01QQVRfRk9SX1U2NF9BTElHTk1FTlQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC94ZnJtL0tjb25maWctMzUtXFx0XFx0SEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTU1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTIwLVxcdCAgbm8gbG9uZ2VyIG5lZWQgUEZfS0VZIHNvY2tldHMuIFBsZWFzZSB1c2UgdGhlIG5ldGxpbmtcXG5uZXQveGZybS9LY29uZmlnOjEyMTpcXHQgIGludGVyZmFjZSAoWEZSTV9VU0VSKSB0byBjb25maWd1cmUgSVBzZWMuXFxubmV0L3hmcm0vS2NvbmZpZy0xMjItXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSArPSB4ZnJtX2FsZ28ub1xcbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICs9IHhmcm1fdXNlci5vXFxubmV0L3hmcm0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICs9IHhmcm1fY29tcGF0Lm9cXG5uZXQveGZybS9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfWEZSTV9JUENPTVApICs9IHhmcm1faXBjb21wLm9cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE2Nj1zdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF93aXRoX2lmaWQoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzAxLVxcdGlmICgoIWRzdF9vcmlnLVxcdTAwM2VkZXYgfHwgIShkc3Rfb3JpZy1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzAyOlxcdCAgICBSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W2Rpcl0pID09IFhGUk1fVVNFUlBPTElDWV9CTE9DSykge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMwMy1cXHRcXHRlcnIgPSAtRVBFUk07XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2NzA9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzU1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc1NjpcXHRcXHRpZiAoUkVBRF9PTkNFKG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtkaXJdKSA9PSBYRlJNX1VTRVJQT0xJQ1lfQkxPQ0spIHtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTctXFx0XFx0XFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOTk9QT0xTKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDMxMD1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQzMTgtXFx0bXV0ZXhfaW5pdChcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fY2ZnX211dGV4KTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzMTk6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0lOXSA9IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQ7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzIwOlxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtYRlJNX1BPTElDWV9GV0RdID0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVDtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzMjE6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX09VVF0gPSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMyMi1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0yOTMwPXN0YXRpYyBib29sIGttX2lzX2FsaXZlKGNvbnN0IHN0cnVjdCBrbV9ldmVudCAqYylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yOTQ2LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyOTQ3OiNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yOTQ4LXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soeGZybV90cmFuc2xhdG9yX2xvY2spO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjU0Nj1zdGF0aWMgYm9vbCB4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQoX191OCBwb2xpY3kpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0Ny17XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU0ODpcXHRyZXR1cm4gcG9saWN5ID09IFhGUk1fVVNFUlBPTElDWV9CTE9DSyB8fFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NDk6XFx0ICAgICAgIHBvbGljeSA9PSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTAtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0PTE1Mz1DT05GSUdfVlNPQ0tFVFNfTE9PUEJBQ0s9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNTQ6Q09ORklHX1hGUk1fVVNFUj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9OTE9Q09ORklHX1ZTWD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsOjkyOkNPTkZJR19YRlJNX1VTRVI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTgyPUNPTkZJR19WU09DS0VUU19MT09QQkFDSz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjgzOkNPTkZJR19YRlJNX1VTRVI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD0xMjQ9Q09ORklHX1ZTT0NLRVRTX0xPT1BCQUNLPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4OjEyNTpDT05GSUdfWEZSTV9VU0VSPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTIyNT1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoyMjY6Q09ORklHX1hGUk1fVVNFUj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMjI3LUNPTkZJR19aRVJPUExVU19GRj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25kaW5nL2NvbmZpZz0yMT1DT05GSUdfVkxBTl84MDIxUT1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYm9uZGluZy9jb25maWc6MjI6Q09ORklHX1hGUk1fVVNFUj1tXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWc9MjU9Q09ORklHX1ZYTEFOPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWc6MjY6Q09ORklHX1hGUk1fVVNFUj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbj0yMzg9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb246MjM5OkNPTkZJR19YRlJNX1VTRVI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTI0MC1DT05GSUdfWkVST1BMVVNfRkY9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZz0xMzg9Q09ORklHX1hGUk1fSU5URVJGQUNFPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjEzOTpDT05GSUdfWEZSTV9VU0VSPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz01NT1DT05GSUdfVlhMQU49bVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzo1NjpDT05GSUdfWEZSTV9VU0VSPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnPTEwNz1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzoxMDg6Q09ORklHX1hGUk1fVVNFUj1tXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjUwLjU5NjYzMzM4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc2NDEwMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipYRlJNIFVzZXIgQ29uZmlndXJhdGlvbiBWZXJpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgYFhGUk1fVVNFUmAgc2V0dGluZyBpcyB0aGUgd2F5IHRvIGdvLiBCdXQsIHlvdSBrbm93IG1lLCBhbHdheXMgZG91YmxlLWNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyEgQmVmb3JlIEkgZnVsbHkgY29tbWl0IHRvIHRoaXMgY29uZmlndXJhdGlvbiBwYXRoLCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgYFhGUk1gIGNvbmZpZ3VyYXRpb24gaW4gaXRzIGVudGlyZXR5LiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgbWlzc2luZyBhIGRldGFpbCB0aGVyZSBjb3VsZCBkZXJhaWwgdGhlIHdob2xlIHByb2Nlc3MuIEJlc3QgdG8gdGFrZSBhIG1vbWVudCBhbmQgYmUgY2VydGFpbiBhYm91dCB0aGUgZW52aXJvbm1lbnQgSSdtIGJ1aWxkaW5nIG9uLiBMZXQgbWUganVzdCBnbyB0aHJvdWdoIHRoZSByZWxldmFudCBwYXJhbWV0ZXJzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjYyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6NTMuNjczMDQ1NjY3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzEzNjA0ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTo1NS45ODY2NjEyN1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzgxMTIxMDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBYRlJNIE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBgWEZSTWAgaXMgZXNzZW50aWFsbHkgYSBoaWRkZW4gZmxhZywgYSBib29sZWFuLCBhY3RpdmF0ZWQgaW1wbGljaXRseSB3aGVuIG90aGVyIG9wdGlvbnMgbGlrZSBgSU5FVF9FU1BJTlRDUGAsIGBJTkVUNl9BSGAsIG9yIGBYRlJNX1VTRVJgIGFyZSBjaG9zZW4uIFRoaXMgaXMgZ29vZCB0byBrbm93OyBJIGRvbid0IG5lZWQgdG8gZXhwbGljaXRseSBkZWZpbmUgYFhGUk1gIGlmIHRoZSB1bmRlcmx5aW5nIGNvbXBvbmVudCBpcyBhbHJlYWR5IGluIHBsYXkuIE1ha2VzIHRoaW5ncyBjbGVhbmVyLlxuXG5Ob3csIGxldCdzIHRyYWNlIHRoZSByZWFjaGFibGUgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aHMuIEZpcnN0LCBJJ20gY2hlY2tpbmcgYGVzcGludGNwX3JjdmAgYW5kIGBlc3BpbnRjcF9jbG9zZWAuIEFoLCBnb29kLCB0aGV5J3JlIHBhcnQgb2YgYGVzcGludGNwX3Byb3RgIGFzIGV4cGVjdGVkLiBUaGF0IG1ha2VzIHNlbnNlLiBOZXh0LCBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAuLi4gaXQncyBzdGF0aWMsIHNvIGl0J3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBIb3dldmVyLCBgeGZybV9vdXRwdXRgICppcyogZXhwb3J0ZWQsIHNvIHRoYXQgaXMgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi5cblxuTW92aW5nIG9uLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgYXMgSSBzdXNwZWN0ZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4gVGhlbiwgSSdtIGV4YW1pbmluZyBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLiBBZ2FpbiwgaXQncyBzdGF0aWMsIGJ1dCBgeGZybV9hZGRfc2FgIGlzIHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1vZHVsZSdzIGJlaGF2aW9yLlxuXG5GaW5hbGx5LCBJJ20gdmVyaWZ5aW5nIHRoZSBBSCBjb21wb25lbnRzLiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIGFyZSBzdGF0aWMgYXMgd2VsbCwgYnV0IHRoZXkgYXJlIHJlZ2lzdGVyZWQgYXMgaGFuZGxlcnMsIHNvIHRoZXkgYXJlIGNyaXRpY2FsLiBUaGUgc2FtZSBnb2VzIGZvciBgeGZybTZfaW5wdXRfYWRkcmAgd2hpY2ggaXMgZXhwb3J0ZWQuXG5cblNvIHRoZSBjb3JlIHN5bWJvbHMgSSdtIHRyYWNraW5nIGFyZTpcbiogICBgYWg2X2lucHV0YFxuKiAgIGBhaDZfb3V0cHV0YFxuKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYFxuKiAgIGBlc3BpbnRjcF9yY3ZgXG4qICAgYGVzcGludGNwX2Nsb3NlYFxuKiAgIGB4ZnJtX291dHB1dGBcbiogICBgeGZybV9hZGRfc2FgXG4qICAgYG5hdF9rZWVwYWxpdmVfd29ya2BcblxuSSBuZWVkIHRvIGNvbmZpcm0gYGVzcGludGNwX3JjdmAgaXMgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIEknbSBsb29raW5nIGZvci4uLiBJJ2xsIGNoZWNrIGludG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjIxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjAyLjc2Nzc4NTM4M1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MTE5NjY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlc3BpbnRjcF9yY3ZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz0yOT1zdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmMtNTYtXFxubmV0L3hmcm0vZXNwaW50Y3AuYzo1NzpzdGF0aWMgdm9pZCBlc3BpbnRjcF9yY3Yoc3RydWN0IHN0cnBhcnNlciAqc3RycCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQveGZybS9lc3BpbnRjcC5jLTU4LXtcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmM9NDQxPXN0YXRpYyBpbnQgZXNwaW50Y3BfaW5pdF9zayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTQ0NC1cXHRzdHJ1Y3Qgc3RycF9jYWxsYmFja3MgY2IgPSB7XFxubmV0L3hmcm0vZXNwaW50Y3AuYzo0NDU6XFx0XFx0LnJjdl9tc2cgPSBlc3BpbnRjcF9yY3YsXFxubmV0L3hmcm0vZXNwaW50Y3AuYy00NDYtXFx0XFx0LnBhcnNlX21zZyA9IGVzcGludGNwX3BhcnNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNjowNS41Mzg5ODc4MzJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2Njc2ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnRlcm5hbCBDb2RlIFJldmlldzogUmVjZWl2ZSBDYWxsYmFjayBcdTAwMjYgTkFUIEtlZXBhbGl2ZSoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSBgZXNwaW50Y3BfcmN2YCBpcyB0aGUgcmVjZWl2ZSBjYWxsYmFjayBmdW5jdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGguIE5lZWQgdG8gY29uZmlybSB0aGF0IHF1aWNrbHk7IGl0J3MgYSBjcml0aWNhbCBjb21wb25lbnQuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBpbnZlc3RpZ2F0ZSBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhhdCdzIHRoZSBuZXh0IGxvZ2ljYWwgcGllY2UgdG8gY2hlY2ssIGFzIEkgc3VzcGVjdCB0aGVzZSB0d28gZnVuY3Rpb25zIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbSBpbnRlcmFjdHMgd2l0aCB0aGUgaW5jb21pbmcgZGF0YSBzdHJlYW0gdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBsb2dpYywgdGhlIHRpbWluZywgYW5kIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTY4MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjA5LjgwNTc1OTc0N1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4ODgxMjIzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYXRfa2VlcGFsaXZlX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oPTMyPXN0cnVjdCBuZXRuc194ZnJtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04NS1cXHRzdHJ1Y3QgbXV0ZXggeGZybV9jZmdfbXV0ZXg7XFxuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oOjg2OlxcdHN0cnVjdCBkZWxheWVkX3dvcmtcXHRuYXRfa2VlcGFsaXZlX3dvcms7XFxuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oLTg3LX07XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xNTg9ZW51bSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjItXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTYzOnN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjQtXFx0c3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjktXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcwOnN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE3MS17XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcyOlxcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTczLVxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTg0LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NTpzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4Ny17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjQtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI1OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LXtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjc6XFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzQtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjM1OlxcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzYtXFx0eGZybV9zdGF0ZV93YWxrX2luaXQoXFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIzOC1cXHRcXHRjdHgubnIgPSAwO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzOTpcXHRcXHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFxcdTAwMjZjdHgpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQxLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjdHgubnI7IGkrKykge1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI0MjpcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgXFx1MDAyNmN0eCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQzLVxcdFxcdFxcdHhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDgtXFx0aWYgKGN0eC5uZXh0X3J1bilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDk6XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI1MC1cXHRcXHRcXHRcXHQgICAgICAoY3R4Lm5leHRfcnVuIC0gY3R4Lm5vdykgKiBIWik7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yODM9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5MC1cXHRuZXQgPSB4c19uZXQoeCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjkxOlxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgMCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjkyLX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI5ND1pbnQgX19uZXRfaW5pdCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5NS17XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjk2OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5Ny1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTMwMD1pbnQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDEte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwMjpcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDMtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjExLjg5NDU3Nzk3MloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU3NTYyMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJ20gaGF2aW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTkFUIEtlZXBhbGl2ZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBwcmV0dHkgc3VyZSB0aGF0IGBuYXRfa2VlcGFsaXZlX3dvcmtgIGlzIHRoZSBhY3R1YWwgZnVuY3Rpb24gaG9va2VkIGludG8gdGhlIHdvcmtxdWV1ZSBmb3IgaGFuZGxpbmcgTkFUIGtlZXBhbGl2ZSB0YXNrcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aG91Z2gsIHNvIEknbGwgdHJ1c3QgbXkgZ3V0IGZvciBub3csIGJ1dCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQuXG5cbk5leHQgSSdsbCBjaGVjayBgeGZybV9hZGRfc2FgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMyMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjE0Ljk1MjE0MzEzM1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA1MTc5OTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2FkZF9zYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3VzZXIuYz05MDc9c3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDM4LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEwMzk6c3RhdGljIGludCB4ZnJtX2FkZF9zYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDQwLVxcdFxcdCAgICAgICBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTI5Mzc9c3RhdGljIGludCB4ZnJtX2FkZF9wb2xfZXhwaXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzAwMy1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMDA0OnN0YXRpYyBpbnQgeGZybV9hZGRfc2FfZXhwaXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMwMDUtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0MD1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzQ4LX0geGZybV9kaXNwYXRjaFtYRlJNX05SX01TR1RZUEVTXSA9IHtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzQ5OlxcdFtYRlJNX01TR19ORVdTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fYWRkX3NhICAgICAgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTAtXFx0W1hGUk1fTVNHX0RFTFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9kZWxfc2EgICAgICAgIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzYxLVxcdFtYRlJNX01TR19BQ1FVSVJFICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fYWRkX2FjcXVpcmUgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NjI6XFx0W1hGUk1fTVNHX0VYUElSRSAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfc2FfZXhwaXJlIH0sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc2My1cXHRbWEZSTV9NU0dfVVBEUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2FkZF9wb2xpY3kgICAgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzY0OlxcdFtYRlJNX01TR19VUERTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fYWRkX3NhICAgICAgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NjUtXFx0W1hGUk1fTVNHX1BPTEVYUElSRSAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfcG9sX2V4cGlyZX0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjE4LjAwMzk0ODY2MloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTkwNDY3Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTZWN1cml0eSBBc3NvY2lhdGlvbiBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGB4ZnJtX2FkZF9zYWAgaXMgaW5kZWVkIHRoZSBuZXRsaW5rIGNhbGxiYWNrIHdlJ3JlIGludGVyZXN0ZWQgaW4uIE5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYGVzcGludGNwX3JjdmAsIGBlc3BpbnRjcF9jbG9zZWAsIGB4ZnJtX291dHB1dGAsIGB4ZnJtX2FkZF9zYWAsIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG1hcHBpbmcgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZS5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIHJlbGV2YW50IG9uZXMgc2VlbSB0byBiZSBgSU5FVDZfQUhgLCBgSU5FVF9FU1BJTlRDUGAsIGFuZCBgWEZSTV9VU0VSYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlc2Ugd2l0aCB0aGUgc3ltYm9scyB0byBlc3RhYmxpc2ggdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCB1bmRlcnN0YW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGFoNl9pbnB1dGAgYW5kIGBhaDZfb3V0cHV0YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjcml0aWNhbCBmb3IgQUggcHJvY2Vzc2luZyBpbiBJUHY2LCBzbyBJIHNob3VsZCBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZWlyIGZ1bmN0aW9uIGNsZWFybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTk5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjI2LjE5NDQxODI5N1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA5MzE2Nzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgYWg2X2lucHV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2FoNi5jPTM1MD1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni9haDYuYy00NzQtXFxubmV0L2lwdjYvYWg2LmM6NDc1OnN0YXRpYyB2b2lkIGFoNl9pbnB1dF9kb25lKHZvaWQgKmRhdGEsIGludCBlcnIpXFxubmV0L2lwdjYvYWg2LmMtNDc2LXtcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTUxOC1cXG5uZXQvaXB2Ni9haDYuYzo1MTk6c3RhdGljIGludCBhaDZfaW5wdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2lwdjYvYWg2LmMtNTIwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzY6MjkuMjg3NTkwOTgxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjI2OTEzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgQ29yZSBGdW5jdGlvbmFsaXR5KipcblxuUmlnaHQsIHNvLCB0YWtpbmcgc3RvY2sgb2YgdGhpbmdzLi4uIFllcywgSSdtIHByZXR0eSBjZXJ0YWluIHRob3NlIGFyZSBpbmRlZWQgdGhlICpwcmltYXJ5KiBmdW5jdGlvbnMgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuIE5vIHF1ZXN0aW9uIGFib3V0IGl0LiBCdXQsIHlvdSBrbm93IG1lLCBJIGxpa2UgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBJIG1vdmUgZm9yd2FyZC4gQSBzb2xpZCB2ZXJpZmljYXRpb24gaXMgYWx3YXlzIHdpc2UsIHNvIGxldCdzIGp1c3QgdGFrZSBhIHF1aWNrIHBlZWsgYXQgYHhmcm1fb3V0cHV0YCBhZ2FpbiwganVzdCB0byBiZSAqY29tcGxldGVseSogc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGluIG91ciBpbml0aWFsIGFuYWx5c2lzLiBJdCBuZXZlciBodXJ0cyB0byBkb3VibGUtY2hlY2sgdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc4NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjMzLjU1MDI4NjAzN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyNDg5MjE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgeGZybV9vdXRwdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGZybS5oPTE4MDM9aW50IHhmcm1fdHJhbnNfcXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xODA1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmICopKTtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTgwNjppbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XFxuaW5jbHVkZS9uZXQveGZybS5oOjE4MDc6aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE4MDgtaW50IHhmcm00X3R1bm5lbF9jaGVja19zaXplKHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy0yNi1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjI3OnN0YXRpYyBpbnQgeGZybV9vdXRwdXQyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTI4LXN0YXRpYyBpbnQgeGZybV9pbm5lcl9leHRyYWN0X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTQ5Nj1FWFBPUlRfU1lNQk9MX0dQTChwa3RnZW5feGZybV9vdXRlcl9tb2RlX291dHB1dCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTQ5OC1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjQ5OTpzdGF0aWMgaW50IHhmcm1fb3V0cHV0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTAwLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTkyLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM6NTkzOmludCB4ZnJtX291dHB1dF9yZXN1bWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTk0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIyPXN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTMtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2NTQ6c3RhdGljIGludCB4ZnJtX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTUte1xcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTgtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2NTk6c3RhdGljIGludCB4ZnJtX291dHB1dF9nc28oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NjAte1xcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYz02OTc9c3RhdGljIHZvaWQgeGZybV9nZXRfaW5uZXJfaXBwcm90byhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzQ3LVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM6NzQ4OmludCB4ZnJtX291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03NDkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNjozNi42NzUxODE5NDJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3NDgzODEzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTZWN1cml0eSBJbXBsaWNhdGlvbnMgb2YgVGhpcyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBtZXRob2RpY2FsbHkgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGUgY2hhbmdlcy4gUmlnaHQgbm93LCBJJ20gdmVyaWZ5aW5nIHRoZSBmdW5jdGlvbiBuYW1lcywganVzdCB0byBiZSBzdXJlIEknbSB1c2luZyB0aGUgY29ycmVjdCBpZGVudGlmaWVycy4gKmB4ZnJtX291dHB1dGAqIGxvb2tzIHJpZ2h0LCBJIGNvbmZpcm0gKmBuYXRfa2VlcGFsaXZlX3dvcmtgKiBpcyB0aGUgY29ycmVjdCBuYW1lLi4uIGFuZCAqYHhmcm1fYWRkX3NhYCosICpgZXNwaW50Y3BfY2xvc2VgKiwgKmBlc3BpbnRjcF9yY3ZgKiwgKmB4ZnJtNl9pbnB1dF9hZGRyYCosICpgYWg2X2lucHV0YCogYW5kICpgYWg2X291dHB1dGAqIGFyZSBhbGwgdmVyaWZpZWQuXG5cblRoZSByZWFzb24gSSdtIGRvaW5nIHRoaXMgaXMgYmVjYXVzZSB0aGUgcGF0Y2ggZGVzY3JpcHRpb24gaW5kaWNhdGVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aXRoaW4gdGhlIGNvcmUgb2YgdGhlIG5ldHdvcmsgc3RhY2suIFNwZWNpZmljYWxseSwgdGhlcmUncyBhIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHJvdXRpbmcgc2VjdXJpdHkuIFRoZXJlIGlzIGFsc28gYSBkZXB0aCBjaGVjayBmaXggaW4gYHhmcm02X2lucHV0X2FkZHJgLiBBIG51bGwgcG9pbnRlciBjaGVjayBpcyBiZWluZyBhZGRlZCB0byBgc2tiLVx1MDAzZWRldmAgd2l0aGluIGBoYW5kbGVfZXNwYCwgd2hpY2ggaXMgYSBjb21tb24gc291cmNlIG9mIGV4cGxvaXRhYmxlIGVycm9ycyBpZiBtaXNoYW5kbGVkLiBSZXBsYWNpbmcgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAgaXMgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gUmV3cml0aW5nIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGVzdGVkLCBhcyBpdCBjb3VsZCBoYXZlIHN1YnRsZSBlZmZlY3RzIG9uIHNlY3VyaXR5LiBJIGFsc28gc2VlIGEgZG91YmxlLWZyZWUgcmVtb3ZlZCBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIHdoaWNoIGlzIGFuIGV4cGxvaXRhYmxlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlLCBhbmQgYSBmaXggaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmb3IgYSBmaWVsZCBjaGVjay4gVGhlc2UgYXJlIGFsbCBjcml0aWNhbCBhcmVhcyBvZiB0aGUga2VybmVsLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGFyZWFzIGZvciBmdXp6aW5nIHdpbGwgYmU6XG5cbiogICBgYWg2X2lucHV0YFxuKiAgIGBhaDZfb3V0cHV0YFxuKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYFxuKiAgIGBlc3BpbnRjcF9yY3ZgXG4qICAgYGVzcGludGNwX2Nsb3NlYFxuKiAgIGB4ZnJtX291dHB1dGBcbiogICBgeGZybV9hZGRfc2FgXG4qICAgYG5hdF9rZWVwYWxpdmVfd29ya2BcblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIHRoZSBjb25maWdzIEkgbmVlZCBhcmU6IGBJTkVUNl9BSGAsIGBJTkVUX0VTUElOVENQYCwgYW5kIGBYRlJNX1VTRVJgLlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTc1NSwiT3V0cHV0VG9rZW5zIjoyOTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzY6NDguNDIzNTY3Mjg3WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NDA3NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUNl9BSFwiLFxuICAgIFwiSU5FVF9FU1BJTlRDUFwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWg2X2lucHV0XCIsXG4gICAgXCJhaDZfb3V0cHV0XCIsXG4gICAgXCJ4ZnJtNl9pbnB1dF9hZGRyXCIsXG4gICAgXCJlc3BpbnRjcF9yY3ZcIixcbiAgICBcImVzcGludGNwX2Nsb3NlXCIsXG4gICAgXCJ4ZnJtX291dHB1dFwiLFxuICAgIFwieGZybV9hZGRfc2FcIixcbiAgICBcIm5hdF9rZWVwYWxpdmVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXFx1MDAzZWRldmAgaW4gYGhhbmRsZV9lc3BgIChFU1AgaW4gVENQKSwgcmVwbGFjZXMgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAsIHJld3JpdGVzIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgcmVtb3ZlcyBhIGRvdWJsZS1mcmVlIGluIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YCwgYW5kIGZpeGVzIGEgZmllbGQgY2hlY2sgaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YC4gVGhlc2UgYXJlIGFsbCByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBhbmQgSVBzZWMgbG9naWMsIHdoaWNoIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVDZfQUhcIixcbiAgICBcIklORVRfRVNQSU5UQ1BcIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoNl9pbnB1dFwiLFxuICAgIFwiYWg2X291dHB1dFwiLFxuICAgIFwieGZybTZfaW5wdXRfYWRkclwiLFxuICAgIFwiZXNwaW50Y3BfcmN2XCIsXG4gICAgXCJlc3BpbnRjcF9jbG9zZVwiLFxuICAgIFwieGZybV9vdXRwdXRcIixcbiAgICBcInhmcm1fYWRkX3NhXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29udGFpbnMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUHY2IGFuZCBJUHNlYy9YRlJNIG5ldHdvcmtpbmcgc3RhY2suIEl0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IsIGZpeGVzIGEgZGVwdGggY2hlY2sgaW4gYHhmcm02X2lucHV0X2FkZHJgLCBhZGRzIGEgTlVMTCBwb2ludGVyIGNoZWNrIGZvciBgc2tiLVxcdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNjo0OC41NzA5ODIwMzlaIiwiU2VxIjo0NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjUxODI5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzY6NDguNTcxNTEyNjM5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNjUxMjkzNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDozNDowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmNcbmluZGV4IDc2ZjdhMmRlOTEwOGUuLmM5NmY3ZTBkMGE0ODEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9haDYuY1xuKysrIGIvbmV0L2lwdjYvYWg2LmNcbkBAIC0yMzIsMjYgKzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlc1xuICAqXHRSZWFycmFuZ2UgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gQGlwaCBhbmQgdGhlIGFkZHJlc3NlcyBpbiBAcnRoZHJcbiAgKlx0c28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi5cbiAgKlx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2ZcbisgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi5cbiAgKi9cbi1zdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuK3N0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiB7XG4tXHRpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4rXHR1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHJzO1xuIFx0c3RydWN0IGluNl9hZGRyIGZpbmFsX2FkZHI7XG4gXG4gXHRzZWdtZW50c19sZWZ0ID0gcnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdDtcbiBcdGlmIChzZWdtZW50c19sZWZ0ID09IDApXG4tXHRcdHJldHVybjtcbi1cdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuK1x0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFRoZSB2YWx1ZSBvZiBydGhkci1cdTAwM2VoZHJsZW4gaGFzIGJlZW4gdmVyaWZpZWQgZWl0aGVyIGJ5IHRoZSBzeXN0ZW1cbi1cdCAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nXG4tXHQgKiBwYWNrZXRzLiAgU28gd2UgY2FuIGFzc3VtZSB0aGF0IGl0IGlzIGV2ZW4gYW5kIHRoYXQgc2VnbWVudHMgaXNcbi1cdCAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzZWdtZW50c19sZWZ0LlxuLVx0ICpcbi1cdCAqIEZvciB0aGUgc2FtZSByZWFzb24gd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgb3B0aW9uIGlzIG9mIHR5cGUgMC5cbitcdC8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50XG4rXHQgKiByZXF1aXJlZCBieSB0aGUgcnQwLXN0eWxlIGFkZHJlc3MgcmVhcnJhbmdlbWVudCBiZWxvdy5cbiBcdCAqL1xuIFx0c2VnbWVudHMgPSBydGhkci1cdTAwM2VoZHJsZW4gXHUwMDNlXHUwMDNlIDE7XG4rXHRpZiAoc2VnbWVudHNfbGVmdCBcdTAwM2Ugc2VnbWVudHMpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0cnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdCA9IDA7XG4gXG4gXHRhZGRycyA9ICgoc3RydWN0IHJ0MF9oZHIgKilydGhkciktXHUwMDNlYWRkcjtcbiBcdGZpbmFsX2FkZHIgPSBhZGRyc1tzZWdtZW50cyAtIDFdO1xuQEAgLTI2MSw2ICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIFxuIFx0YWRkcnNbMF0gPSBpcGgtXHUwMDNlZGFkZHI7XG4gXHRpcGgtXHUwMDNlZGFkZHIgPSBmaW5hbF9hZGRyO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbkBAIC0yNzMsNiArMjc3LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuIFx0fSBleHRoZHIgPSB7IC5pcGggPSBpcGggfTtcbiBcdGNoYXIgKmVuZCA9IGV4dGhkci5yYXcgKyBsZW47XG4gXHRpbnQgbmV4dGhkciA9IGlwaC1cdTAwM2VuZXh0aGRyO1xuK1x0aW50IGVycjtcbiBcbiBcdGV4dGhkci5pcGgrKztcbiBcbkBAIC0yOTIsNyArMjk3LDkgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRjYXNlIE5FWFRIRFJfUk9VVElORzpcbi1cdFx0XHRpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xuK1x0XHRcdGVyciA9IGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiBlcnI7XG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfaW5wdXQuYyBiL25ldC9pcHY2L3hmcm02X2lucHV0LmNcbmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG4rKysgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG5AQCAtMjQ3LDcgKzI0Nyw3IEBAIGludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcbiBcdFx0Z290byBkcm9wO1xuIFx0fVxuIFxuLVx0aWYgKDEgKyBzcC1cdTAwM2VsZW4gPT0gWEZSTV9NQVhfREVQVEgpIHtcbitcdGlmIChzcC1cdTAwM2VsZW4gXHUwMDNlPSBYRlJNX01BWF9ERVBUSCkge1xuIFx0XHRYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7XG4gXHRcdGdvdG8gZHJvcDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQveGZybS9lc3BpbnRjcC5jIGIvbmV0L3hmcm0vZXNwaW50Y3AuY1xuaW5kZXggMzc0ZTFiOTY0NDM4My4uNjc0YWVkYzVhZjVhMiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL2VzcGludGNwLmNcbisrKyBiL25ldC94ZnJtL2VzcGludGNwLmNcbkBAIC0zNyw2ICszNywxMSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIHNrYi1cdTAwM2Vza2JfaWlmKTtcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGlmIChzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG5AQCAtNDUsNiArNTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcbiAjZW5kaWZcbiBcdFx0eGZybTRfcmN2X2VuY2FwKHNrYiwgSVBQUk9UT19FU1AsIDAsIFRDUF9FTkNBUF9FU1BJTlRDUCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbitvdXQ6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG5AQCAtNTE1LDcgKzUyMSw4IEBAIHN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxuIFx0c3RycF9zdG9wKFx1MDAyNmN0eC1cdTAwM2VzdHJwKTtcbiBcbiBcdHNrLVx1MDAzZXNrX3Byb3QgPSBcdTAwMjZ0Y3BfcHJvdDtcbi1cdGJhcnJpZXIoKTtcbitcbitcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuIFx0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2Y3R4LVx1MDAzZXdvcmspO1xuIFx0c3RycF9kb25lKFx1MDAyNmN0eC1cdTAwM2VzdHJwKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCBlYjFiNmY2NzczOWUxLi41Y2Q2ZDQzMTY0ZGJjIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTU1LDI1ICsxNTUsNTAgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSlcbiBcdH1cbiB9XG4gXG4rZW51bSB7XG4rXHROQVRfS0VFUEFMSVZFX0JBVENIX1NJWkUgPSAxNixcbitcdE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCA9IDEsXG4rfTtcbitcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4rXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqYmF0Y2hbTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFXTtcbitcdHVuc2lnbmVkIGludCBucjtcbiBcdHRpbWU2NF90IG5leHRfcnVuO1xuIFx0dGltZTY0X3Qgbm93O1xuIH07XG4gXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbitzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiB7XG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xuK1xuK1x0aWYgKCFSRUFEX09OQ0UoeC1cdTAwM2VuYXRfa2VlcGFsaXZlX2ludGVydmFsKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRpZiAoY3R4LVx1MDAzZW5yID09IEFSUkFZX1NJWkUoY3R4LVx1MDAzZWJhdGNoKSlcbitcdFx0cmV0dXJuIE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTDtcbitcbitcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbitcdGN0eC1cdTAwM2ViYXRjaFtjdHgtXHUwMDNlbnIrK10gPSB4O1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxuK3tcbiBcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xuLVx0dGltZTY0X3QgbmV4dF9ydW47XG4rXHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XG4gXHR1MzIgaW50ZXJ2YWw7XG4gXHRpbnQgZGVsdGE7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitcbitcdGlmICh4LVx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcbitcdFx0Z290byBvdXQ7XG4rXG4gXHRpbnRlcnZhbCA9IHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcbiBcdGlmICghaW50ZXJ2YWwpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rXHRcdGdvdG8gb3V0O1xuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTg3LDE0ICsyMTIsMTQgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiBcdFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xuIFx0fVxuIFxuLVx0c3Bpbl91bmxvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitvdXQ6XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuIFxuIFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxuIFx0XHRuYXRfa2VlcGFsaXZlX3NlbmQoXHUwMDI2a2EpO1xuIFxuLVx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbitcdGlmIChuZXh0X3J1biBcdTAwMjZcdTAwMjYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bikpXG4gXHRcdGN0eC1cdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5AQCAtMjAyLDEzICsyMjcsMjMgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDtcbiBcdHN0cnVjdCB4ZnJtX3N0YXRlX3dhbGsgd2FsaztcbiBcdHN0cnVjdCBuZXQgKm5ldDtcbitcdGludCBlcnIsIGk7XG4gXG4gXHRjdHgubmV4dF9ydW4gPSAwO1xuIFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcbiBcbiBcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbi1cdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG4rXHRkbyB7XG4rXHRcdGN0eC5uciA9IDA7XG4rXHRcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0LCBcdTAwMjZjdHgpO1xuK1x0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGN0eC5ucjsgaSsrKSB7XG4rXHRcdFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShjdHguYmF0Y2hbaV0sIFx1MDAyNmN0eCk7XG4rXHRcdFx0eGZybV9zdGF0ZV9wdXQoY3R4LmJhdGNoW2ldKTtcbitcdFx0fVxuK1x0XHRsb2NhbF9iaF9lbmFibGUoKTtcbitcdH0gd2hpbGUgKGVyciA9PSBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwpO1xuIFx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXHUwMDI2d2FsaywgbmV0KTtcbiBcdGlmIChjdHgubmV4dF9ydW4pXG4gXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9vdXRwdXQuYyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmNcbmluZGV4IGNjMzVjMmZjYmJlMDkuLmUzMDViYTMyZTM1NmIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jXG4rKysgYi9uZXQveGZybS94ZnJtX291dHB1dC5jXG5AQCAtNjM2LDEwICs2MzYsOCBAQCBzdGF0aWMgaW50IHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdG5mX3Jlc2V0X2N0KHNrYik7XG4gXG4gXHRlcnIgPSBza2JfZHN0KHNrYiktXHUwMDNlb3BzLVx1MDAzZWxvY2FsX291dChuZXQsIHNrLCBza2IpO1xuLVx0aWYgKHVubGlrZWx5KGVyciAhPSAxKSkge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICh1bmxpa2VseShlcnIgIT0gMSkpXG4gXHRcdHJldHVybiBlcnI7XG4tXHR9XG4gXG4gXHQvKiBJbiB0cmFuc3BvcnQgbW9kZSwgbmV0d29yayBkZXN0aW5hdGlvbiBpc1xuIFx0ICogZGlyZWN0bHkgcmVhY2hhYmxlLCB3aGlsZSBpbiB0dW5uZWwgbW9kZSxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5pbmRleCBkNmRiNjMzMDRiYTZiLi42MjY2YTkyY2YzMDIwIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5AQCAtOTQwLDcgKzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxuIFx0aWYgKChlcnIgPSBhdHRhY2hfYXV0aF90cnVuYyhcdTAwMjZ4LVx1MDAzZWFhbGcsIFx1MDAyNngtXHUwMDNlcHJvcHMuYWFsZ28sXG4gXHRcdFx0XHQgICAgIGF0dHJzW1hGUk1BX0FMR19BVVRIX1RSVU5DXSwgZXh0YWNrKSkpXG4gXHRcdGdvdG8gZXJyb3I7XG4tXHRpZiAoIXgtXHUwMDNlcHJvcHMuYWFsZ28pIHtcbitcdGlmICgheC1cdTAwM2VhYWxnKSB7XG4gXHRcdGlmICgoZXJyID0gYXR0YWNoX2F1dGgoXHUwMDI2eC1cdTAwM2VhYWxnLCBcdTAwMjZ4LVx1MDAzZXByb3BzLmFhbGdvLFxuIFx0XHRcdFx0ICAgICAgIGF0dHJzW1hGUk1BX0FMR19BVVRIXSwgZXh0YWNrKSkpXG4gXHRcdFx0Z290byBlcnJvcjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjQ4LjU3MTUxMzUwOVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTY1MTI2MjI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIGFzc2VzcyB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGVzZSBjaGFuZ2VzIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLCBzaW5jZSBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gY2F0Y2ggdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gTGV0J3MgZGlnIGluLlxuXG5UaGUgZmlyc3QgcGF0Y2ggdG91Y2hlcyBgbmV0L2lwdjYvYWg2LmNgLiBJdCBsb29rcyBsaWtlIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgZ290IGEgYm91bmRzIGNoZWNrIGFkZGVkIHRvIGl0LiBCYXNpY2FsbHksIGl0J3MgYSB2YWxpZGF0aW9uIGZpeCBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGlzIGdvb2QsIGJ1dCBpdCBkb2Vzbid0IHNjcmVhbSBcInVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWtcIiB0byBtZS4gTW92aW5nIG9uLCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGp1c3QgaGFuZGxlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoYXQgZnVuY3Rpb24uXG5cbk5leHQsIHdlIGhhdmUgYG5ldC9pcHY2L3hmcm02X2lucHV0LmNgLCB3aGljaCBpcyBhbHNvIGEgYm91bmRzIGNoZWNrLiBJdCdzIHRpZ2h0ZW5pbmcgdXAgYSBjb25kaXRpb24gdG8gcHJldmVudCBpc3N1ZXMsIGJ1dCBzdGlsbCBkb2Vzbid0IGFwcGVhciB0byBiZSBhIEtNU0FOIHRhcmdldC5cblxuVGhlIHRoaXJkIHBhdGNoLCBgbmV0L3hmcm0vZXNwaW50Y3AuY2AsIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGFuZCBhZGRyZXNzZXMgc29tZSB1c2UtYWZ0ZXItZnJlZSBhbmQgY29uY3VycmVuY3kgaXNzdWVzLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgYSBjaGVjayBmb3IgYCFza2ItXHUwMDNlZGV2YCBhbmQgc3dhcHMgb3V0IGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYC4gSW1wb3J0YW50IGZpeGVzLCBidXQgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cblRoZW4sIHRoZXJlJ3MgYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgd2hpY2ggc2VlbXMgdG8gYmUgYWxsIGFib3V0IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLiBJdCByZXN0cnVjdHVyZXMgd29yayBwcm9jZXNzaW5nIHVzaW5nIGEgYGJhdGNoYCBhcnJheSwgcmVwbGFjZXMgYHNwaW5fbG9ja2Agd2l0aCBgc3Bpbl9sb2NrX2JoYCwgYW5kIGFkZHMgYHhmcm1fc3RhdGVfaG9sZGAgYW5kIGB4ZnJtX3N0YXRlX3B1dGAuIFRoaXMgaXMgc29saWQsIGJ1dCBhZ2FpbiwgZG9lc24ndCBzZWVtIHRvIGJlIGEgS01TQU4gaXNzdWUgc3BlY2lmaWNhbGx5LlxuXG5JbiBgbmV0L3hmcm0veGZybV9vdXRwdXQuY2AsIHRoZXJlJ3MgYSBmaXggZm9yIGRvdWJsZSBmcmVlcyBvciBtZW1vcnkgbGVha3MuIFRoZSBwYXRjaCByZW1vdmVzIGEgYGtmcmVlX3NrYihza2IpYCBjYWxsIHVuZGVyIGNlcnRhaW4gZXJyb3IgY29uZGl0aW9ucy4gVGhpcyBpcyBnb29kIHNhbml0YXRpb24sIGJ1dCBub3QgYSBLTVNBTiBmbGFnLlxuXG5MYXN0bHksIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgaGFzIGEgc2ltcGxlIGxvZ2ljIGJ1ZyBmaXguIEl0IGNoYW5nZXMgYSBjb25kaXRpb25hbCBjaGVjaywgYnV0IHRoaXMgYWdhaW4gaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuU28sIHNjYW5uaW5nIHRoZXNlIGNoYW5nZXMsIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIEtNU0FOIGZsYWdzLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gV2UncmUgbWFpbmx5IHNlZWluZyBmaXhlcyBmb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWUgaXNzdWVzLCBsb2NraW5nIGJ1Z3MsIGFuZCBsb2dpYyBlcnJvcnMuIFRoZXNlIGFyZSB0aGUga2luZHMgb2YgaXNzdWVzIHRoYXQgS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgdXN1YWwgc3VzcGVjdHMgYXJlIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5MZXQncyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayBvbiBgbmV0L2lwdjYvYWg2LmNgLiBUaGF0IGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgZnVuY3Rpb24gd2l0aCB0aGUgYm91bmRzIGNoZWNrLi4uIGBzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50c2AuLi4gdGhhdCBjbGVhcmx5IHByZXZlbnRzIHJlYWRpbmcgb3V0c2lkZSB0aGUgYGFkZHJzYCBhcnJheS4gIEEgS0FTQU4gd291bGQgZGVmaW5pdGVseSBzZWUgdGhhdC5cblxuQW5kIHRoYXQgYG5hdF9rZWVwYWxpdmVfd29ya19jdHhgIGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2Agd2l0aCBpdHMgYGJhdGNoYCBhcnJheS4uLiB0aGUgYXJyYXkgaXRzZWxmIGlzIHBvcHVsYXRlZCBhbmQgdXNlZCBjb3JyZWN0bHkuIFRoZXJlJ3Mgbm8gbHVya2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGVyZS5cblxuQ29uY2x1c2lvbjogTm8sIHdlICpkb24ndCogbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGZvciB0aGlzLiBUaGVzZSBwYXRjaGVzIGFkZHJlc3MgdnVsbmVyYWJpbGl0aWVzIHRoYXQgYXJlIHdlbGwtY292ZXJlZCBieSBleGlzdGluZyB0b29scy4gTXkgcmVhc29uaW5nIGlzIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ2LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM3OjAwLjIyMjc4MDE5NloiLCJTZXEiOjUwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIChpbiBpcHY2X3JlYXJyYW5nZV9ydGhkciBhbmQgeGZybTZfaW5wdXRfYWRkciksIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgKGluIGhhbmRsZV9lc3ApLCB1c2UtYWZ0ZXItZnJlZS9jb25jdXJyZW5jeSBpc3N1ZXMgKGluIGVzcGludGNwX2Nsb3NlIGFuZCB4ZnJtX25hdF9rZWVwYWxpdmUpLCBkb3VibGUgZnJlZSAoaW4geGZybV9kZXZfZGlyZWN0X291dHB1dCksIGFuZCBsb2dpYyBlcnJvcnMgKGluIHhmcm1fc3RhdGVfY29uc3RydWN0KS4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlc2UgY2hhbmdlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-18 09:50:00 +0000 UTC FinishedAt: 2026-08-18 10:37:01 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET6_AH", "INET_ESPINTCP", "XFRM_USER" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "net-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git", "commit_hash": "3aa1dcaa4f6f5ae08936491e08bd456f331f2d40", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "INET6_AH", "INET_ESPINTCP", "XFRM_USER" ], "series_id": "1356536f-d75c-4668-aaa8-2262a2ec1354" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "ah6_input", "ah6_output", "xfrm6_input_addr", "espintcp_rcv", "espintcp_close", "xfrm_output", "xfrm_add_sa", "nat_keepalive_work" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybTZfaW5wdXRfYWRkciYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9yY3YmIzM0OywKICAgICYjMzQ7ZXNwaW50Y3BfY2xvc2UmIzM0OywKICAgICYjMzQ7eGZybV9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybV9hZGRfc2EmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIChpbiBpcHY2X3JlYXJyYW5nZV9ydGhkciBhbmQgeGZybTZfaW5wdXRfYWRkciksIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgKGluIGhhbmRsZV9lc3ApLCB1c2UtYWZ0ZXItZnJlZS9jb25jdXJyZW5jeSBpc3N1ZXMgKGluIGVzcGludGNwX2Nsb3NlIGFuZCB4ZnJtX25hdF9rZWVwYWxpdmUpLCBkb3VibGUgZnJlZSAoaW4geGZybV9kZXZfZGlyZWN0X291dHB1dCksIGFuZCBsb2dpYyBlcnJvcnMgKGluIHhmcm1fc3RhdGVfY29uc3RydWN0KS4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlc2UgY2hhbmdlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnRhaW5zIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBJdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYW5kIHByb3BhZ2F0ZXMgdGhlIGVycm9yLCBmaXhlcyBhIGRlcHRoIGNoZWNrIGluIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYWRkcyBhIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgYHNrYi1cdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5yZWFkLXBhdGNoLWRpZmY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtQYXRjaERpZmYmIzM0OzogJiMzNDtjb21taXQgYTQwNjNlMmNjMGMxOTBlNTBhMWM5ZDUzM2NjZDk5MDE4YTljNzZlZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBUdWUgQXVnIDE4IDEwOjM0OjA2IDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmNcbmluZGV4IDc2ZjdhMmRlOTEwOGUuLmM5NmY3ZTBkMGE0ODEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9haDYuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmNcbkBAIC0yMzIsMjYgJiM0MzsyMzIsMjggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0UmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyXG4gICpcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXG4gICpcdFNlZSBBcHBlbmRpeCBBMiBvZiBSRkMgMjQwMiBmb3IgZGV0YWlscy5cbiYjNDM7ICpcbiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2ZcbiYjNDM7ICogYWRkcmVzc2VzIGRlc2NyaWJlZCBieSBoZHJsZW4uXG4gICovXG4tc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiYjNDM7c3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIHtcbi1cdGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcbiYjNDM7XHR1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHJzO1xuIFx0c3RydWN0IGluNl9hZGRyIGZpbmFsX2FkZHI7XG4gXG4gXHRzZWdtZW50c19sZWZ0ID0gcnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdDtcbiBcdGlmIChzZWdtZW50c19sZWZ0ID09IDApXG4tXHRcdHJldHVybjtcbi1cdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuJiM0MztcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBUaGUgdmFsdWUgb2YgcnRoZHItXHUwMDNlaGRybGVuIGhhcyBiZWVuIHZlcmlmaWVkIGVpdGhlciBieSB0aGUgc3lzdGVtXG4tXHQgKiBjYWxsIGlmIGl0IGlzIGxvY2FsbHkgZ2VuZXJhdGVkLCBvciBieSBpcHY2X3J0aGRyX3JjdigpIGZvciBpbmNvbWluZ1xuLVx0ICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzXG4tXHQgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VnbWVudHNfbGVmdC5cbi1cdCAqXG4tXHQgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuXG4mIzQzO1x0LyogUmF3IGxvY2FsbHkgZ2VuZXJhdGVkIHBhY2tldHMgY2FuIHJlYWNoIEFINiB3aXRob3V0IHRoZSBpbnZhcmlhbnRcbiYjNDM7XHQgKiByZXF1aXJlZCBieSB0aGUgcnQwLXN0eWxlIGFkZHJlc3MgcmVhcnJhbmdlbWVudCBiZWxvdy5cbiBcdCAqL1xuIFx0c2VnbWVudHMgPSBydGhkci1cdTAwM2VoZHJsZW4gXHUwMDNlXHUwMDNlIDE7XG4mIzQzO1x0aWYgKHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuJiM0MztcdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuIFxuIFx0YWRkcnMgPSAoKHN0cnVjdCBydDBfaGRyICopcnRoZHIpLVx1MDAzZWFkZHI7XG4gXHRmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTtcbkBAIC0yNjEsNiAmIzQzOzI2Myw4IEBAIHN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4gXG4gXHRhZGRyc1swXSA9IGlwaC1cdTAwM2VkYWRkcjtcbiBcdGlwaC1cdTAwM2VkYWRkciA9IGZpbmFsX2FkZHI7XG4mIzQzO1xuJiM0MztcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5AQCAtMjczLDYgJiM0MzsyNzcsNyBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG4gXHR9IGV4dGhkciA9IHsgLmlwaCA9IGlwaCB9O1xuIFx0Y2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47XG4gXHRpbnQgbmV4dGhkciA9IGlwaC1cdTAwM2VuZXh0aGRyO1xuJiM0MztcdGludCBlcnI7XG4gXG4gXHRleHRoZHIuaXBoJiM0MzsmIzQzOztcbiBcbkBAIC0yOTIsNyAmIzQzOzI5Nyw5IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBORVhUSERSX1JPVVRJTkc6XG4tXHRcdFx0aXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbiYjNDM7XHRcdFx0ZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbiYjNDM7XHRcdFx0aWYgKGVycilcbiYjNDM7XHRcdFx0XHRyZXR1cm4gZXJyO1xuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG5pbmRleCA4OWQwNDQzYjUzMDczLi4wN2VkZWYyNTg5ODQ0IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuQEAgLTI0Nyw3ICYjNDM7MjQ3LDcgQEAgaW50IHhmcm02X2lucHV0X2FkZHIoc3RydWN0IHNrX2J1ZmYgKnNrYiwgeGZybV9hZGRyZXNzX3QgKmRhZGRyLFxuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG4gXG4tXHRpZiAoMSAmIzQzOyBzcC1cdTAwM2VsZW4gPT0gWEZSTV9NQVhfREVQVEgpIHtcbiYjNDM7XHRpZiAoc3AtXHUwMDNlbGVuIFx1MDAzZT0gWEZSTV9NQVhfREVQVEgpIHtcbiBcdFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOQlVGRkVSRVJST1IpO1xuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0vZXNwaW50Y3AuYyBiL25ldC94ZnJtL2VzcGludGNwLmNcbmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS9lc3BpbnRjcC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS9lc3BpbnRjcC5jXG5AQCAtMzcsNiAmIzQzOzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxuIFxuIFx0cmN1X3JlYWRfbG9jaygpO1xuIFx0c2tiLVx1MDAzZWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHNvY2tfbmV0KHNrKSwgc2tiLVx1MDAzZXNrYl9paWYpO1xuJiM0MztcdGlmICghc2tiLVx1MDAzZWRldikge1xuJiM0MztcdFx0WEZSTV9JTkNfU1RBVFMoc29ja19uZXQoc2spLCBMSU5VWF9NSUJfWEZSTUlORVJST1IpO1xuJiM0MztcdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0XHRnb3RvIG91dDtcbiYjNDM7XHR9XG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4gXHRpZiAoc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuQEAgLTQ1LDYgJiM0Mzs1MCw3IEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxuICNlbmRpZlxuIFx0XHR4ZnJtNF9yY3ZfZW5jYXAoc2tiLCBJUFBST1RPX0VTUCwgMCwgVENQX0VOQ0FQX0VTUElOVENQKTtcbiBcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztvdXQ6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG5AQCAtNTE1LDcgJiM0Mzs1MjEsOCBAQCBzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcbiBcdHN0cnBfc3RvcChcdTAwMjZjdHgtXHUwMDNlc3RycCk7XG4gXG4gXHRzay1cdTAwM2Vza19wcm90ID0gXHUwMDI2dGNwX3Byb3Q7XG4tXHRiYXJyaWVyKCk7XG4mIzQzO1xuJiM0MztcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuIFx0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2Y3R4LVx1MDAzZXdvcmspO1xuIFx0c3RycF9kb25lKFx1MDAyNmN0eC1cdTAwM2VzdHJwKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCBlYjFiNmY2NzczOWUxLi41Y2Q2ZDQzMTY0ZGJjIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTU1LDI1ICYjNDM7MTU1LDUwIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gXHR9XG4gfVxuIFxuJiM0MztlbnVtIHtcbiYjNDM7XHROQVRfS0VFUEFMSVZFX0JBVENIX1NJWkUgPSAxNixcbiYjNDM7XHROQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwgPSAxLFxuJiM0Mzt9O1xuJiM0MztcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4mIzQzO1x0c3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07XG4mIzQzO1x0dW5zaWduZWQgaW50IG5yO1xuIFx0dGltZTY0X3QgbmV4dF9ydW47XG4gXHR0aW1lNjRfdCBub3c7XG4gfTtcbiBcbi1zdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxuJiM0MztzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiB7XG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xuJiM0MztcbiYjNDM7XHRpZiAoIVJFQURfT05DRSh4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxuJiM0MztcdFx0cmV0dXJuIDA7XG4mIzQzO1xuJiM0MztcdGlmIChjdHgtXHUwMDNlbnIgPT0gQVJSQVlfU0laRShjdHgtXHUwMDNlYmF0Y2gpKVxuJiM0MztcdFx0cmV0dXJuIE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTDtcbiYjNDM7XG4mIzQzO1x0eGZybV9zdGF0ZV9ob2xkKHgpO1xuJiM0MztcdGN0eC1cdTAwM2ViYXRjaFtjdHgtXHUwMDNlbnImIzQzOyYjNDM7XSA9IHg7XG4mIzQzO1x0cmV0dXJuIDA7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4mIzQzO1x0XHRcdFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcbiYjNDM7e1xuIFx0Ym9vbCBzZW5kX2tlZXBhbGl2ZSA9IGZhbHNlO1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmUga2E7XG4tXHR0aW1lNjRfdCBuZXh0X3J1bjtcbiYjNDM7XHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XG4gXHR1MzIgaW50ZXJ2YWw7XG4gXHRpbnQgZGVsdGE7XG4gXG4mIzQzO1x0c3Bpbl9sb2NrX2JoKFx1MDAyNngtXHUwMDNlbG9jayk7XG4mIzQzO1xuJiM0MztcdGlmICh4LVx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcbiYjNDM7XHRcdGdvdG8gb3V0O1xuJiM0MztcbiBcdGludGVydmFsID0geC1cdTAwM2VuYXRfa2VlcGFsaXZlX2ludGVydmFsO1xuIFx0aWYgKCFpbnRlcnZhbClcbi1cdFx0cmV0dXJuIDA7XG4tXG4tXHRzcGluX2xvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiYjNDM7XHRcdGdvdG8gb3V0O1xuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTg3LDE0ICYjNDM7MjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRcdHNlbmRfa2VlcGFsaXZlID0gdHJ1ZTtcbiBcdH1cbiBcbi1cdHNwaW5fdW5sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4mIzQzO291dDpcbiYjNDM7XHRzcGluX3VubG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuIFxuIFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxuIFx0XHRuYXRfa2VlcGFsaXZlX3NlbmQoXHUwMDI2a2EpO1xuIFxuLVx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbiYjNDM7XHRpZiAobmV4dF9ydW4gXHUwMDI2XHUwMDI2ICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pKVxuIFx0XHRjdHgtXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcbi1cdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTIwMiwxMyAmIzQzOzIyNywyMyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xuIFx0c3RydWN0IHhmcm1fc3RhdGVfd2FsayB3YWxrO1xuIFx0c3RydWN0IG5ldCAqbmV0O1xuJiM0MztcdGludCBlcnIsIGk7XG4gXG4gXHRjdHgubmV4dF9ydW4gPSAwO1xuIFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcbiBcbiBcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbi1cdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG4mIzQzO1x0ZG8ge1xuJiM0MztcdFx0Y3R4Lm5yID0gMDtcbiYjNDM7XHRcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0LCBcdTAwMjZjdHgpO1xuJiM0MztcdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuJiM0MztcdFx0Zm9yIChpID0gMDsgaSBcdTAwM2MgY3R4Lm5yOyBpJiM0MzsmIzQzOykge1xuJiM0MztcdFx0XHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgXHUwMDI2Y3R4KTtcbiYjNDM7XHRcdFx0eGZybV9zdGF0ZV9wdXQoY3R4LmJhdGNoW2ldKTtcbiYjNDM7XHRcdH1cbiYjNDM7XHRcdGxvY2FsX2JoX2VuYWJsZSgpO1xuJiM0MztcdH0gd2hpbGUgKGVyciA9PSBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwpO1xuIFx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXHUwMDI2d2FsaywgbmV0KTtcbiBcdGlmIChjdHgubmV4dF9ydW4pXG4gXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9vdXRwdXQuYyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmNcbmluZGV4IGNjMzVjMmZjYmJlMDkuLmUzMDViYTMyZTM1NmIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQveGZybS94ZnJtX291dHB1dC5jXG5AQCAtNjM2LDEwICYjNDM7NjM2LDggQEAgc3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4gXHRuZl9yZXNldF9jdChza2IpO1xuIFxuIFx0ZXJyID0gc2tiX2RzdChza2IpLVx1MDAzZW9wcy1cdTAwM2Vsb2NhbF9vdXQobmV0LCBzaywgc2tiKTtcbi1cdGlmICh1bmxpa2VseShlcnIgIT0gMSkpIHtcbi1cdFx0a2ZyZWVfc2tiKHNrYik7XG4mIzQzO1x0aWYgKHVubGlrZWx5KGVyciAhPSAxKSlcbiBcdFx0cmV0dXJuIGVycjtcbi1cdH1cbiBcbiBcdC8qIEluIHRyYW5zcG9ydCBtb2RlLCBuZXR3b3JrIGRlc3RpbmF0aW9uIGlzXG4gXHQgKiBkaXJlY3RseSByZWFjaGFibGUsIHdoaWxlIGluIHR1bm5lbCBtb2RlLFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fdXNlci5jIGIvbmV0L3hmcm0veGZybV91c2VyLmNcbmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX3VzZXIuY1xuJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0veGZybV91c2VyLmNcbkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxuIFx0aWYgKChlcnIgPSBhdHRhY2hfYXV0aF90cnVuYyhcdTAwMjZ4LVx1MDAzZWFhbGcsIFx1MDAyNngtXHUwMDNlcHJvcHMuYWFsZ28sXG4gXHRcdFx0XHQgICAgIGF0dHJzW1hGUk1BX0FMR19BVVRIX1RSVU5DXSwgZXh0YWNrKSkpXG4gXHRcdGdvdG8gZXJyb3I7XG4tXHRpZiAoIXgtXHUwMDNlcHJvcHMuYWFsZ28pIHtcbiYjNDM7XHRpZiAoIXgtXHUwMDNlYWFsZykge1xuIFx0XHRpZiAoKGVyciA9IGF0dGFjaF9hdXRoKFx1MDAyNngtXHUwMDNlYWFsZywgXHUwMDI2eC1cdTAwM2Vwcm9wcy5hYWxnbyxcbiBcdFx0XHRcdCAgICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF0sIGV4dGFjaykpKVxuIFx0XHRcdGdvdG8gZXJyb3I7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+Mm08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybTZfaW5wdXRfYWRkciYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9yY3YmIzM0OywKICAgICYjMzQ7ZXNwaW50Y3BfY2xvc2UmIzM0OywKICAgICYjMzQ7eGZybV9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybV9hZGRfc2EmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXHUwMDNlZGV2YCBpbiBgaGFuZGxlX2VzcGAgKEVTUCBpbiBUQ1ApLCByZXBsYWNlcyBgYmFycmllcigpYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3UoKWAgaW4gYGVzcGludGNwX2Nsb3NlYCwgcmV3cml0ZXMgdGhlIE5BVCBrZWVwYWxpdmUgd29ya3F1ZXVlIHRvIHVzZSBiYXRjaGluZyBpbiBgeGZybV9uYXRfa2VlcGFsaXZlLmNgLCByZW1vdmVzIGEgZG91YmxlLWZyZWUgaW4gYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLCBhbmQgZml4ZXMgYSBmaWVsZCBjaGVjayBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLiBUaGVzZSBhcmUgYWxsIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGFuZCBJUHNlYyBsb2dpYywgd2hpY2ggYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDozNDowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmMKaW5kZXggNzZmN2EyZGU5MTA4ZS4uYzk2ZjdlMGQwYTQ4MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmMKQEAgLTIzMiwyNiAmIzQzOzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlcwogICoJUmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyCiAgKglzbyB0aGF0IHRoZXkgYXBwZWFyIGluIHRoZSBvcmRlciB0aGV5IHdpbGwgYXQgdGhlIGZpbmFsIGRlc3RpbmF0aW9uLgogICoJU2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2YKJiM0MzsgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi4KICAqLwotc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKJiM0MztzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpCiB7Ci0JaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0OwomIzQzOwl1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7CiAJc3RydWN0IGluNl9hZGRyICphZGRyczsKIAlzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjsKIAogCXNlZ21lbnRzX2xlZnQgPSBydGhkci0mZ3Q7c2VnbWVudHNfbGVmdDsKIAlpZiAoc2VnbWVudHNfbGVmdCA9PSAwKQotCQlyZXR1cm47Ci0JcnRoZHItJmd0O3NlZ21lbnRzX2xlZnQgPSAwOwomIzQzOwkJcmV0dXJuIDA7CiAKLQkvKiBUaGUgdmFsdWUgb2YgcnRoZHItJmd0O2hkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbQotCSAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nCi0JICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzCi0JICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuCi0JICoKLQkgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuCiYjNDM7CS8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50CiYjNDM7CSAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LgogCSAqLwogCXNlZ21lbnRzID0gcnRoZHItJmd0O2hkcmxlbiAmZ3Q7Jmd0OyAxOwomIzQzOwlpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJ0aGRyLSZndDtzZWdtZW50c19sZWZ0ID0gMDsKIAogCWFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS0mZ3Q7YWRkcjsKIAlmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTsKQEAgLTI2MSw2ICYjNDM7MjYzLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKIAogCWFkZHJzWzBdID0gaXBoLSZndDtkYWRkcjsKIAlpcGgtJmd0O2RhZGRyID0gZmluYWxfYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcikKQEAgLTI3Myw2ICYjNDM7Mjc3LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKQogCX0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07CiAJY2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47CiAJaW50IG5leHRoZHIgPSBpcGgtJmd0O25leHRoZHI7CiYjNDM7CWludCBlcnI7CiAKIAlleHRoZHIuaXBoJiM0MzsmIzQzOzsKIApAQCAtMjkyLDcgJiM0MzsyOTcsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpCiAJCQlicmVhazsKIAogCQljYXNlIE5FWFRIRFJfUk9VVElORzoKLQkJCWlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7CiYjNDM7CQkJZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jCmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfaW5wdXQuYwpAQCAtMjQ3LDcgJiM0MzsyNDcsNyBAQCBpbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsCiAJCWdvdG8gZHJvcDsKIAl9CiAKLQlpZiAoMSAmIzQzOyBzcC0mZ3Q7bGVuID09IFhGUk1fTUFYX0RFUFRIKSB7CiYjNDM7CWlmIChzcC0mZ3Q7bGVuICZndDs9IFhGUk1fTUFYX0RFUFRIKSB7CiAJCVhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1JTkJVRkZFUkVSUk9SKTsKIAkJZ290byBkcm9wOwogCX0KZGlmZiAtLWdpdCBhL25ldC94ZnJtL2VzcGludGNwLmMgYi9uZXQveGZybS9lc3BpbnRjcC5jCmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL2VzcGludGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0vZXNwaW50Y3AuYwpAQCAtMzcsNiAmIzQzOzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKQogCiAJcmN1X3JlYWRfbG9jaygpOwogCXNrYi0mZ3Q7ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBza2ItJmd0O3NrYl9paWYpOwomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCiAJaWYgKHNrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpCkBAIC00NSw2ICYjNDM7NTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaykKICNlbmRpZgogCQl4ZnJtNF9yY3ZfZW5jYXAoc2tiLCBJUFBST1RPX0VTUCwgMCwgVENQX0VOQ0FQX0VTUElOVENQKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MztvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKQEAgLTUxNSw3ICYjNDM7NTIxLDggQEAgc3RhdGljIHZvaWQgZXNwaW50Y3BfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiAJc3RycF9zdG9wKCZhbXA7Y3R4LSZndDtzdHJwKTsKIAogCXNrLSZndDtza19wcm90ID0gJmFtcDt0Y3BfcHJvdDsKLQliYXJyaWVyKCk7CiYjNDM7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwogCiAJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtjdHgtJmd0O3dvcmspOwogCXN0cnBfZG9uZSgmYW1wO2N0eC0mZ3Q7c3RycCk7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IGViMWI2ZjY3NzM5ZTEuLjVjZDZkNDMxNjRkYmMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCkBAIC0xNTUsMjUgJiM0MzsxNTUsNTAgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAl9CiB9CiAKJiM0MztlbnVtIHsKJiM0MzsJTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFID0gMTYsCiYjNDM7CU5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCA9IDEsCiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHsKJiM0MzsJc3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07CiYjNDM7CXVuc2lnbmVkIGludCBucjsKIAl0aW1lNjRfdCBuZXh0X3J1bjsKIAl0aW1lNjRfdCBub3c7CiB9OwogCi1zdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQomIzQzO3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogewogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7CiYjNDM7CiYjNDM7CWlmICghUkVBRF9PTkNFKHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWlmIChjdHgtJmd0O25yID09IEFSUkFZX1NJWkUoY3R4LSZndDtiYXRjaCkpCiYjNDM7CQlyZXR1cm4gTkFUX0tFRVBBTElWRV9CQVRDSF9GVUxMOwomIzQzOwomIzQzOwl4ZnJtX3N0YXRlX2hvbGQoeCk7CiYjNDM7CWN0eC0mZ3Q7YmF0Y2hbY3R4LSZndDtuciYjNDM7JiM0MztdID0geDsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpCiYjNDM7ewogCWJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTsKIAlzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTsKLQl0aW1lNjRfdCBuZXh0X3J1bjsKJiM0MzsJdGltZTY0X3QgbmV4dF9ydW4gPSAwOwogCXUzMiBpbnRlcnZhbDsKIAlpbnQgZGVsdGE7CiAKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7eC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmICh4LSZndDtrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKIAlpbnRlcnZhbCA9IHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7CiAJaWYgKCFpbnRlcnZhbCkKLQkJcmV0dXJuIDA7Ci0KLQlzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MzsJCWdvdG8gb3V0OwogCiAJZGVsdGEgPSAoaW50KShjdHgtJmd0O25vdyAtIHgtJmd0O2xhc3R1c2VkKTsKIAlpZiAoZGVsdGEgJmx0OyBpbnRlcnZhbCkgewpAQCAtMTg3LDE0ICYjNDM7MjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiAJCXNlbmRfa2VlcGFsaXZlID0gdHJ1ZTsKIAl9CiAKLQlzcGluX3VubG9jaygmYW1wO3gtJmd0O2xvY2spOwomIzQzO291dDoKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt4LSZndDtsb2NrKTsKIAogCWlmIChzZW5kX2tlZXBhbGl2ZSkKIAkJbmF0X2tlZXBhbGl2ZV9zZW5kKCZhbXA7a2EpOwogCi0JaWYgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikKJiM0MzsJaWYgKG5leHRfcnVuICZhbXA7JmFtcDsgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikpCiAJCWN0eC0mZ3Q7bmV4dF9ydW4gPSBuZXh0X3J1bjsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTIwMiwxMyAmIzQzOzIyNywyMyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDsKIAlzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7CiAJc3RydWN0IG5ldCAqbmV0OwomIzQzOwlpbnQgZXJyLCBpOwogCiAJY3R4Lm5leHRfcnVuID0gMDsKIAljdHgubm93ID0ga3RpbWVfZ2V0X3JlYWxfc2Vjb25kcygpOwogCiAJbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsIHhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLndvcmspOwogCXhmcm1fc3RhdGVfd2Fsa19pbml0KCZhbXA7d2FsaywgSVBQUk9UT19FU1AsIE5VTEwpOwotCXhmcm1fc3RhdGVfd2FsayhuZXQsICZhbXA7d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSwgJmFtcDtjdHgpOwomIzQzOwlkbyB7CiYjNDM7CQljdHgubnIgPSAwOwomIzQzOwkJZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgJmFtcDt3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgJmFtcDtjdHgpOwomIzQzOwkJbG9jYWxfYmhfZGlzYWJsZSgpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IGN0eC5ucjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgJmFtcDtjdHgpOwomIzQzOwkJCXhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7CiYjNDM7CQl9CiYjNDM7CQlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MzsJfSB3aGlsZSAoZXJyID09IE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCk7CiAJeGZybV9zdGF0ZV93YWxrX2RvbmUoJmFtcDt3YWxrLCBuZXQpOwogCWlmIChjdHgubmV4dF9ydW4pCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO25ldC0mZ3Q7eGZybS5uYXRfa2VlcGFsaXZlX3dvcmssCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX291dHB1dC5jIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuYwppbmRleCBjYzM1YzJmY2JiZTA5Li5lMzA1YmEzMmUzNTZiIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKQEAgLTYzNiwxMCAmIzQzOzYzNiw4IEBAIHN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCW5mX3Jlc2V0X2N0KHNrYik7CiAKIAllcnIgPSBza2JfZHN0KHNrYiktJmd0O29wcy0mZ3Q7bG9jYWxfb3V0KG5ldCwgc2ssIHNrYik7Ci0JaWYgKHVubGlrZWx5KGVyciAhPSAxKSkgewotCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKIAkJcmV0dXJuIGVycjsKLQl9CiAKIAkvKiBJbiB0cmFuc3BvcnQgbW9kZSwgbmV0d29yayBkZXN0aW5hdGlvbiBpcwogCSAqIGRpcmVjdGx5IHJlYWNoYWJsZSwgd2hpbGUgaW4gdHVubmVsIG1vZGUsCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LAogCWlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoJmFtcDt4LSZndDthYWxnLCAmYW1wO3gtJmd0O3Byb3BzLmFhbGdvLAogCQkJCSAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhfVFJVTkNdLCBleHRhY2spKSkKIAkJZ290byBlcnJvcjsKLQlpZiAoIXgtJmd0O3Byb3BzLmFhbGdvKSB7CiYjNDM7CWlmICgheC0mZ3Q7YWFsZykgewogCQlpZiAoKGVyciA9IGF0dGFjaF9hdXRoKCZhbXA7eC0mZ3Q7YWFsZywgJmFtcDt4LSZndDtwcm9wcy5hYWxnbywKIAkJCQkgICAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhdLCBleHRhY2spKSkKIAkJCWdvdG8gZXJyb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNDkKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiA3MTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUGF0Y2ggU2VyaWVzIGluIHRoZSBOZXR3b3JrIFN0YWNrKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayBkb3duIHRoaXMgcGF0Y2ggc2VyaWVzLiBJdCBsb29rcyBsaWtlIHdlJiMzOTt2ZSBnb3QgYSBzZXQgb2YgbW9kaWZpY2F0aW9ucyB0b3VjaGluZyBzZXZlcmFsIGtleSBmaWxlcyB3aXRoaW4gYG5ldC9pcHY2L2AgYW5kIGBuZXQveGZybS9gLCB3aGljaCBpbW1lZGlhdGVseSB0ZWxscyBtZSB0aGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byByZXZpZXcgd2l0aCBhIGZ1enppbmcgc3RyYXRlZ3kgaW4gbWluZC4gVGhlIGFmZmVjdGVkIGZpbGVzIGFyZTogYGFoNi5jYCwgYHhmcm02X2lucHV0LmNgLCBgZXNwaW50Y3AuY2AsIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIGB4ZnJtX291dHB1dC5jYCwgYW5kIGB4ZnJtX3VzZXIuY2AuCgpNeSBpbml0aWFsIHJlYWQgdGVsbHMgbWUgdGhhdCB0aGUgY2hhbmdlcyBhcmUgbGFyZ2VseSBmdW5jdGlvbmFsLCB3aGljaCBtZWFucyB3ZSBjYW4gbGlrZWx5IHRyaWdnZXIgYSByYW5nZSBvZiBuZXcgZXhlY3V0aW9uIHBhdGhzLgoKSGVyZSYjMzk7cyB0aGUgZ2lzdCBvZiB3aGF0JiMzOTtzIGhhcHBlbmluZzoKCjEuICAqKmBuZXQvaXB2Ni9haDYuY2A6KiogVGhlIHJldHVybiB0eXBlIG9mIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgaGFzIGJlZW4gY2hhbmdlZCB0byBgaW50YCwgYW5kIHRoZXJlJiMzOTtzIGEgbmV3IGNoZWNrIGZvciBhIHBvdGVudGlhbCBlcnJvciBjb25kaXRpb24gd2l0aCBgLUVJTlZBTGAsIHdoaWNoIGlzIHRoZW4gcHJvcGFnYXRlZCBieSBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgLiBUaGlzIGVycm9yIGhhbmRsaW5nIGNoYW5nZSBzaG91bGQgYmUgaW52ZXN0aWdhdGVkOyBzcGVjaWZpY2FsbHksIGlmIHRoZSBlcnJvciBjb25kaXRpb25zIGFyZSByZWFzb25hYmxlLCBnaXZlbiB0aGF0IGl0IGFwcGVhcnMgdGhlIGNhbGxlciBkaWQgbm90IGhhbmRsZSBhIGZhaWx1cmUgY2FzZS4KCjIuICAqKmBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYDoqKiBXZSYjMzk7dmUgZ290IGEgc3VidGxlIGNoYW5nZSBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIHN3aXRjaGluZyBhbiBlcXVhbGl0eSBjaGVjayB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbCBjaGVjay4gVGhpcyBjb3VsZCBiZSBhIGJvdW5kYXJ5IGNvbmRpdGlvbiBmaXggb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBpZiBub3QgaGFuZGxlZCByaWdodC4KCjMuICAqKmBuZXQveGZybS9lc3BpbnRjcC5jYDoqKiBOdWxsIGBza2ItJmd0O2RldmAgY2hlY2tzIGFkZGVkIHRvIGBoYW5kbGVfZXNwYCB0byBkcm9wIHBhY2tldHMsIGFuZCB0aGUgcmVwbGFjZW1lbnQgb2YgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAgbWFrZXMgbWUgdGhpbmsgdGhpcyBtaWdodCBiZSBhIG1lbW9yeS1zYWZldHkgaW1wcm92ZW1lbnQuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhpcyBSQ1UgY2hhbmdlIGlzIGNvcnJlY3QuCgo0LiAgKipgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgOioqIFRoZSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBoYXMgYmVlbiByZXdyaXR0ZW4gdXNpbmcgYSBiYXRjaGluZyBhcHByb2FjaC4gRGVmaW5pdGVseSBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBidXQgYWx3YXlzIHdvcnRoIGNoZWNraW5nIGZvciByYWNlcyBpbiBiYXRjaGluZyBpbXBsZW1lbnRhdGlvbnMuCgo1LiAgKipgbmV0L3hmcm0veGZybV9vdXRwdXQuY2A6KiogVGhlIGNvbmRpdGlvbmFsIGBrZnJlZV9za2JgIGNhbGwgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YCwgd2hpY2ggbWVhbnMgdGhlIGZ1bmN0aW9uIGlzIG5vdyBhc3N1bWluZyB0aGF0IGEgZmFpbGVkIGBsb2NhbF9vdXRgIGNhbGwgd2lsbCBmcmVlIHRoZSBTS0IuIFRoaXMgaXMgaW1wb3J0YW50IHRvIHZlcmlmeSBiZWNhdXNlIGRvdWJsZS1mcmVlcyBhcmUgY29tbW9uIGluIHRoZXNlIGNvbnRleHRzLgoKNi4gICoqYG5ldC94ZnJtL3hmcm1fdXNlci5jYDoqKiBBIHNtYWxsIGNoYW5nZSBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLCBzd2l0Y2hpbmcgYSBudWxsIGNoZWNrIGZvciBgeC0mZ3Q7cHJvcHMuYWFsZ29gIHRvIGB4LSZndDthYWxnYC4gVGhpcyBhcHBlYXJzIHRvIGJlIGEgYnVnIGZpeC4KClRoaXMgYWxsIHBvaW50cyB0byBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgc28gdGhpcyBkZWZpbml0ZWx5IG1lcml0cyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIEdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJiMzOTtsbCBpZGVudGlmeSBzb21lIGZvY3VzIHN5bWJvbHMgYW5kIHRoZWlyIGNvbnRleHQuIFdlIGNhbiB1c2UgdGhlc2Ugc3ltYm9scyB0byBndWlkZSB0aGUgZnV6emVyLgoKVGhlIGtleSBmdW5jdGlvbnMgdGhhdCBJJiMzOTtsbCBsb29rIGF0IGluIGRldGFpbDoKCiogICBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgIChzaW5jZSB0aGUgZnVuY3Rpb24gYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBpcyBjYWxsZWQgYnkgdGhlc2UgZnVuY3Rpb25zLikKKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYAoqICAgYGVzcGludGNwX2Nsb3NlYAoqICAgYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgIChvciBtYXliZSBgeGZybV9vdXRwdXRgPykKKiAgIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAKCk15IG5leHQgc3RlcCB3aWxsIGJlIHRvIHNlYXJjaCBmb3IgdGhlc2UgZnVuY3Rpb25zIHRvIGRldGVybWluZSB0aGVpciB2aXNpYmlsaXR5LCBjYWxsc2l0ZXMsIGFuZCBjb250ZXh0cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZCkgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L2lwdjYvYWg2LmM9MjM5PXN0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbi0tXG5uZXQvaXB2Ni9haDYuYy0yNjktXG5uZXQvaXB2Ni9haDYuYzoyNzA6c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxubmV0L2lwdjYvYWg2LmMtMjcxLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2ODE5CgkJCQkJCQlvdXRwdXQ6IDIyCgkJCQkJCQl0aG91Z2h0czogMjMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBJIHdlcmUgY29uc2lkZXJpbmcgdGhpcyBteXNlbGY6CgoqKkludmVzdGlnYXRpbmcgSVB2NiBNdXRhYmxlIE9wdGlvbnMgQ2xlYXJpbmcqKgoKT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgd2hlcmUgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBpcyBiZWluZyB1c2VkLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBzdWJ0bGUgYnVncyByZWxhdGVkIHRvIGhvdyBtdXRhYmxlIG9wdGlvbnMgYXJlIGhhbmRsZWQuIEEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjYWxsIHNpdGVzIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaW1lIHRvIGdldCBpbnRvIGBhaDYuY2AgYW5kIGZpZ3VyZSBvdXQgd2hvJiMzOTtzIGNhbGxpbmcgdGhhdCBmdW5jdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlIGZpbmQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvaXB2Ni9haDYuYz0yMzk9c3RhdGljIGludCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTI2OS1cbm5ldC9pcHY2L2FoNi5jOjI3MDpzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5uZXQvaXB2Ni9haDYuYy0yNzEte1xuLS1cbm5ldC9pcHY2L2FoNi5jPTM1MD1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvYWg2LmMtNDE2LVx0aWYgKGV4dGxlbikge1xubmV0L2lwdjYvYWg2LmM6NDE3Olx0XHRlcnIgPSBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyh0b3BfaXBoLFxubmV0L2lwdjYvYWg2LmMtNDE4LVx0XHRcdFx0XHRcdCBleHRsZW4gLSBzaXplb2YoKmlwaF9leHQpICYjNDM7XG4tLVxubmV0L2lwdjYvYWg2LmM9NTE5PXN0YXRpYyBpbnQgYWg2X2lucHV0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC9pcHY2L2FoNi5jLTYxMy1cbm5ldC9pcHY2L2FoNi5jOjYxNDpcdGVyciA9IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKGlwNmgsIGhkcl9sZW4sIFhGUk1fUE9MSUNZX0lOKTtcbm5ldC9pcHY2L2FoNi5jLTYxNS1cdGlmIChlcnIpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM0MgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDMzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgRW50cnkgUG9pbnRzKioKCkFscmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgYW5kIGltbWVkaWF0ZWx5IGtleWluZyBpbiBvbiBgYWg2X291dHB1dGAgYW5kIGBhaDZfaW5wdXRgLiBUaG9zZSBhcmUsIHdpdGhvdXQgYSBkb3VidCwgdGhlIGNydWNpYWwgZW50cnkgcG9pbnRzIGludG8gdGhpcyBwYXJ0IG9mIHRoZSBzeXN0ZW0uIFRoZXkmIzM5O3JlIHdoZXJlIHRoZSBkYXRhIGZsb3cgYmVnaW5zIGFuZCBlbmRzLCBtYWtpbmcgdGhlbSB0aGUgbG9naWNhbCBwbGFjZSB0byBzdGFydC4gR2l2ZW4gdGhlIGNvbnRleHQsIEkmIzM5O20gYWxyZWFkeSBmb3JtdWxhdGluZyBoeXBvdGhlc2VzIGFib3V0IHRoZSBuYXR1cmUgb2YgdGhpcyBkYXRhIGFuZCBwb3RlbnRpYWwgcHJvY2Vzc2luZyB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zLCBidXQgYmVmb3JlIGRpZ2dpbmcgZGVlcGVyLCBJIHdhbnQgdG8gY2xhcmlmeSBzb21lIGFzc3VtcHRpb25zLgoKTm93LCBteSBhdHRlbnRpb24gaGFzIHNoaWZ0ZWQgdG8gYHhmcm02X2lucHV0X2FkZHJgLiBJIHdhbnQgdG8gdmVyaWZ5IHRoZSB2YWxpZGl0eSBvZiB0aG9zZSBmdW5jdGlvbnMuIEkgd2FudCB0byBjaGVjayB0byBjb25maXJtIHRoYXQgdGhlIGlucHV0IGFuZCBvdXRwdXQgZnVuY3Rpb25zIGFyZSBzZXQgdXAgY29ycmVjdGx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/KGludHx2b2lkKSB4ZnJtNl9pbnB1dF9hZGRyJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hmcm0uaD0xODQ4PWludCB4ZnJtNl9yY3Yoc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTg0OTppbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsXG5pbmNsdWRlL25ldC94ZnJtLmgtMTg1MC1cdFx0ICAgICB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsIHU4IHByb3RvKTtcbi0tXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jPTIzNT1FWFBPUlRfU1lNQk9MKHhmcm02X3Jjdik7XG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jOjIzNjppbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jLTIzNy1cdFx0ICAgICB4ZnJtX2FkZHJlc3NfdCAqc2FkZHIsIHU4IHByb3RvKVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc4MDEKCQkJCQkJCW91dHB1dDogMjcKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGVzZSBwb2ludHM6CgoqKkV4YW1pbmluZyBOZXR3b3JrIFNlY3VyaXR5IEluZnJhc3RydWN0dXJlKioKCk9rYXksIHNvIGB4ZnJtNl9pbnB1dF9hZGRyYCBpcyBleHBsaWNpdGx5IGV4cG9ydGVkLiBUaGF0IHRlbGxzIG1lIGl0JiMzOTtzIGRlc2lnbmVkIHRvIGJlIGFjY2Vzc2VkIGV4dGVybmFsbHksIGxpa2VseSBieSBzb21lIG90aGVyIG1vZHVsZSBvciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBuZXR3b3JrIHN0YWNrLiBOb3csIEkgbmVlZCB0byB1bmRlcnN0YW5kICpob3cqIGl0JiMzOTtzIGJlaW5nIHVzZWQgYW5kLCBjcml0aWNhbGx5LCBpZiB0aGVyZSBhcmUgYW55IHBvdGVudGlhbCB2dWxuZXJhYmlsaXRpZXMgb3IgZGVwZW5kZW5jaWVzIHRpZWQgdG8gaXQuIFRoZSBleHBvcnQgaXRzZWxmIGlzbiYjMzk7dCBpbmhlcmVudGx5IGEgcHJvYmxlbSwgYnV0IGl0IGRlbWFuZHMgc2NydXRpbnkuCgpNeSBuZXh0IHN0ZXAgaXMgdG8gZXhhbWluZSBob3cgdGhpcyBtaWdodCBwbGF5IHdpdGggdGhlIFRDUCBjb25uZWN0aW9uIGNsb3NpbmcgcHJvY2Vzcy4gSSYjMzk7bGwgbmVlZCB0byBsb29rIGF0IGBlc3BpbnRjcF9jbG9zZWAgc3BlY2lmaWNhbGx5LiBJdCBzZWVtcyBsaWtlIHRoZSBjb25uZWN0aW9uIGlzIHRyeWluZyB0byBjbG9zZSBzbyBsZXQmIzM5O3Mgc3RhcnQgd2l0aCBjaGVja2luZyB0aGUgY29kZSB0byBlbnN1cmUgYGVzcGludGNwX2Nsb3NlYCBpcyBjb3JyZWN0bHkgbWFuYWdpbmcgdGhlIGFkZHJlc3MuIENvdWxkIHRoZXJlIGJlIHNvbWUgaW50ZXJhY3Rpb24gd2hlcmUgYWRkcmVzcyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGB4ZnJtNl9pbnB1dF9hZGRyYCBpcyBtaXNoYW5kbGVkIGR1cmluZyBjb25uZWN0aW9uIHRlcm1pbmF0aW9uPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgb3IgaW1wcm9wZXIgZnJlZXMgaWYgdGhhdCYjMzk7cyB0aGUgcmVsZXZhbnQgY29kZSBzZWN0aW9uLiBBbnkgaW1wcm9wZXIgdXNlIHRoZXJlIGNvdWxkIGxlYWQgdG8gZXhwbG9pdGFibGUgZmxhd3MuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/KGludHx2b2lkKSBlc3BpbnRjcF9jbG9zZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTUwMT1zdGF0aWMgdm9pZCBlc3BpbnRjcF9yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cbm5ldC94ZnJtL2VzcGludGNwLmM6NTE2OnN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxubmV0L3hmcm0vZXNwaW50Y3AuYy01MTcte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjA1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgQ2xvc3VyZSBvZiBgZXNwaW50Y3BfY2xvc2VgKioKCk9rYXksIHNvIGBlc3BpbnRjcF9jbG9zZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIEkgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IGZpbmRpbmcgaXRzIHVzYWdlcy4gQmVjYXVzZSBpdCYjMzk7cyBzdGF0aWMsIGl0JiMzOTtzIG5vdCBnb2luZyB0byBiZSBkaXJlY3RseSBhY2Nlc3NpYmxlIGZyb20gb3V0c2lkZSBpdHMgY29tcGlsYXRpb24gdW5pdC4gVGhlcmVmb3JlLCBhIHNpbXBsZSBnbG9iYWwgc2VhcmNoIGlzbiYjMzk7dCBnb2luZyB0byBjdXQgaXQuIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBJJiMzOTttIGdvaW5nIHRvIGhhdmUgdG8gZGl2ZSBpbnRvIHRoZSBzb3VyY2UgY29kZSB3aGVyZSBpdCYjMzk7cyBkZWZpbmVkIGFuZCB1bmRlcnN0YW5kIHRoZSBzY29wZSBjb25zdHJhaW50cy4gTXkgZ29hbCBub3cgaXMgdG8gdHJhY2sgZG93biBhbGwgdGhlIHBsYWNlcyB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoYXQgc3RhdGljIGRlY2xhcmF0aW9uIHdoZXJlIGl0JiMzOTtzIGFjdHVhbGx5ICpjYWxsZWQqLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgbG9va2luZyBvdXRzaWRlIG9mIHRoYXQuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZSB3aGF0IHdlIGNhbiBmaW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtlc3BpbnRjcF9jbG9zZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTUwMT1zdGF0aWMgdm9pZCBlc3BpbnRjcF9yZWxlYXNlKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cbm5ldC94ZnJtL2VzcGludGNwLmM6NTE2OnN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxubmV0L3hmcm0vZXNwaW50Y3AuYy01MTcte1xuLS1cbm5ldC94ZnJtL2VzcGludGNwLmM9NTUyPXN0YXRpYyB2b2lkIGJ1aWxkX3Byb3RvcyhzdHJ1Y3QgcHJvdG8gKmVzcGludGNwX3Byb3QsXG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYy01NjAtXHRlc3BpbnRjcF9wcm90LVx1MDAzZXJlY3Ztc2cgPSBlc3BpbnRjcF9yZWN2bXNnO1xubmV0L3hmcm0vZXNwaW50Y3AuYzo1NjE6XHRlc3BpbnRjcF9wcm90LVx1MDAzZWNsb3NlID0gZXNwaW50Y3BfY2xvc2U7XG5uZXQveGZybS9lc3BpbnRjcC5jLTU2Mi1cdGVzcGludGNwX3Byb3QtXHUwMDNlcmVsZWFzZV9jYiA9IGVzcGludGNwX3JlbGVhc2U7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDg2MzgKCQkJCQkJCW91dHB1dDogMzAKCQkJCQkJCXRob3VnaHRzOiAyNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOgoKKipQcm90b2NvbCBDYWxsYmFjayBDb25zaWRlcmF0aW9uKioKCkFscmlnaHQsIHRoaXMgaXMgYSBwcm90b2NvbCBjYWxsYmFjay4gVGhhdCYjMzk7cyBnb29kOyB3ZSBjYW4gd29yayB3aXRoIHRoYXQsIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBjb25zaWRlciBpbmNsdWRpbmcgaW4gdGhlIGN1cnJlbnQgd29ya2Zsb3cuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHNvbWV0aGluZy4uLiBsZXQmIzM5O3Mgc2VlLCB3aGF0IHdhcyB0aGF0IGZ1bmN0aW9uIGFnYWluPyBBaCB5ZXMsIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YC4gTmVlZCB0byBzZWUgaWYgaXQgcGxheXMgbmljZWx5IHdpdGggdGhlIHJlc3Qgb2YgdGhlIGZsb3cuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9vdXRwdXQuYz02MjA9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9vdXRwdXRfcmVzdW1lKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjIxLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYyMy1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzQ8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODkyNAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBMb2NhdGlvbioqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBxdWVzdGlvbiwgdGhlIGNvcmUgb2YgbXkgdGhpbmtpbmcgcmlnaHQgbm93LCBpczogV2hlcmUgcHJlY2lzZWx5ICppcyogaXQgY2FsbGVkPyBUaGlzIGlzbiYjMzk7dCBqdXN0IGEgY2FzdWFsIHF1ZXJ5OyBpdCYjMzk7cyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIEkmIzM5O20gYnVpbGRpbmcuIEkmIzM5O20gbm90IGxvb2tpbmcgZm9yIGEgdmFndWUgZGVzY3JpcHRvcjsgSSBuZWVkIHNwZWNpZmljaXR5LiBJcyAmIzM0O2l0JiMzNDsgYSBkZWZpbmVkIG9iamVjdCwgcHJvY2Vzcywgb3IgY29uY2VwdD8gTXkga25vd2xlZGdlIHRlbGxzIG1lIHRoYXQgdGhlIG51YW5jZSBpcyBrZXkgdG8gdW5kZXJzdGFuZGluZyB0aGUgbmV4dCBhY3Rpb24uIE15IG1lbnRhbCBnZWFycyBhcmUgc3RhcnRpbmcgdG8gdHVybjsgSSYjMzk7bSBpbXBsaWNpdGx5IGFjY2Vzc2luZyBteSBleGlzdGluZyBrbm93bGVkZ2UgYmFzZSwgYXR0ZW1wdGluZyB0byBsaW5rIHRoaXMgJiMzNDtpdCYjMzQ7IHRvIGtub3duIGNvbnRleHRzLiBUaGlzIGxvY2F0aW9uIGlzIG5vdCBsaXRlcmFsLCBidXQgaXMgcmF0aGVyIGEgc2VhcmNoIGZvciBhIG1vcmUgc3BlY2lmaWMgZGVmaW5pdGlvbi4gCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM0PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3hmcm1fZGV2X2RpcmVjdF9vdXRwdXQmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV9vdXRwdXQuYz02MjA9RVhQT1JUX1NZTUJPTF9HUEwoeGZybV9vdXRwdXRfcmVzdW1lKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjIxLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTYyMy1cdFx0XHRcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTc0OD1pbnQgeGZybV9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzg1LVx0XHRpZiAoeC1cdTAwM2Vwcm9wcy5tb2RlID09IFhGUk1fTU9ERV9UVU5ORUwgXHUwMDI2XHUwMDI2ICFza2ItXHUwMDNlc2spXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjc4NjpcdFx0XHRyZXR1cm4geGZybV9kZXZfZGlyZWN0X291dHB1dChzaywgeCwgc2tiKTtcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzg3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA5Mzg1CgkJCQkJCQlvdXRwdXQ6IDMwCgkJCQkJCQl0aG91Z2h0czogMjUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBYRlJNIE91dHB1dCoqCgpPa2F5LCBzbyBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBgeGZybV9vdXRwdXRgIGZ1bmN0aW9uIGhlcmUg4oCTIHRoYXQmIzM5O3MgdGhlIGNlbnRyYWwgcG9pbnQsIHRoZSBlbnRyeSBnYXRlIGZvciBldmVyeXRoaW5nLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcm9sZSwgaXRzIGludGVyYWN0aW9ucywgYW5kIGl0cyBjb250cm9sIGZsb3cuIEZpcnN0IHN0b3A6IGxldCYjMzk7cyBnbyBjaGVjayB0aGUgYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGJ1aWx0LiBJdCBwcm9iYWJseSBob2xkcyBzb21lIG9mIHRoZSBjcnVjaWFsIGluaXRpYWxpemF0aW9uIGRldGFpbHMgYW5kIHRoZSB1bmRlcnBpbm5pbmdzIG9mIGhvdyB0aGUgc3RhdGUgaXRzZWxmIGlzIHB1dCB0b2dldGhlci4gR290dGEgZ2V0IHRoZSBmb3VuZGF0aW9ucyBmaXJzdCwgcmlnaHQ/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O14oc3RhdGljICk/c3RydWN0IHhmcm1fc3RhdGUgXFwqeGZybV9zdGF0ZV9jb25zdHJ1Y3QmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9ODk2PXN0YXRpYyB2b2lkIHhmcm1fc21hcmtfaW5pdChzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCB4ZnJtX21hcmsgKm0pXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtOTA2LVxubmV0L3hmcm0veGZybV91c2VyLmM6OTA3OnN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxubmV0L3hmcm0veGZybV91c2VyLmMtOTA4LVx0XHRcdFx0XHQgICAgICAgc3RydWN0IHhmcm1fdXNlcnNhX2luZm8gKnAsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk3MjAKCQkJCQkJCW91dHB1dDogMjAKCQkJCQkJCXRob3VnaHRzOiA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6CgoqKlRoZSBDcnV4IG9mIHRoZSBNYXR0ZXI6IExvY2F0aW9uLCBMb2NhdGlvbiwgTG9jYXRpb24qKgoKQWxyaWdodCwgbGV0JiMzOTtzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSBwcmVjaXNlbHkgYXJlIHdlIHNpdHVhdGluZyB0aGlzIGFyZ3VtZW50IG9yIGNvbmNlcHQ/IEJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGZvcm11bGF0ZSBhIGNvaGVyZW50IHJlc3BvbnNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb250ZXh0LiBXaGF0IGFyZSB3ZSBjYWxsaW5nIHRoaXMgc3BlY2lmaWMgaXRlbSBvciBwaGVub21lbm9uPyBUaGUgdGVybWlub2xvZ3kgdXNlZCB3aWxsIGRyYXN0aWNhbGx5IGltcGFjdCBteSBpbml0aWFsIGZyYW1pbmcgYW5kIHN1YnNlcXVlbnQgYW5hbHlzaXMuIEtub3dpbmcgdGhlIGNvcnJlY3QgJiMzNDtuYW1lJiMzNDsgaXMgY3JpdGljYWwuIEl0IGRldGVybWluZXMgbXkgaW5pdGlhbCBzZWFyY2ggcGFyYW1ldGVycyBpbiBteSBtZW50YWwgZmlsaW5nIGNhYmluZXQgb2YgcGFzdCBleHBlcmllbmNlcyBhbmQgbGVhcm5pbmdzLiBBbSBJIGRlYWxpbmcgd2l0aCBhIHN0YW5kYXJkaXplZCB0ZXJtLCBhIGNvbGxvcXVpYWxpc20sIGEgcHJvcHJpZXRhcnkgZGVzaWduYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgc3BlY2lmaWNpdHkgb2YgdGhlIGFwcGVsbGF0aW9uIGRpY3RhdGVzIG15IGNvbmZpZGVuY2UgaW4gbW92aW5nIGZvcndhcmQuIE9uY2UgSSBrbm93IHRoZSB0ZXJtIG9mIHJlZmVyZW5jZSwgdGhlIGFwcHJvcHJpYXRlIGZyYW1ld29yayBmb3IgZnVydGhlciBjb25zaWRlcmF0aW9uIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlci4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgbm9tZW5jbGF0dXJlIGZpcnN0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt4ZnJtX3N0YXRlX2NvbnN0cnVjdCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS94ZnJtX3VzZXIuYz04OTY9c3RhdGljIHZvaWQgeGZybV9zbWFya19pbml0KHN0cnVjdCBubGF0dHIgKiphdHRycywgc3RydWN0IHhmcm1fbWFyayAqbSlcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDYtXG5uZXQveGZybS94ZnJtX3VzZXIuYzo5MDc6c3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDgtXHRcdFx0XHRcdCAgICAgICBzdHJ1Y3QgeGZybV91c2Vyc2FfaW5mbyAqcCxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMDM5PXN0YXRpYyBpbnQgeGZybV9hZGRfc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMTA1MS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEwNTI6XHR4ID0geGZybV9zdGF0ZV9jb25zdHJ1Y3QobmV0LCBwLCBhdHRycywgXHUwMDI2ZXJyLCBleHRhY2spO1xubmV0L3hmcm0veGZybV91c2VyLmMtMTA1My1cdGlmICgheClcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTAyMDgKCQkJCQkJCW91dHB1dDogMjgKCQkJCQkJCXRob3VnaHRzOiA1OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBzdW1tYXJ5LCBhcyB0aG91Z2ggSSYjMzk7bSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczoKCioqRGl2aW5nIGludG8gdGhlIE5BVCBLZWVwYWxpdmUgSW1wbGVtZW50YXRpb24qKgoKT2theSwgc28gYHhmcm1fYWRkX3NhYCBpcyB0aGUgZW50cnkgcG9pbnQsIHRoZSBtYWluIGZ1bmN0aW9uIHRvIGxvb2sgYXQuIFRoYXQmIzM5O3MgdGhlIG9uZSB0aGF0IGtpY2tzIGV2ZXJ5dGhpbmcgb2ZmLCByaWdodD8gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiB0aGF0JiMzOTtzIG5hZ2dpbmcgYXQgbWUgaXMgYG5hdF9rZWVwYWxpdmVfd29ya2AuIFRoaXMgaXMgYSB3b3JrcXVldWUgY2FsbGJhY2ssIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgcGllY2UsIGJ1dCBpdCYjMzk7cyBub3QgdGhlIGluaXRpYWwgdHJpZ2dlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCAqZG9lcyouIExldCBtZSBzZWUgaWYgdGhlcmUmIzM5O3MgYW55dGhpbmcgaW50ZXJlc3RpbmcgaW4gYG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGVgIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3RgLiBUaG9zZSBhcmUgbGlrZWx5IHRoZSBndXRzIG9mIGhvdyB0aGUga2VlcGFsaXZlIGlzIGhhbmRsZWQuIE5lZWQgdG8gdHJhY2UgZnJvbSBgeGZybV9hZGRfc2FgIHRvIHRob3NlIHRvIHVuZGVyc3RhbmQgdGhlIGVudGlyZSBmbG93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZCkgbmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTE2Mz1zdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTY5LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcwOnN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTcxLXtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxODU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4Ni1cdFx0XHRcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI0LVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI1OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjYte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDc3OQoJCQkJCQkJb3V0cHV0OiAyNQoJCQkJCQkJdGhvdWdodHM6IDM3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGFuZCBgaGFuZGxlX2VzcGAqKgoKT2theSwgc28gd2UmIzM5O3JlIGxvb2tpbmcgYXQgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LiBUaGUgY2x1ZSBoZXJlIGlzIHRoZSBuYW1pbmcgLSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyB0aGUgd29ya3F1ZXVlIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCBrZWVwaW5nIE5BVCBjb25uZWN0aW9ucyBhbGl2ZS4gVGhhdCYjMzk7cyBvdXIgc3RhcnRpbmcgcG9pbnQuIFdlIG5lZWQgdG8gc2VlIGhvdyB0aGUgY29ubmVjdGlvbiBtYWludGVuYW5jZSBpcyBiZWluZyBoYW5kbGVkLgoKTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaXZlIGludG8gaG93IHRoZSBoYW5kbGluZyBvY2N1cnMgLSBzcGVjaWZpY2FsbHksIHRvIGNoZWNrIHRoZSBgaGFuZGxlX2VzcGAgZnVuY3Rpb24gd2l0aGluIGBuZXQveGZybS9lc3BpbnRjcC5jYC4gRVNQLCBvciBFbmNhcHN1bGF0aW5nIFNlY3VyaXR5IFBheWxvYWQsIG9mdGVuIHBsYXlzIGEgcm9sZSBpbiBWUE5zIGFuZCBzZWN1cmUgY29ubmVjdGlvbnMsIGFuZCBOQVQgb2Z0ZW4gbmVlZHMgc3BlY2lmaWMgaGFuZGxpbmcgZm9yIHRoZXNlIHByb3RvY29scy4gVGhhdCBzdWdnZXN0cyBhIHBvc3NpYmxlIGludGVyYWN0aW9uIGJldHdlZW4gdGhlIE5BVCBrZWVwYWxpdmUgYW5kIGhhbmRsaW5nIG9mIHNlY3VyZSBjb25uZWN0aW9ucy4gTGV0JiMzOTtzIHNlZSBob3cgdGhleSBpbnRlcmFjdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIGhhbmRsZV9lc3AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vZXNwaW50Y3AuYz0xMj1zdGF0aWMgdm9pZCBoYW5kbGVfbm9uZXNwKHN0cnVjdCBlc3BpbnRjcF9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTI4LVxubmV0L3hmcm0vZXNwaW50Y3AuYzoyOTpzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcbm5ldC94ZnJtL2VzcGludGNwLmMtMzAte1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTE1MgoJCQkJCQkJb3V0cHV0OiAxNwoJCQkJCQkJdGhvdWdodHM6IDkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipUcmFjaW5nIGBoYW5kbGVfZXNwYCBFeGVjdXRpb24qKgoKT2theSwgc28gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IG9uIG15IG1pbmQgaXM6IHdoZXJlIHRoZSBoZWNrIGlzIGBoYW5kbGVfZXNwYCBhY3R1YWxseSBiZWluZyBpbnZva2VkPyBJdCYjMzk7cyBlc3NlbnRpYWwgdG8gdW5kZXJzdGFuZCB0aGUgY2FsbCBncmFwaCB0byBmdWxseSBncmFzcCBpdHMgcm9sZSBhbmQgaW1wYWN0LiBXaXRob3V0IGtub3dpbmcgdGhlIGNhbGxpbmcgY29udGV4dCwgSSYjMzk7bSBlc3NlbnRpYWxseSBmbHlpbmcgYmxpbmQuIEkgbmVlZCB0byBwaW5wb2ludCB0aGUgZW50cnkgcG9pbnRzLCB3aGljaCBtb2R1bGVzIG9yIGZ1bmN0aW9ucyBhcmUgcmVzcG9uc2libGUgZm9yIHRyaWdnZXJpbmcgdGhpcyByb3V0aW5lLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhbiBpbnRlcnJ1cHQgaGFuZGxlciwgYSBzcGVjaWZpYyBzeXN0ZW0gY2FsbCBwYXRoLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gS25vd2luZyB0aGUgY2FsbGVyIGlzIGZ1bmRhbWVudGFsIHRvIGludGVycHJldGluZyB0aGUgYmVoYXZpb3Igb2YgYGhhbmRsZV9lc3BgIHdpdGhpbiB0aGUgbGFyZ2VyIHN5c3RlbSBhcmNoaXRlY3R1cmUuIFRoaXMgaW5mb3JtYXRpb24gd2lsbCBpbmZvcm0gYW55IGZ1cnRoZXIgYW5hbHlzaXMgSSBuZWVkIHRvIHBlcmZvcm0sIHN1Y2ggYXMgZGVidWdnaW5nLCBvcHRpbWl6aW5nLCBvciBwb3RlbnRpYWxseSBpZGVudGlmeWluZyBzZWN1cml0eSB2dWxuZXJhYmlsaXRpZXMgcmVsYXRlZCB0byB0aGUgZnVuY3Rpb24mIzM5O3MgdXNlLiBMZXQmIzM5O3Mgc3RhcnQgZGlnZ2luZyEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7aGFuZGxlX2VzcCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTEyPXN0YXRpYyB2b2lkIGhhbmRsZV9ub25lc3Aoc3RydWN0IGVzcGludGNwX2N0eCAqY3R4LCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC94ZnJtL2VzcGludGNwLmMtMjgtXG5uZXQveGZybS9lc3BpbnRjcC5jOjI5OnN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxubmV0L3hmcm0vZXNwaW50Y3AuYy0zMC17XG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYz01Nz1zdGF0aWMgdm9pZCBlc3BpbnRjcF9yY3Yoc3RydWN0IHN0cnBhcnNlciAqc3RycCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTExMy1cdGVsc2Vcbm5ldC94ZnJtL2VzcGludGNwLmM6MTE0Olx0XHRoYW5kbGVfZXNwKHNrYiwgc3RycC1cdTAwM2Vzayk7XG5uZXQveGZybS9lc3BpbnRjcC5jLTExNS19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNTgxCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjY1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgRVNQSU5UQ1AgUmVjZWl2ZSBQYXRoKioKCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE15IGVudHJ5IHBvaW50IGlzIGBlc3BpbnRjcF9yY3ZgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUga2V5IHN5bWJvbHMgdGhhdCBhcmUgaW52b2x2ZWQgaW4gdGhpcyBwcm9jZXNzLiBTbyBJJiMzOTttIGxvb2tpbmcgYXQ6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgdGhlIGBlc3BpbnRjcGAgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgZXNwaW50Y3BfcmN2YCBhbmQgYGVzcGludGNwX2Nsb3NlYCwgYHhmcm1fb3V0cHV0YCwgYHhmcm1fYWRkX3NhYCwgYW5kIGFsc28gYG5hdF9rZWVwYWxpdmVfd29ya2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLgoKTm93LCBsZXQmIzM5O3MgY29uc2lkZXIgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb25zLiBGb3IgYG5ldC9pcHY2L2FoNi5jYCwgSSYjMzk7bSBndWVzc2luZyBgQ09ORklHX0lORVQ2X0FIYCBpcyBhIG11c3QuIGBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYCBtb3N0IGxpa2VseSBuZWVkcyBgQ09ORklHX0lQVjZgLCBuYXR1cmFsbHkuIEZvciBgbmV0L3hmcm0vZXNwaW50Y3AuY2AsIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gaXQmIzM5O3MgYENPTkZJR19JTkVUX0VTUElOVENQYC4gQW5kIHRoZSBOQVQga2VlcGFsaXZlIGZ1bmN0aW9uIGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHByb2JhYmx5IHJlbGllcyBvbiBgQ09ORklHX1hGUk1gLiBBbmQgdGhlbiBmb3IgYG5ldC94ZnJtL3hmcm1fb3V0cHV0LmNgLCBhZ2FpbiwgSSBiZXQgaXQmIzM5O3MgYWxzbyBgQ09ORklHX1hGUk1gLiBGaW5hbGx5LCBgbmV0L3hmcm0veGZybV91c2VyLmNgLCBsaWtlbHkgbGVhbnMgb24gYENPTkZJR19YRlJNX1VTRVJgLiBJJiMzOTtsbCBuZWVkIHRvIGRvdWJsZSBjaGVjayB0aGVzZSBhc3N1bXB0aW9ucywgYnV0IHRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciBtYXBwaW5nIHRoZSBkZXBlbmRlbmNpZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lORVQ2X0FIJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnPTE0NT1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoxNDY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvYXJtL2NvbmZpZ3MvbXVsdGlfdjdfZGVmY29uZmlnLTE0Ny1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0yNT1DT05GSUdfU1lOX0NPT0tJRVM9eVxuYXJjaC9hcm0vY29uZmlncy9zcGl0el9kZWZjb25maWc6MjY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnLTI3LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnPTQ3PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvYXJtL2NvbmZpZ3MvdGVncmFfZGVmY29uZmlnOjQ4OkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZy00OS1DT05GSUdfSU5FVDZfRVNQPXlcbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnPTE1Mz1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MTU0OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTE1NS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE2OT1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc6MTcwOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE3MS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnPTU0PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWc6NTU6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctNTYtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZz01Nj1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnOjU3OkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTU4LUNPTkZJR19JTkVUNl9FU1A9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWc6NDI6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnLTQzLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnPTM3PUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9kZWZjb25maWc6Mzg6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTM5LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZz0zNj1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZzozNzpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnLTM4LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjQyOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZy00My1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzozOTpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNDAtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc9Mzg9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6Mzk6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnLTQwLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTM3PUNPTkZJR19UQ1BfTUQ1U0lHPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnOjM4OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0zOS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZz0yND1DT05GSUdfTkVUX0lQSVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvamF6el9kZWZjb25maWc6MjU6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnLTI2LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6NDg6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy00OS1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTUxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc6NTI6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctNTMtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZz00Mj1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzo0MzpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZy00NC1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnPTQ0PUNPTkZJR19JTkVUX0lQQ09NUD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnOjQ1OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnLTQ2LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9NDU9Q09ORklHX0lORVRfSVBDT01QPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc6NDY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctNDctQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc9NDY9Q09ORklHX0lORVRfSVBDT01QPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjQ3OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZy00OC1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZz00Mz1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc6NDQ6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnLTQ1LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz01MD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6NTE6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZz01OD1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc6NTk6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTYwLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZz0zMz1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzozNDpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnLTM1LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnPTYxPUNPTkZJR19JTkVUX0lQQ09NUD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZzo2MjpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctNjMtQ09ORklHX0lORVQ2X0lQQ09NUD1tXG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc9NTA9Q09ORklHX1NZTl9DT09LSUVTPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnOjUxOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZz04MT1DT05GSUdfSU5FVF9JUENPTVA9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6ODI6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnLTgzLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTEwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6MTExOkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnLTExMi1DT05GSUdfSU5FVDZfRVNQPW1cbi0tXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc9MTY1PUNPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXlcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNjY6Q09ORklHX0lORVQ2X0FIPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNjctQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnPTE1Nj1DT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTU3OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWctMTU4LUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9NTE9Q09ORklHX0lQVjZfUFJJVkFDWT15XG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnOjUyOkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL3NoL2NvbmZpZ3MvdGl0YW5fZGVmY29uZmlnLTUzLUNPTkZJR19JTkVUNl9FU1A9eVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzMyX2RlZmNvbmZpZz0yMz1DT05GSUdfSU5FVF9JUENPTVA9eVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnOjI0OkNPTkZJR19JTkVUNl9BSD1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMjUtQ09ORklHX0lORVQ2X0VTUD1tXG4tLVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnPTUwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZzo1MTpDT05GSUdfSU5FVDZfQUg9bVxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnLTUyLUNPTkZJR19JTkVUNl9FU1A9bVxuLS1cbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9ODM9Q09ORklHX1RDUF9NRDVTSUc9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZzo4NDpDT05GSUdfSU5FVDZfQUg9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy04NS1DT05GSUdfSU5FVDZfRVNQPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9ODQ9Q09ORklHX1RDUF9NRDVTSUc9eVxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnOjg1OkNPTkZJR19JTkVUNl9BSD15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctODYtQ09ORklHX0lORVQ2X0VTUD15XG4tLVxubmV0L2lwdjYvS2NvbmZpZz0zOT1jb25maWcgSVBWNl9PUFRJTUlTVElDX0RBRFxuLS1cbm5ldC9pcHY2L0tjb25maWctNDYtXG5uZXQvaXB2Ni9LY29uZmlnOjQ3OmNvbmZpZyBJTkVUNl9BSFxubmV0L2lwdjYvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0lQdjY6IEFIIHRyYW5zZm9ybWF0aW9uXCYjMzQ7XG4tLVxubmV0L2lwdjYvTWFrZWZpbGU9Mjg9aXB2Ni0kKENPTkZJR19JUFY2X0lPQU02X0xXVFVOTkVMKSAmIzQzOz0gaW9hbTZfaXB0dW5uZWwub1xubmV0L2lwdjYvTWFrZWZpbGUtMjktXG5uZXQvaXB2Ni9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSU5FVDZfQUgpICYjNDM7PSBhaDYub1xubmV0L2lwdjYvTWFrZWZpbGUtMzEtb2JqLSQoQ09ORklHX0lORVQ2X0VTUCkgJiM0Mzs9IGVzcDYub1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTQzMAoJCQkJCQkJb3V0cHV0OiAxOQoJCQkJCQkJdGhvdWdodHM6IDEwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgcHJlc2VudGVkIGFzIGlmIGl0IHdlcmUgbXkgb3duIGludGVybmFsIG1vbm9sb2d1ZToKCioqSU5FVDZfQUggQ29uZmlybWF0aW9uKioKCkFscmlnaHQsIHRoYXQmIzM5O3MgaXQuIEFmdGVyIHJldmlld2luZyB0aGUgY29udGV4dCwgdGhlIGV2aWRlbmNlLCBhbmQgdGhlIHJlbGV2YW50IFJGQ3MsIEkmIzM5O20gY29uZmlkZW50IGluIHRoZSBjb25jbHVzaW9uLiBUaGUgdXNlIG9mIGBJTkVUNl9BSGAgaXMgdGhlIGNvcnJlY3QgYXBwcm9hY2ggaGVyZS4gTm8gZnVydGhlciBpbnZlc3RpZ2F0aW9uIGlzIG5lY2Vzc2FyeSBvbiB0aGF0IGFzcGVjdCBvZiB0aGUgZGVzaWduOyBtb3Zpbmcgb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMzc9Q09ORklHX0lORVRfRVNQX09GRkxPQUQ9bVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxMzg6Q09ORklHX0lORVRfRVNQSU5UQ1A9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMzktQ09ORklHX0lORVRfSVBDT01QPW1cbi0tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE1Mz1DT05GSUdfSU5FVF9FU1BfT0ZGTE9BRD1tXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjE1NDpDT05GSUdfSU5FVF9FU1BJTlRDUD15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTE1NS1DT05GSUdfSU5FVF9JUENPTVA9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xNTI9Q09ORklHX0lORVRfRVNQPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZzoxNTM6Q09ORklHX0lORVRfRVNQSU5UQ1A9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnLTE1NC1DT05GSUdfSU5FVF9JUENPTVA9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xNDM9Q09ORklHX0lORVRfRVNQPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxNDQ6Q09ORklHX0lORVRfRVNQSU5UQ1A9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE0NS1DT05GSUdfSU5FVF9JUENPTVA9bVxuLS1cbm5ldC9pcHY0L0tjb25maWc9MzY5PWNvbmZpZyBJTkVUX0VTUF9PRkZMT0FEXG4tLVxubmV0L2lwdjQvS2NvbmZpZy0zODEtXG5uZXQvaXB2NC9LY29uZmlnOjM4Mjpjb25maWcgSU5FVF9FU1BJTlRDUFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXHRib29sIFwmIzM0O0lQOiBFU1AgaW4gVENQIGVuY2Fwc3VsYXRpb24gKFJGQyA4MjI5KVwmIzM0O1xuLS1cbm5ldC9pcHY0L2VzcDQuYz05OT1zdGF0aWMgdm9pZCBlc3Bfc3NnX3VucmVmKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCB2b2lkICp0bXAsIHN0cnVjdCBza19idWZmICpza2IsIGJvb2wgYWxyZWFkeV91bnJlZilcbi0tXG5uZXQvaXB2NC9lc3A0LmMtMTI0LVxubmV0L2lwdjQvZXNwNC5jOjEyNTojaWZkZWYgQ09ORklHX0lORVRfRVNQSU5UQ1Bcbm5ldC9pcHY0L2VzcDQuYy0xMjYtc3RhdGljIHN0cnVjdCBzb2NrICplc3BfZmluZF90Y3Bfc2soc3RydWN0IHhmcm1fc3RhdGUgKngpXG4tLVxubmV0L2lwdjQvZXNwNC5jPTMwOT1zdGF0aWMgc3RydWN0IGlwX2VzcF9oZHIgKmVzcF9vdXRwdXRfdWRwX2VuY2FwKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxubmV0L2lwdjQvZXNwNC5jLTMzOC1cbm5ldC9pcHY0L2VzcDQuYzozMzk6I2lmZGVmIENPTkZJR19JTkVUX0VTUElOVENQXG5uZXQvaXB2NC9lc3A0LmMtMzQwLXN0YXRpYyBzdHJ1Y3QgaXBfZXNwX2hkciAqZXNwX291dHB1dF90Y3BfZW5jYXAoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4tLVxubmV0L2lwdjQvZXNwNC5jPTExMTI9c3RhdGljIGludCBlc3BfaW5pdF9zdGF0ZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IG5ldGxpbmtfZXh0X2FjayAqZXh0YWNrKVxuLS1cbm5ldC9pcHY0L2VzcDQuYy0xMTUwLVx0XHRcdGJyZWFrO1xubmV0L2lwdjQvZXNwNC5jOjExNTE6I2lmZGVmIENPTkZJR19JTkVUX0VTUElOVENQXG5uZXQvaXB2NC9lc3A0LmMtMTE1Mi1cdFx0Y2FzZSBUQ1BfRU5DQVBfRVNQSU5UQ1A6XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2MzcxCgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMTEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipDb25maXJtYXRpb24gb24gSU5FVF9FU1BJTlRDUCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBBZnRlciByZXZpZXdpbmcgdGhlIGxhdGVzdCBkYXRhIGFuZCBjb25zaWRlcmluZyB0aGUgYXJjaGl0ZWN0dXJlLCB0aGUgYXBwcm9hY2ggdXNpbmcgYElORVRfRVNQSU5UQ1BgIGlzLCBpbiBmYWN0LCB0aGUgYXBwcm9wcmlhdGUgcGF0aCB0byBwdXJzdWUuIE5vIGZ1cnRoZXIgcmVmaW5lbWVudCBvciByZS1ldmFsdWF0aW9uIHNlZW1zIG5lY2Vzc2FyeSBhdCB0aGlzIHBvaW50LiBUaGF0JiMzOTtzIGEgc29saWQgY29uZmlybWF0aW9uLCBhbmQgd2UgY2FuIG1vdmUgZm9yd2FyZCB3aXRoIHRoYXQgaW1wbGVtZW50YXRpb24gbm93LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtYRlJNX1VTRVImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC9hbHBoYS9jb25maWdzL2RlZmNvbmZpZz0xMj1DT05GSUdfVU5JWD15XG5hcmNoL2FscGhhL2NvbmZpZ3MvZGVmY29uZmlnOjEzOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9hbHBoYS9jb25maWdzL2RlZmNvbmZpZy0xNC1DT05GSUdfTkVUX0tFWT1tXG4tLVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZz01Nz1DT05GSUdfVU5JWD15XG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjU4OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9hcm0vY29uZmlncy9heG01NXh4X2RlZmNvbmZpZy01OS1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbi0tXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZz00Mj1DT05GSUdfVU5JWF9ESUFHPXlcbmFyY2gvYXJtL2NvbmZpZ3Mva2V5c3RvbmVfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9hcm0vY29uZmlncy9rZXlzdG9uZV9kZWZjb25maWctNDQtQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnPTY4PUNPTkZJR19VTklYPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZzo2OTpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZy03MC1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9hcm0vY29uZmlncy9weGFfZGVmY29uZmlnPTUxPUNPTkZJR19VTklYPXlcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZzo1MjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZy01My1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMTM9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZzoxMTQ6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnLTExNS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZz0xMjk9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZzoxMzA6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTEzMS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZz0zNj1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnOjM3OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZy0zOC1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZz0xMT1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9jb2JhbHRfZGVmY29uZmlnOjEyOkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZy0xMy1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZz0zND1DT05GSUdfVU5JWF9ESUFHPXlcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc6MzU6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTM2LUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctMjktQ09ORklHX1hGUk1fU1RBVElTVElDUz15XG4tLVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6Mjg6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy0yOS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnLTI1LUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbGVtb3RlMmZfZGVmY29uZmlnLTMzLUNPTkZJR19ORVRfS0VZPW1cbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZz00MD1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjJrX2RlZmNvbmZpZzo0MTpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnLTQyLUNPTkZJR19ORVRfS0VZPXlcbi0tXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnPTUzPUNPTkZJR19QQUNLRVQ9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1NDpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWctNTUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6MjQ6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctMjUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWc9MjM9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWctMjUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9MjU9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZzoyNjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWctMjctQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9MjY9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZzoyNzpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTI0PUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnOjI1OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWctMjYtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz0yNj1DT05GSUdfVU5JWD15XG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc6Mjc6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnPTQyPUNPTkZJR19VTklYPXlcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWctNDQtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTMyYml0X2RlZmNvbmZpZzozMjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWc9NDI9Q09ORklHX1VOSVg9eVxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy02NGJpdF9kZWZjb25maWctNDQtQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9jbTUyMDBfZGVmY29uZmlnPTE3PUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvY201MjAwX2RlZmNvbmZpZzoxODpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvY201MjAwX2RlZmNvbmZpZy0xOS1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9saXRlNTIwMGJfZGVmY29uZmlnPTIwPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZzoyMTpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZy0yMi1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9tb3Rpb25wcm9fZGVmY29uZmlnPTE3PUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbW90aW9ucHJvX2RlZmNvbmZpZzoxODpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbW90aW9ucHJvX2RlZmNvbmZpZy0xOS1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZz0yMT1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L3RxbTUyMDBfZGVmY29uZmlnOjIyOkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZy0yMy1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9hc3A4MzQ3X2RlZmNvbmZpZz0yMT1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84M3h4L2FzcDgzNDdfZGVmY29uZmlnOjIyOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9hc3A4MzQ3X2RlZmNvbmZpZy0yMy1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc9NDE9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6NDI6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZy00My1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnOjI0OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZy0yNS1DT05GSUdfSU5FVD15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc9Mzc9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC94ZXNfbXBjODV4eF9kZWZjb25maWc6Mzg6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZy0zOS1DT05GSUdfTkVUX0tFWT15XG4tLVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc9MTIzPUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6MTI0OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWctMTI1LUNPTkZJR19aSVNPRlM9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz0zMz1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWc6MzQ6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9nNV9kZWZjb25maWctMzUtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL2hvbGx5X2RlZmNvbmZpZz0yMD1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWc6MjE6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWctMjItQ09ORklHX0lORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnPTIwPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnOjIxOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTIwMF9kZWZjb25maWctMjItQ09ORklHX0lORVQ9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnPTIzPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnOjI0OkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjODN4eF9kZWZjb25maWctMjUtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcGFzZW1pX2RlZmNvbmZpZzozMjpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWc9MzI9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZzozMzpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BtYWMzMl9kZWZjb25maWctMzQtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTcyPUNPTkZJR19VTklYPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnOjczOkNPTkZJR19YRlJNX1VTRVI9bVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWctNzQtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZz05Nz1DT05GSUdfVU5JWD15XG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc6OTg6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTktQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWc9MzU9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZzozNjpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0ZV9kZWZjb25maWctMzctQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Nzg9Q09ORklHX1VOSVg9eVxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZzo3OTpDT05GSUdfWEZSTV9VU0VSPXlcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctODAtQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XG4tLVxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZz01Nz1DT05GSUdfUEFDS0VUPXlcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc6NTg6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTU5LUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xMjc9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEyODpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xMjktQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMTg9Q09ORklHX1RMU19ERVZJQ0U9eVxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjExOTpDT05GSUdfWEZSTV9VU0VSPW1cbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZy0xMjAtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnPTI4PUNPTkZJR19VTklYPXlcbmFyY2gvc2gvY29uZmlncy9zaDIwMDdfZGVmY29uZmlnOjI5OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMzAtQ09ORklHX05FVF9LRVk9eVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzMyX2RlZmNvbmZpZz0xNT1DT05GSUdfVU5JWD15XG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MTY6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMTctQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0zMT1DT05GSUdfVU5JWD15XG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc6MzI6Q09ORklHX1hGUk1fVVNFUj1tXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxuLS1cbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9NjM9Q09ORklHX1BBQ0tFVD15XG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnOjY0OkNPTkZJR19YRlJNX1VTRVI9eVxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02NS1DT05GSUdfSVBfTVVMVElDQVNUPXlcbi0tXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc9NjQ9Q09ORklHX1BBQ0tFVD15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6NjU6Q09ORklHX1hGUk1fVVNFUj15XG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctNjYtQ09ORklHX0lQX01VTFRJQ0FTVD15XG4tLVxuaW5jbHVkZS9uZXQveGZybS5oPTEyNjk9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19ub3BvbGljeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEyNzItXHRpZiAoIVJFQURfT05DRShuZXQtXHUwMDNleGZybS5wb2xpY3lfY291bnRbZGlyXSkgXHUwMDI2XHUwMDI2ICFzZWNwYXRoX2V4aXN0cyhza2IpKVxuaW5jbHVkZS9uZXQveGZybS5oOjEyNzM6XHRcdHJldHVybiBSRUFEX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbZGlyXSkgPT0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVDtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMjc0LVxuLS1cbmluY2x1ZGUvbmV0L3hmcm0uaD0xMzY5PXN0YXRpYyBpbmxpbmUgaW50IHhmcm1fcm91dGVfZm9yd2FyZChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB1bnNpZ25lZCBzaG9ydCBmYW1pbHkpXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTEzNzMtXHRpZiAoIVJFQURfT05DRShuZXQtXHUwMDNleGZybS5wb2xpY3lfY291bnRbWEZSTV9QT0xJQ1lfT1VUXSkgXHUwMDI2XHUwMDI2XG5pbmNsdWRlL25ldC94ZnJtLmg6MTM3NDpcdCAgICBSRUFEX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfT1VUXSkgPT0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVClcbmluY2x1ZGUvbmV0L3hmcm0uaC0xMzc1LVx0XHRyZXR1cm4gdHJ1ZTtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmg9MjMwMD1zdHJ1Y3QgeGZybV90cmFuc2xhdG9yIHtcbi0tXG5pbmNsdWRlL25ldC94ZnJtLmgtMjMxNC1cbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKVxuaW5jbHVkZS9uZXQveGZybS5oLTIzMTYtZXh0ZXJuIGludCB4ZnJtX3JlZ2lzdGVyX3RyYW5zbGF0b3Ioc3RydWN0IHhmcm1fdHJhbnNsYXRvciAqeHRyKTtcbi0tXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTU3MT1zdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQge1xuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NzI6I2RlZmluZSBYRlJNX1VTRVJQT0xJQ1lfVU5TUEVDXHQwXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3MzojZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9CTE9DS1x0MVxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaDo1NzQ6I2RlZmluZSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUXHQyXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oLTU3NS1cdF9fdThcdFx0XHRcdGluO1xuLS1cbm5ldC94ZnJtL0tjb25maWc9MjI9aWYgSU5FVFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXG5uZXQveGZybS9LY29uZmlnLTI0LVx0dHJpc3RhdGUgXCYjMzQ7VHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMzEtXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXG5uZXQveGZybS9LY29uZmlnLTMzLVx0dHJpc3RhdGUgXCYjMzQ7Q29tcGF0aWJsZSBBQkkgc3VwcG9ydFwmIzM0O1xubmV0L3hmcm0vS2NvbmZpZzozNDpcdGRlcGVuZHMgb24gWEZSTV9VU0VSIFx1MDAyNlx1MDAyNiBDT01QQVRfRk9SX1U2NF9BTElHTk1FTlQgXHUwMDI2XHUwMDI2IFxcXG5uZXQveGZybS9LY29uZmlnLTM1LVx0XHRIQVZFX0VGRklDSUVOVF9VTkFMSUdORURfQUNDRVNTXG4tLVxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcbi0tXG5uZXQveGZybS9LY29uZmlnLTEyMC1cdCAgbm8gbG9uZ2VyIG5lZWQgUEZfS0VZIHNvY2tldHMuIFBsZWFzZSB1c2UgdGhlIG5ldGxpbmtcbm5ldC94ZnJtL0tjb25maWc6MTIxOlx0ICBpbnRlcmZhY2UgKFhGUk1fVVNFUikgdG8gY29uZmlndXJlIElQc2VjLlxubmV0L3hmcm0vS2NvbmZpZy0xMjItXG4tLVxubmV0L3hmcm0vTWFrZWZpbGU9MTk9b2JqLSQoQ09ORklHX1hGUk1fQUxHTykgJiM0Mzs9IHhmcm1fYWxnby5vXG5uZXQveGZybS9NYWtlZmlsZToyMDpvYmotJChDT05GSUdfWEZSTV9VU0VSKSAmIzQzOz0geGZybV91c2VyLm9cbm5ldC94ZnJtL01ha2VmaWxlOjIxOm9iai0kKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKSAmIzQzOz0geGZybV9jb21wYXQub1xubmV0L3hmcm0vTWFrZWZpbGUtMjItb2JqLSQoQ09ORklHX1hGUk1fSVBDT01QKSAmIzQzOz0geGZybV9pcGNvbXAub1xuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE2Nj1zdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF93aXRoX2lmaWQoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMwMS1cdGlmICgoIWRzdF9vcmlnLVx1MDAzZWRldiB8fCAhKGRzdF9vcmlnLVx1MDAzZWRldi1cdTAwM2VmbGFncyBcdTAwMjYgSUZGX0xPT1BCQUNLKSkgXHUwMDI2XHUwMDI2XG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjMzMDI6XHQgICAgUkVBRF9PTkNFKG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W2Rpcl0pID09IFhGUk1fVVNFUlBPTElDWV9CTE9DSykge1xubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzAzLVx0XHRlcnIgPSAtRVBFUk07XG4tLVxubmV0L3hmcm0veGZybV9wb2xpY3kuYz0zNjcwPWludCBfX3hmcm1fcG9saWN5X2NoZWNrKHN0cnVjdCBzb2NrICpzaywgaW50IGRpciwgc3RydWN0IHNrX2J1ZmYgKnNrYixcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTUtXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjM3NTY6XHRcdGlmIChSRUFEX09OQ0UobmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbZGlyXSkgPT0gWEZSTV9VU0VSUE9MSUNZX0JMT0NLKSB7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTctXHRcdFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOTk9QT0xTKTtcbi0tXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTQzMTA9c3RhdGljIGludCBfX25ldF9pbml0IHhmcm1fbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxuLS1cbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMxOC1cdG11dGV4X2luaXQoXHUwMDI2bmV0LVx1MDAzZXhmcm0ueGZybV9jZmdfbXV0ZXgpO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzE5Olx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfSU5dID0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVDtcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6NDMyMDpcdG5ldC1cdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0ZXRF0gPSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzIxOlx0bmV0LVx1MDAzZXhmcm0ucG9saWN5X2RlZmF1bHRbWEZSTV9QT0xJQ1lfT1VUXSA9IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQ7XG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQzMjItXG4tLVxubmV0L3hmcm0veGZybV9zdGF0ZS5jPTI5MzA9c3RhdGljIGJvb2wga21faXNfYWxpdmUoY29uc3Qgc3RydWN0IGttX2V2ZW50ICpjKVxuLS1cbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yOTQ2LVxubmV0L3hmcm0veGZybV9zdGF0ZS5jOjI5NDc6I2lmIElTX0VOQUJMRUQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpXG5uZXQveGZybS94ZnJtX3N0YXRlLmMtMjk0OC1zdGF0aWMgREVGSU5FX1NQSU5MT0NLKHhmcm1fdHJhbnNsYXRvcl9sb2NrKTtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0yNTQ2PXN0YXRpYyBib29sIHhmcm1fdXNlcnBvbGljeV9pc192YWxpZChfX3U4IHBvbGljeSlcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NDcte1xubmV0L3hmcm0veGZybV91c2VyLmM6MjU0ODpcdHJldHVybiBwb2xpY3kgPT0gWEZSTV9VU0VSUE9MSUNZX0JMT0NLIHx8XG5uZXQveGZybS94ZnJtX3VzZXIuYzoyNTQ5Olx0ICAgICAgIHBvbGljeSA9PSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xubmV0L3hmcm0veGZybV91c2VyLmMtMjU1MC19XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0PTE1Mz1DT05GSUdfVlNPQ0tFVFNfTE9PUEJBQ0s9eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0OjE1NDpDT05GSUdfWEZSTV9VU0VSPXlcbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9OTE9Q09ORklHX1ZTWD15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw6OTI6Q09ORklHX1hGUk1fVVNFUj15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTgyPUNPTkZJR19WU09DS0VUU19MT09QQkFDSz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnJpc2N2NjQ6ODM6Q09ORklHX1hGUk1fVVNFUj15XG4tLVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD0xMjQ9Q09ORklHX1ZTT0NLRVRTX0xPT1BCQUNLPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuczM5MHg6MTI1OkNPTkZJR19YRlJNX1VTRVI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTIyNT1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0OjIyNjpDT05GSUdfWEZSTV9VU0VSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0LTIyNy1DT05GSUdfWkVST1BMVVNfRkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvY29uZmlnPTIxPUNPTkZJR19WTEFOXzgwMjFRPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2JvbmRpbmcvY29uZmlnOjIyOkNPTkZJR19YRlJNX1VTRVI9bVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2RyaXZlcnMvbmV0L2h3L2NvbmZpZz0yNT1DT05GSUdfVlhMQU49eVxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvaHcvY29uZmlnOjI2OkNPTkZJR19YRlJNX1VTRVI9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uPTIzOD1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uOjIzOTpDT05GSUdfWEZSTV9VU0VSPXlcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTI0MC1DT05GSUdfWkVST1BMVVNfRkY9eVxuLS1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9jb25maWc9MTM4PUNPTkZJR19YRlJNX0lOVEVSRkFDRT1tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjEzOTpDT05GSUdfWEZSTV9VU0VSPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvZm9yd2FyZGluZy9jb25maWc9NTU9Q09ORklHX1ZYTEFOPW1cbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzo1NjpDT05GSUdfWEZSTV9VU0VSPW1cbi0tXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZz0xMDc9Q09ORklHX1hGUk1fU1RBVElTVElDUz15XG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzoxMDg6Q09ORklHX1hGUk1fVVNFUj1tXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzNjYyCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czoKCioqWEZSTSBVc2VyIENvbmZpZ3VyYXRpb24gVmVyaWZpY2F0aW9uKioKCk9rYXksIHNvIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgYFhGUk1fVVNFUmAgc2V0dGluZyBpcyB0aGUgd2F5IHRvIGdvLiBCdXQsIHlvdSBrbm93IG1lLCBhbHdheXMgZG91YmxlLWNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyEgQmVmb3JlIEkgZnVsbHkgY29tbWl0IHRvIHRoaXMgY29uZmlndXJhdGlvbiBwYXRoLCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgYFhGUk1gIGNvbmZpZ3VyYXRpb24gaW4gaXRzIGVudGlyZXR5LiBJdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCwgYW5kIG1pc3NpbmcgYSBkZXRhaWwgdGhlcmUgY291bGQgZGVyYWlsIHRoZSB3aG9sZSBwcm9jZXNzLiBCZXN0IHRvIHRha2UgYSBtb21lbnQgYW5kIGJlIGNlcnRhaW4gYWJvdXQgdGhlIGVudmlyb25tZW50IEkmIzM5O20gYnVpbGRpbmcgb24uIExldCBtZSBqdXN0IGdvIHRocm91Z2ggdGhlIHJlbGV2YW50IHBhcmFtZXRlcnMuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFhGUk0mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0vS2NvbmZpZy00LSNcbm5ldC94ZnJtL0tjb25maWc6NTpjb25maWcgWEZSTVxubmV0L3hmcm0vS2NvbmZpZy02LVx0Ym9vbFxuLS1cbm5ldC94ZnJtL0tjb25maWctMTAtXG5uZXQveGZybS9LY29uZmlnOjExOmNvbmZpZyBYRlJNX09GRkxPQURcbm5ldC94ZnJtL0tjb25maWctMTItXHRib29sXG5uZXQveGZybS9LY29uZmlnLTEzLVxubmV0L3hmcm0vS2NvbmZpZzoxNDpjb25maWcgWEZSTV9BTEdPXG5uZXQveGZybS9LY29uZmlnLTE1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcbm5ldC94ZnJtL0tjb25maWc6MjM6Y29uZmlnIFhGUk1fVVNFUlxubmV0L3hmcm0vS2NvbmZpZy0yNC1cdHRyaXN0YXRlIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHVzZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTMxLVxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cdHRyaXN0YXRlIFwmIzM0O0NvbXBhdGlibGUgQUJJIHN1cHBvcnRcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTQyLVxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0Vcbm5ldC94ZnJtL0tjb25maWctNDQtXHR0cmlzdGF0ZSBcJiMzNDtUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNTAtXG5uZXQveGZybS9LY29uZmlnOjUxOmNvbmZpZyBYRlJNX1NVQl9QT0xJQ1lcbm5ldC94ZnJtL0tjb25maWctNTItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIHN1YiBwb2xpY3kgc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctNjAtXG5uZXQveGZybS9LY29uZmlnOjYxOmNvbmZpZyBYRlJNX01JR1JBVEVcbm5ldC94ZnJtL0tjb25maWctNjItXHRib29sIFwmIzM0O1RyYW5zZm9ybWF0aW9uIG1pZ3JhdGUgZGF0YWJhc2VcJiMzNDtcbi0tXG5uZXQveGZybS9LY29uZmlnLTcxLVxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXG5uZXQveGZybS9LY29uZmlnLTczLVx0Ym9vbCBcJiMzNDtUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXCYjMzQ7XG4tLVxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjg0OmNvbmZpZyBYRlJNX0FIXG5uZXQveGZybS9LY29uZmlnLTg1LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnLTkyLSMgYWxnb3JpdGhtcyB0aGF0IFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxubmV0L3hmcm0vS2NvbmZpZy05NC1cdHRyaXN0YXRlXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xMDUtXG5uZXQveGZybS9LY29uZmlnOjEwNjpjb25maWcgWEZSTV9JUENPTVBcbm5ldC94ZnJtL0tjb25maWctMTA3LVx0dHJpc3RhdGVcbi0tXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXG4tLVxubmV0L3hmcm0vS2NvbmZpZy0xNDAtXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xubmV0L3hmcm0vS2NvbmZpZy0xNDItXHR0cmlzdGF0ZSBcJiMzNDtJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFwmIzM0O1xuLS1cbm5ldC94ZnJtL0tjb25maWctMTU2LVxubmV0L3hmcm0vS2NvbmZpZzoxNTc6Y29uZmlnIFhGUk1fRVNQSU5UQ1Bcbm5ldC94ZnJtL0tjb25maWctMTU4LVx0Ym9vbFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDYyMQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDMzOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiB0aGUgWEZSTSBNb2R1bGUgRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIGBYRlJNYCBpcyBlc3NlbnRpYWxseSBhIGhpZGRlbiBmbGFnLCBhIGJvb2xlYW4sIGFjdGl2YXRlZCBpbXBsaWNpdGx5IHdoZW4gb3RoZXIgb3B0aW9ucyBsaWtlIGBJTkVUX0VTUElOVENQYCwgYElORVQ2X0FIYCwgb3IgYFhGUk1fVVNFUmAgYXJlIGNob3Nlbi4gVGhpcyBpcyBnb29kIHRvIGtub3c7IEkgZG9uJiMzOTt0IG5lZWQgdG8gZXhwbGljaXRseSBkZWZpbmUgYFhGUk1gIGlmIHRoZSB1bmRlcmx5aW5nIGNvbXBvbmVudCBpcyBhbHJlYWR5IGluIHBsYXkuIE1ha2VzIHRoaW5ncyBjbGVhbmVyLgoKTm93LCBsZXQmIzM5O3MgdHJhY2UgdGhlIHJlYWNoYWJsZSBjb2RlLiBJIG5lZWQgdG8gbWFrZSBzdXJlIEkgdW5kZXJzdGFuZCB0aGUgY2FsbCBwYXRocy4gRmlyc3QsIEkmIzM5O20gY2hlY2tpbmcgYGVzcGludGNwX3JjdmAgYW5kIGBlc3BpbnRjcF9jbG9zZWAuIEFoLCBnb29kLCB0aGV5JiMzOTtyZSBwYXJ0IG9mIGBlc3BpbnRjcF9wcm90YCBhcyBleHBlY3RlZC4gVGhhdCBtYWtlcyBzZW5zZS4gTmV4dCwgYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLi4uIGl0JiMzOTtzIHN0YXRpYywgc28gaXQmIzM5O3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBIb3dldmVyLCBgeGZybV9vdXRwdXRgICppcyogZXhwb3J0ZWQsIHNvIHRoYXQgaXMgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi4KCk1vdmluZyBvbiwgYG5hdF9rZWVwYWxpdmVfd29ya2AgaXMgYSB3b3JrcXVldWUgZnVuY3Rpb24sIGFzIEkgc3VzcGVjdGVkLiBObyBzdXJwcmlzZXMgdGhlcmUuIFRoZW4sIEkmIzM5O20gZXhhbWluaW5nIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIEFnYWluLCBpdCYjMzk7cyBzdGF0aWMsIGJ1dCBgeGZybV9hZGRfc2FgIGlzIHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1vZHVsZSYjMzk7cyBiZWhhdmlvci4KCkZpbmFsbHksIEkmIzM5O20gdmVyaWZ5aW5nIHRoZSBBSCBjb21wb25lbnRzLiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIGFyZSBzdGF0aWMgYXMgd2VsbCwgYnV0IHRoZXkgYXJlIHJlZ2lzdGVyZWQgYXMgaGFuZGxlcnMsIHNvIHRoZXkgYXJlIGNyaXRpY2FsLiBUaGUgc2FtZSBnb2VzIGZvciBgeGZybTZfaW5wdXRfYWRkcmAgd2hpY2ggaXMgZXhwb3J0ZWQuCgpTbyB0aGUgY29yZSBzeW1ib2xzIEkmIzM5O20gdHJhY2tpbmcgYXJlOgoqICAgYGFoNl9pbnB1dGAKKiAgIGBhaDZfb3V0cHV0YAoqICAgYHhmcm02X2lucHV0X2FkZHJgCiogICBgZXNwaW50Y3BfcmN2YAoqICAgYGVzcGludGNwX2Nsb3NlYAoqICAgYHhmcm1fb3V0cHV0YAoqICAgYHhmcm1fYWRkX3NhYAoqICAgYG5hdF9rZWVwYWxpdmVfd29ya2AKCkkgbmVlZCB0byBjb25maXJtIGBlc3BpbnRjcF9yY3ZgIGlzIHRoZSBzcGVjaWZpYyBmdW5jdGlvbiBJJiMzOTttIGxvb2tpbmcgZm9yLi4uIEkmIzM5O2xsIGNoZWNrIGludG8gaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2VzcGludGNwX3JjdiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQveGZybS9lc3BpbnRjcC5jPTI5PXN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxuLS1cbm5ldC94ZnJtL2VzcGludGNwLmMtNTYtXG5uZXQveGZybS9lc3BpbnRjcC5jOjU3OnN0YXRpYyB2b2lkIGVzcGludGNwX3JjdihzdHJ1Y3Qgc3RycGFyc2VyICpzdHJwLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxubmV0L3hmcm0vZXNwaW50Y3AuYy01OC17XG4tLVxubmV0L3hmcm0vZXNwaW50Y3AuYz00NDE9c3RhdGljIGludCBlc3BpbnRjcF9pbml0X3NrKHN0cnVjdCBzb2NrICpzaylcbi0tXG5uZXQveGZybS9lc3BpbnRjcC5jLTQ0NC1cdHN0cnVjdCBzdHJwX2NhbGxiYWNrcyBjYiA9IHtcbm5ldC94ZnJtL2VzcGludGNwLmM6NDQ1Olx0XHQucmN2X21zZyA9IGVzcGludGNwX3Jjdixcbm5ldC94ZnJtL2VzcGludGNwLmMtNDQ2LVx0XHQucGFyc2VfbXNnID0gZXNwaW50Y3BfcGFyc2UsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI1NjgwCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipJbnRlcm5hbCBDb2RlIFJldmlldzogUmVjZWl2ZSBDYWxsYmFjayAmYW1wOyBOQVQgS2VlcGFsaXZlKioKCk9rYXksIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgYGVzcGludGNwX3JjdmAgaXMgdGhlIHJlY2VpdmUgY2FsbGJhY2sgZnVuY3Rpb24gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aC4gTmVlZCB0byBjb25maXJtIHRoYXQgcXVpY2tseTsgaXQmIzM5O3MgYSBjcml0aWNhbCBjb21wb25lbnQuCgpOb3csIGxldCYjMzk7cyBzd2l0Y2ggZ2VhcnMgYW5kIGludmVzdGlnYXRlIGBuYXRfa2VlcGFsaXZlX3dvcmtgLiBUaGF0JiMzOTtzIHRoZSBuZXh0IGxvZ2ljYWwgcGllY2UgdG8gY2hlY2ssIGFzIEkgc3VzcGVjdCB0aGVzZSB0d28gZnVuY3Rpb25zIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbSBpbnRlcmFjdHMgd2l0aCB0aGUgaW5jb21pbmcgZGF0YSBzdHJlYW0gdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseS4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgbG9naWMsIHRoZSB0aW1pbmcsIGFuZCBhbnkgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L25ldG5zL3hmcm0uaD0zMj1zdHJ1Y3QgbmV0bnNfeGZybSB7XG4tLVxuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oLTg1LVx0c3RydWN0IG11dGV4IHhmcm1fY2ZnX211dGV4O1xuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oOjg2Olx0c3RydWN0IGRlbGF5ZWRfd29ya1x0bmF0X2tlZXBhbGl2ZV93b3JrO1xuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oLTg3LX07XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTU4PWVudW0ge1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2Mi1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE2MzpzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjQtXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqYmF0Y2hbTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFXTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjktXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNzA6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNzEte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcyOlx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE3My1cbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxODU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NjpcdFx0XHRcdCAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODcte1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNC1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNTpzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LXtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIyNzpcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cdHN0cnVjdCB4ZnJtX3N0YXRlX3dhbGsgd2Fsaztcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzQtXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMzU6XHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzYtXHR4ZnJtX3N0YXRlX3dhbGtfaW5pdChcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XG4tLVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjM4LVx0XHRjdHgubnIgPSAwO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjM5Olx0XHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgXHUwMDI2Y3R4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQxLVx0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjdHgubnI7IGkmIzQzOyYjNDM7KSB7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDI6XHRcdFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShjdHguYmF0Y2hbaV0sIFx1MDAyNmN0eCk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDMtXHRcdFx0eGZybV9zdGF0ZV9wdXQoY3R4LmJhdGNoW2ldKTtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDgtXHRpZiAoY3R4Lm5leHRfcnVuKVxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjQ5Olx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjUwLVx0XHRcdFx0ICAgICAgKGN0eC5uZXh0X3J1biAtIGN0eC5ub3cpICogSFopO1xuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI4Mz12b2lkIHhmcm1fbmF0X2tlZXBhbGl2ZV9zdGF0ZV91cGRhdGVkKHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5MC1cdG5ldCA9IHhzX25ldCh4KTtcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI5MTpcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIDApO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjkyLX1cbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yOTQ9aW50IF9fbmV0X2luaXQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9pbml0KHN0cnVjdCBuZXQgKm5ldClcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5NS17XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyOTY6XHRJTklUX0RFTEFZRURfV09SSyhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssIG5hdF9rZWVwYWxpdmVfd29yayk7XG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yOTctXHRyZXR1cm4gMDtcbi0tXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0zMDA9aW50IHhmcm1fbmF0X2tlZXBhbGl2ZV9uZXRfZmluaShzdHJ1Y3QgbmV0ICpuZXQpXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDEte1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MzAyOlx0ZGlzYWJsZV9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmspO1xubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMzAzLVx0cmV0dXJuIDA7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3MzIxCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJiMzOTttIGhhdmluZyBpdDoKCioqRGlnZ2luZyBpbnRvIHRoZSBOQVQgS2VlcGFsaXZlIEZ1bmN0aW9uKioKCkFscmlnaHQsIHNvIEkmIzM5O20gcHJldHR5IHN1cmUgdGhhdCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyB0aGUgYWN0dWFsIGZ1bmN0aW9uIGhvb2tlZCBpbnRvIHRoZSB3b3JrcXVldWUgZm9yIGhhbmRsaW5nIE5BVCBrZWVwYWxpdmUgdGFza3MuIEkgbmVlZCB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gdGhvdWdoLCBzbyBJJiMzOTtsbCB0cnVzdCBteSBndXQgZm9yIG5vdywgYnV0IEkgd2FudCB0byB2ZXJpZnkgdGhhdC4KCk5leHQgSSYjMzk7bGwgY2hlY2sgYHhmcm1fYWRkX3NhYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7eGZybV9hZGRfc2EmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L3hmcm0veGZybV91c2VyLmM9OTA3PXN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxuLS1cbm5ldC94ZnJtL3hmcm1fdXNlci5jLTEwMzgtXG5uZXQveGZybS94ZnJtX3VzZXIuYzoxMDM5OnN0YXRpYyBpbnQgeGZybV9hZGRfc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDQwLVx0XHQgICAgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmM9MjkzNz1zdGF0aWMgaW50IHhmcm1fYWRkX3BvbF9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG4tLVxubmV0L3hmcm0veGZybV91c2VyLmMtMzAwMy1cbm5ldC94ZnJtL3hmcm1fdXNlci5jOjMwMDQ6c3RhdGljIGludCB4ZnJtX2FkZF9zYV9leHBpcmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zMDA1LVx0XHRcdCAgICAgIHN0cnVjdCBubGF0dHIgKiphdHRycyxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYz0zNzQwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgeGZybV9saW5rIHtcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzQ4LX0geGZybV9kaXNwYXRjaFtYRlJNX05SX01TR1RZUEVTXSA9IHtcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NDk6XHRbWEZSTV9NU0dfTkVXU0EgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2FkZF9zYSAgICAgICAgfSxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTAtXHRbWEZSTV9NU0dfREVMU0EgICAgICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2RlbF9zYSAgICAgICAgfSxcbi0tXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzYxLVx0W1hGUk1fTVNHX0FDUVVJUkUgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfYWNxdWlyZSAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzYyOlx0W1hGUk1fTVNHX0VYUElSRSAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfc2FfZXhwaXJlIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzYzLVx0W1hGUk1fTVNHX1VQRFBPTElDWSAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfcG9saWN5ICAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzY0Olx0W1hGUk1fTVNHX1VQRFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfc2EgICAgICAgIH0sXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzY1LVx0W1hGUk1fTVNHX1BPTEVYUElSRSAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfcG9sX2V4cGlyZX0sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTk5CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMTQ3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBTZWN1cml0eSBBc3NvY2lhdGlvbiBNb2R1bGUqKgoKT2theSwgc28gSSYjMzk7dmUgY29uZmlybWVkIHRoYXQgYHhmcm1fYWRkX3NhYCBpcyBpbmRlZWQgdGhlIG5ldGxpbmsgY2FsbGJhY2sgd2UmIzM5O3JlIGludGVyZXN0ZWQgaW4uIE5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYGVzcGludGNwX3JjdmAsIGBlc3BpbnRjcF9jbG9zZWAsIGB4ZnJtX291dHB1dGAsIGB4ZnJtX2FkZF9zYWAsIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG1hcHBpbmcgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZS4KCk5leHQsIEkgbmVlZCB0byBjaGVjayB0aGUgY29uZmlndXJhdGlvbnMuIFRoZSByZWxldmFudCBvbmVzIHNlZW0gdG8gYmUgYElORVQ2X0FIYCwgYElORVRfRVNQSU5UQ1BgLCBhbmQgYFhGUk1fVVNFUmAuIEkmIzM5O2xsIGNyb3NzLXJlZmVyZW5jZSB0aGVzZSB3aXRoIHRoZSBzeW1ib2xzIHRvIGVzdGFibGlzaCB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIHVuZGVyc3RhbmQgd2hpY2ggZmVhdHVyZXMgYXJlIGVuYWJsZWQuCgpKdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSYjMzk7bGwgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBhaDZfaW5wdXRgIGFuZCBgYWg2X291dHB1dGAuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgY3JpdGljYWwgZm9yIEFIIHByb2Nlc3NpbmcgaW4gSVB2Niwgc28gSSBzaG91bGQgZW5zdXJlIEkgdW5kZXJzdGFuZCB0aGVpciBmdW5jdGlvbiBjbGVhcmx5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDteKHN0YXRpYyApPyhpbnR8dm9pZCkgYWg2X2lucHV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9pcHY2L2FoNi5jPTM1MD1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXG4tLVxubmV0L2lwdjYvYWg2LmMtNDc0LVxubmV0L2lwdjYvYWg2LmM6NDc1OnN0YXRpYyB2b2lkIGFoNl9pbnB1dF9kb25lKHZvaWQgKmRhdGEsIGludCBlcnIpXG5uZXQvaXB2Ni9haDYuYy00NzYte1xuLS1cbm5ldC9pcHY2L2FoNi5jLTUxOC1cbm5ldC9pcHY2L2FoNi5jOjUxOTpzdGF0aWMgaW50IGFoNl9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC9pcHY2L2FoNi5jLTUyMC17XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4Nzg3CgkJCQkJCQlvdXRwdXQ6IDI2CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgdGFraW5nIG9uIHRoZSBwZXJzb25hIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyBDb3JlIEZ1bmN0aW9uYWxpdHkqKgoKUmlnaHQsIHNvLCB0YWtpbmcgc3RvY2sgb2YgdGhpbmdzLi4uIFllcywgSSYjMzk7bSBwcmV0dHkgY2VydGFpbiB0aG9zZSBhcmUgaW5kZWVkIHRoZSAqcHJpbWFyeSogZnVuY3Rpb25zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggaGVyZS4gTm8gcXVlc3Rpb24gYWJvdXQgaXQuIEJ1dCwgeW91IGtub3cgbWUsIEkgbGlrZSB0byBiZSBhYnNvbHV0ZWx5IGNlcnRhaW4gYmVmb3JlIEkgbW92ZSBmb3J3YXJkLiBBIHNvbGlkIHZlcmlmaWNhdGlvbiBpcyBhbHdheXMgd2lzZSwgc28gbGV0JiMzOTtzIGp1c3QgdGFrZSBhIHF1aWNrIHBlZWsgYXQgYHhmcm1fb3V0cHV0YCBhZ2FpbiwganVzdCB0byBiZSAqY29tcGxldGVseSogc3VyZSB3ZSBoYXZlbiYjMzk7dCBtaXNzZWQgYW55dGhpbmcgY3J1Y2lhbCBpbiBvdXIgaW5pdGlhbCBhbmFseXNpcy4gSXQgbmV2ZXIgaHVydHMgdG8gZG91YmxlLWNoZWNrIHRoZXNlIGNyaXRpY2FsIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7XihzdGF0aWMgKT8oaW50fHZvaWQpIHhmcm1fb3V0cHV0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2luY2x1ZGUvbmV0L3hmcm0uaD0xODAzPWludCB4ZnJtX3RyYW5zX3F1ZXVlKHN0cnVjdCBza19idWZmICpza2IsXG4tLVxuaW5jbHVkZS9uZXQveGZybS5oLTE4MDUtXHRcdFx0XHQgICBzdHJ1Y3Qgc2tfYnVmZiAqKSk7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTgwNjppbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XG5pbmNsdWRlL25ldC94ZnJtLmg6MTgwNzppbnQgeGZybV9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbmluY2x1ZGUvbmV0L3hmcm0uaC0xODA4LWludCB4ZnJtNF90dW5uZWxfY2hlY2tfc2l6ZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTI2LVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzoyNzpzdGF0aWMgaW50IHhmcm1fb3V0cHV0MihzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG5uZXQveGZybS94ZnJtX291dHB1dC5jLTI4LXN0YXRpYyBpbnQgeGZybV9pbm5lcl9leHRyYWN0X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYz00OTY9RVhQT1JUX1NZTUJPTF9HUEwocGt0Z2VuX3hmcm1fb3V0ZXJfbW9kZV9vdXRwdXQpO1xuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNDk4LVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo0OTk6c3RhdGljIGludCB4ZnJtX291dHB1dF9vbmUoc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycilcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTAwLXtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTU5Mi1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM6NTkzOmludCB4ZnJtX291dHB1dF9yZXN1bWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxubmV0L3hmcm0veGZybV9vdXRwdXQuYy01OTQte1xuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIyPXN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjUzLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2NTQ6c3RhdGljIGludCB4ZnJtX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTY1NS17XG4tLVxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTgtXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjY1OTpzdGF0aWMgaW50IHhmcm1fb3V0cHV0X2dzbyhzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNjYwLXtcbi0tXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTY5Nz1zdGF0aWMgdm9pZCB4ZnJtX2dldF9pbm5lcl9pcHByb3RvKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCB4ZnJtX3N0YXRlICp4KVxuLS1cbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzQ3LVxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo3NDg6aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzQ5LXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk3NTUKCQkJCQkJCW91dHB1dDogMjk0CgkJCQkJCQl0aG91Z2h0czogNDg5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgU2VjdXJpdHkgSW1wbGljYXRpb25zIG9mIFRoaXMgUGF0Y2ggU2VyaWVzKioKCk9rYXksIHNvIEkmIzM5O3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBtZXRob2RpY2FsbHkgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGUgY2hhbmdlcy4gUmlnaHQgbm93LCBJJiMzOTttIHZlcmlmeWluZyB0aGUgZnVuY3Rpb24gbmFtZXMsIGp1c3QgdG8gYmUgc3VyZSBJJiMzOTttIHVzaW5nIHRoZSBjb3JyZWN0IGlkZW50aWZpZXJzLiAqYHhmcm1fb3V0cHV0YCogbG9va3MgcmlnaHQsIEkgY29uZmlybSAqYG5hdF9rZWVwYWxpdmVfd29ya2AqIGlzIHRoZSBjb3JyZWN0IG5hbWUuLi4gYW5kICpgeGZybV9hZGRfc2FgKiwgKmBlc3BpbnRjcF9jbG9zZWAqLCAqYGVzcGludGNwX3JjdmAqLCAqYHhmcm02X2lucHV0X2FkZHJgKiwgKmBhaDZfaW5wdXRgKiBhbmQgKmBhaDZfb3V0cHV0YCogYXJlIGFsbCB2ZXJpZmllZC4KClRoZSByZWFzb24gSSYjMzk7bSBkb2luZyB0aGlzIGlzIGJlY2F1c2UgdGhlIHBhdGNoIGRlc2NyaXB0aW9uIGluZGljYXRlcyBmdW5jdGlvbmFsIGNoYW5nZXMgd2l0aGluIHRoZSBjb3JlIG9mIHRoZSBuZXR3b3JrIHN0YWNrLiBTcGVjaWZpY2FsbHksIHRoZXJlJiMzOTtzIGEgZml4IGZvciBhbiBvdXQtb2YtYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAsIHdoaWNoIGlzIGltcG9ydGFudCBmb3Igcm91dGluZyBzZWN1cml0eS4gVGhlcmUgaXMgYWxzbyBhIGRlcHRoIGNoZWNrIGZpeCBpbiBgeGZybTZfaW5wdXRfYWRkcmAuIEEgbnVsbCBwb2ludGVyIGNoZWNrIGlzIGJlaW5nIGFkZGVkIHRvIGBza2ItJmd0O2RldmAgd2l0aGluIGBoYW5kbGVfZXNwYCwgd2hpY2ggaXMgYSBjb21tb24gc291cmNlIG9mIGV4cGxvaXRhYmxlIGVycm9ycyBpZiBtaXNoYW5kbGVkLiBSZXBsYWNpbmcgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAgaXMgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gUmV3cml0aW5nIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGVzdGVkLCBhcyBpdCBjb3VsZCBoYXZlIHN1YnRsZSBlZmZlY3RzIG9uIHNlY3VyaXR5LiBJIGFsc28gc2VlIGEgZG91YmxlLWZyZWUgcmVtb3ZlZCBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIHdoaWNoIGlzIGFuIGV4cGxvaXRhYmxlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlLCBhbmQgYSBmaXggaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmb3IgYSBmaWVsZCBjaGVjay4gVGhlc2UgYXJlIGFsbCBjcml0aWNhbCBhcmVhcyBvZiB0aGUga2VybmVsLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBmdXp6aW5nLgoKTXkgcHJpbWFyeSBmb2N1cyBhcmVhcyBmb3IgZnV6emluZyB3aWxsIGJlOgoKKiAgIGBhaDZfaW5wdXRgCiogICBgYWg2X291dHB1dGAKKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYAoqICAgYGVzcGludGNwX3JjdmAKKiAgIGBlc3BpbnRjcF9jbG9zZWAKKiAgIGB4ZnJtX291dHB1dGAKKiAgIGB4ZnJtX2FkZF9zYWAKKiAgIGBuYXRfa2VlcGFsaXZlX3dvcmtgCgpJIG5lZWQgdG8gbWFrZSBzdXJlIEkgaGF2ZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3VyYXRpb25zIGVuYWJsZWQuIEJhc2VkIG9uIHRoZSBwYXRjaCwgdGhlIGNvbmZpZ3MgSSBuZWVkIGFyZTogYElORVQ2X0FIYCwgYElORVRfRVNQSU5UQ1BgLCBhbmQgYFhGUk1fVVNFUmAuCgpPa2F5LCBJJiMzOTttIHJlYWR5IHRvIGNhbGwgYHNldC1yZXN1bHRzYC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTggMTA6MzY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0lORVQ2X0FIJiMzNDssCiAgICAmIzM0O0lORVRfRVNQSU5UQ1AmIzM0OywKICAgICYjMzQ7WEZSTV9VU0VSJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7YWg2X2lucHV0JiMzNDssCiAgICAmIzM0O2FoNl9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybTZfaW5wdXRfYWRkciYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9yY3YmIzM0OywKICAgICYjMzQ7ZXNwaW50Y3BfY2xvc2UmIzM0OywKICAgICYjMzQ7eGZybV9vdXRwdXQmIzM0OywKICAgICYjMzQ7eGZybV9hZGRfc2EmIzM0OywKICAgICYjMzQ7bmF0X2tlZXBhbGl2ZV93b3JrJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXHUwMDNlZGV2YCBpbiBgaGFuZGxlX2VzcGAgKEVTUCBpbiBUQ1ApLCByZXBsYWNlcyBgYmFycmllcigpYCB3aXRoIGBzeW5jaHJvbml6ZV9yY3UoKWAgaW4gYGVzcGludGNwX2Nsb3NlYCwgcmV3cml0ZXMgdGhlIE5BVCBrZWVwYWxpdmUgd29ya3F1ZXVlIHRvIHVzZSBiYXRjaGluZyBpbiBgeGZybV9uYXRfa2VlcGFsaXZlLmNgLCByZW1vdmVzIGEgZG91YmxlLWZyZWUgaW4gYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLCBhbmQgZml4ZXMgYSBmaWVsZCBjaGVjayBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLiBUaGVzZSBhcmUgYWxsIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBuZXR3b3JraW5nIGFuZCBJUHNlYyBsb2dpYywgd2hpY2ggYXJlIGRlZmluaXRlbHkgd29ydGggZnV6emluZy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7SU5FVDZfQUgmIzM0OywKICAgICYjMzQ7SU5FVF9FU1BJTlRDUCYjMzQ7LAogICAgJiMzNDtYRlJNX1VTRVImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDthaDZfaW5wdXQmIzM0OywKICAgICYjMzQ7YWg2X291dHB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtNl9pbnB1dF9hZGRyJiMzNDssCiAgICAmIzM0O2VzcGludGNwX3JjdiYjMzQ7LAogICAgJiMzNDtlc3BpbnRjcF9jbG9zZSYjMzQ7LAogICAgJiMzNDt4ZnJtX291dHB1dCYjMzQ7LAogICAgJiMzNDt4ZnJtX2FkZF9zYSYjMzQ7LAogICAgJiMzNDtuYXRfa2VlcGFsaXZlX3dvcmsmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnRhaW5zIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBJdCBmaXhlcyBhbiBvdXQtb2YtYm91bmRzIGNoZWNrIGluIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgYW5kIHByb3BhZ2F0ZXMgdGhlIGVycm9yLCBmaXhlcyBhIGRlcHRoIGNoZWNrIGluIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYWRkcyBhIE5VTEwgcG9pbnRlciBjaGVjayBmb3IgYHNrYi1cdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ3LzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzE4IDEwOjM2PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIHNlcmllcyBjb25zaXN0cyBvZiBmaXhlcyBmb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcyAoaW4gaXB2Nl9yZWFycmFuZ2VfcnRoZHIgYW5kIHhmcm02X2lucHV0X2FkZHIpLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzIChpbiBoYW5kbGVfZXNwKSwgdXNlLWFmdGVyLWZyZWUvY29uY3VycmVuY3kgaXNzdWVzIChpbiBlc3BpbnRjcF9jbG9zZSBhbmQgeGZybV9uYXRfa2VlcGFsaXZlKSwgZG91YmxlIGZyZWUgKGluIHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQpLCBhbmQgbG9naWMgZXJyb3JzIChpbiB4ZnJtX3N0YXRlX2NvbnN0cnVjdCkuIE5vIG5ldyBzdHJ1Y3R1cmVzIGFyZSBzZW50IHRvIHVzZXIgc3BhY2UsIGFuZCBubyBuZXcgdW5pbml0aWFsaXplZCBtZW1vcnkgcmlza3Mgb3IgaW5mby1sZWFrcyBhcmUgaW50cm9kdWNlZC4gU3RhbmRhcmQgS0FTQU4sIExPQ0tERVAsIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzIGFyZSBmdWxseSBzdWZmaWNpZW50IHRvIGNvdmVyIHRoZXNlIGNoYW5nZXMuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5CmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kCmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikKZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuCgpDUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjoKLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlCiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOCiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUAogIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuCi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsCiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLgoKUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTiwKTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy4KQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWQpzZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrcwp0aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLgoKTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3QKdW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsCmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5cwp0aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZwp1bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2wKZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLApjYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy4KClNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczoKMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2IKICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHMKICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC4KMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcwogICBvciBzdHJ1Y3QgZmllbGRzLgozLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzCiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuCjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzCiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy4KClNldCBOZWVkc0tNU0FOPWZhbHNlIElGOgotIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyCiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0CiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLgotIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkCiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLgotIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy4KClVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGUKZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDozNDowNiAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmMKaW5kZXggNzZmN2EyZGU5MTA4ZS4uYzk2ZjdlMGQwYTQ4MSAxMDA2NDQKLS0tIGEvbmV0L2lwdjYvYWg2LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYvYWg2LmMKQEAgLTIzMiwyNiAmIzQzOzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlcwogICoJUmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyCiAgKglzbyB0aGF0IHRoZXkgYXBwZWFyIGluIHRoZSBvcmRlciB0aGV5IHdpbGwgYXQgdGhlIGZpbmFsIGRlc3RpbmF0aW9uLgogICoJU2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLgomIzQzOyAqCiYjNDM7ICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2YKJiM0MzsgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi4KICAqLwotc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKJiM0MztzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpCiB7Ci0JaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0OwomIzQzOwl1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7CiAJc3RydWN0IGluNl9hZGRyICphZGRyczsKIAlzdHJ1Y3QgaW42X2FkZHIgZmluYWxfYWRkcjsKIAogCXNlZ21lbnRzX2xlZnQgPSBydGhkci0mZ3Q7c2VnbWVudHNfbGVmdDsKIAlpZiAoc2VnbWVudHNfbGVmdCA9PSAwKQotCQlyZXR1cm47Ci0JcnRoZHItJmd0O3NlZ21lbnRzX2xlZnQgPSAwOwomIzQzOwkJcmV0dXJuIDA7CiAKLQkvKiBUaGUgdmFsdWUgb2YgcnRoZHItJmd0O2hkcmxlbiBoYXMgYmVlbiB2ZXJpZmllZCBlaXRoZXIgYnkgdGhlIHN5c3RlbQotCSAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nCi0JICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzCi0JICogZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHNlZ21lbnRzX2xlZnQuCi0JICoKLQkgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuCiYjNDM7CS8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50CiYjNDM7CSAqIHJlcXVpcmVkIGJ5IHRoZSBydDAtc3R5bGUgYWRkcmVzcyByZWFycmFuZ2VtZW50IGJlbG93LgogCSAqLwogCXNlZ21lbnRzID0gcnRoZHItJmd0O2hkcmxlbiAmZ3Q7Jmd0OyAxOwomIzQzOwlpZiAoc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CiYjNDM7CXJ0aGRyLSZndDtzZWdtZW50c19sZWZ0ID0gMDsKIAogCWFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS0mZ3Q7YWRkcjsKIAlmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTsKQEAgLTI2MSw2ICYjNDM7MjYzLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcikKIAogCWFkZHJzWzBdID0gaXBoLSZndDtkYWRkcjsKIAlpcGgtJmd0O2RhZGRyID0gZmluYWxfYWRkcjsKJiM0MzsKJiM0MzsJcmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcikKQEAgLTI3Myw2ICYjNDM7Mjc3LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKQogCX0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07CiAJY2hhciAqZW5kID0gZXh0aGRyLnJhdyAmIzQzOyBsZW47CiAJaW50IG5leHRoZHIgPSBpcGgtJmd0O25leHRoZHI7CiYjNDM7CWludCBlcnI7CiAKIAlleHRoZHIuaXBoJiM0MzsmIzQzOzsKIApAQCAtMjkyLDcgJiM0MzsyOTcsOSBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpCiAJCQlicmVhazsKIAogCQljYXNlIE5FWFRIRFJfUk9VVElORzoKLQkJCWlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7CiYjNDM7CQkJZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTsKJiM0MzsJCQlpZiAoZXJyKQomIzQzOwkJCQlyZXR1cm4gZXJyOwogCQkJYnJlYWs7CiAKIAkJZGVmYXVsdDoKZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jCmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0Ci0tLSBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L2lwdjYveGZybTZfaW5wdXQuYwpAQCAtMjQ3LDcgJiM0MzsyNDcsNyBAQCBpbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsCiAJCWdvdG8gZHJvcDsKIAl9CiAKLQlpZiAoMSAmIzQzOyBzcC0mZ3Q7bGVuID09IFhGUk1fTUFYX0RFUFRIKSB7CiYjNDM7CWlmIChzcC0mZ3Q7bGVuICZndDs9IFhGUk1fTUFYX0RFUFRIKSB7CiAJCVhGUk1fSU5DX1NUQVRTKG5ldCwgTElOVVhfTUlCX1hGUk1JTkJVRkZFUkVSUk9SKTsKIAkJZ290byBkcm9wOwogCX0KZGlmZiAtLWdpdCBhL25ldC94ZnJtL2VzcGludGNwLmMgYi9uZXQveGZybS9lc3BpbnRjcC5jCmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL2VzcGludGNwLmMKJiM0MzsmIzQzOyYjNDM7IGIvbmV0L3hmcm0vZXNwaW50Y3AuYwpAQCAtMzcsNiAmIzQzOzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKQogCiAJcmN1X3JlYWRfbG9jaygpOwogCXNrYi0mZ3Q7ZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBza2ItJmd0O3NrYl9paWYpOwomIzQzOwlpZiAoIXNrYi0mZ3Q7ZGV2KSB7CiYjNDM7CQlYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7CiYjNDM7CQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJCWdvdG8gb3V0OwomIzQzOwl9CiAJbG9jYWxfYmhfZGlzYWJsZSgpOwogI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpCiAJaWYgKHNrLSZndDtza19mYW1pbHkgPT0gQUZfSU5FVDYpCkBAIC00NSw2ICYjNDM7NTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaykKICNlbmRpZgogCQl4ZnJtNF9yY3ZfZW5jYXAoc2tiLCBJUFBST1RPX0VTUCwgMCwgVENQX0VOQ0FQX0VTUElOVENQKTsKIAlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MztvdXQ6CiAJcmN1X3JlYWRfdW5sb2NrKCk7CiB9CiAKQEAgLTUxNSw3ICYjNDM7NTIxLDggQEAgc3RhdGljIHZvaWQgZXNwaW50Y3BfY2xvc2Uoc3RydWN0IHNvY2sgKnNrLCBsb25nIHRpbWVvdXQpCiAJc3RycF9zdG9wKCZhbXA7Y3R4LSZndDtzdHJwKTsKIAogCXNrLSZndDtza19wcm90ID0gJmFtcDt0Y3BfcHJvdDsKLQliYXJyaWVyKCk7CiYjNDM7CiYjNDM7CXN5bmNocm9uaXplX3JjdSgpOwogCiAJZGlzYWJsZV93b3JrX3N5bmMoJmFtcDtjdHgtJmd0O3dvcmspOwogCXN0cnBfZG9uZSgmYW1wO2N0eC0mZ3Q7c3RycCk7CmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCmluZGV4IGViMWI2ZjY3NzM5ZTEuLjVjZDZkNDMxNjRkYmMgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jCkBAIC0xNTUsMjUgJiM0MzsxNTUsNTAgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSkKIAl9CiB9CiAKJiM0MztlbnVtIHsKJiM0MzsJTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFID0gMTYsCiYjNDM7CU5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCA9IDEsCiYjNDM7fTsKJiM0MzsKIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHsKJiM0MzsJc3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07CiYjNDM7CXVuc2lnbmVkIGludCBucjsKIAl0aW1lNjRfdCBuZXh0X3J1bjsKIAl0aW1lNjRfdCBub3c7CiB9OwogCi1zdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQomIzQzO3N0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKQogewogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7CiYjNDM7CiYjNDM7CWlmICghUkVBRF9PTkNFKHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKQomIzQzOwkJcmV0dXJuIDA7CiYjNDM7CiYjNDM7CWlmIChjdHgtJmd0O25yID09IEFSUkFZX1NJWkUoY3R4LSZndDtiYXRjaCkpCiYjNDM7CQlyZXR1cm4gTkFUX0tFRVBBTElWRV9CQVRDSF9GVUxMOwomIzQzOwomIzQzOwl4ZnJtX3N0YXRlX2hvbGQoeCk7CiYjNDM7CWN0eC0mZ3Q7YmF0Y2hbY3R4LSZndDtuciYjNDM7JiM0MztdID0geDsKJiM0MzsJcmV0dXJuIDA7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsCiYjNDM7CQkJCSAgICAgIHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHgpCiYjNDM7ewogCWJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTsKIAlzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTsKLQl0aW1lNjRfdCBuZXh0X3J1bjsKJiM0MzsJdGltZTY0X3QgbmV4dF9ydW4gPSAwOwogCXUzMiBpbnRlcnZhbDsKIAlpbnQgZGVsdGE7CiAKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7eC0mZ3Q7bG9jayk7CiYjNDM7CiYjNDM7CWlmICh4LSZndDtrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpCiYjNDM7CQlnb3RvIG91dDsKJiM0MzsKIAlpbnRlcnZhbCA9IHgtJmd0O25hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7CiAJaWYgKCFpbnRlcnZhbCkKLQkJcmV0dXJuIDA7Ci0KLQlzcGluX2xvY2soJmFtcDt4LSZndDtsb2NrKTsKJiM0MzsJCWdvdG8gb3V0OwogCiAJZGVsdGEgPSAoaW50KShjdHgtJmd0O25vdyAtIHgtJmd0O2xhc3R1c2VkKTsKIAlpZiAoZGVsdGEgJmx0OyBpbnRlcnZhbCkgewpAQCAtMTg3LDE0ICYjNDM7MjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpCiAJCXNlbmRfa2VlcGFsaXZlID0gdHJ1ZTsKIAl9CiAKLQlzcGluX3VubG9jaygmYW1wO3gtJmd0O2xvY2spOwomIzQzO291dDoKJiM0MzsJc3Bpbl91bmxvY2tfYmgoJmFtcDt4LSZndDtsb2NrKTsKIAogCWlmIChzZW5kX2tlZXBhbGl2ZSkKIAkJbmF0X2tlZXBhbGl2ZV9zZW5kKCZhbXA7a2EpOwogCi0JaWYgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikKJiM0MzsJaWYgKG5leHRfcnVuICZhbXA7JmFtcDsgKCFjdHgtJmd0O25leHRfcnVuIHx8IG5leHRfcnVuICZsdDsgY3R4LSZndDtuZXh0X3J1bikpCiAJCWN0eC0mZ3Q7bmV4dF9ydW4gPSBuZXh0X3J1bjsKLQlyZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKQEAgLTIwMiwxMyAmIzQzOzIyNywyMyBAQCBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKQogCXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDsKIAlzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7CiAJc3RydWN0IG5ldCAqbmV0OwomIzQzOwlpbnQgZXJyLCBpOwogCiAJY3R4Lm5leHRfcnVuID0gMDsKIAljdHgubm93ID0ga3RpbWVfZ2V0X3JlYWxfc2Vjb25kcygpOwogCiAJbmV0ID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBuZXQsIHhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLndvcmspOwogCXhmcm1fc3RhdGVfd2Fsa19pbml0KCZhbXA7d2FsaywgSVBQUk9UT19FU1AsIE5VTEwpOwotCXhmcm1fc3RhdGVfd2FsayhuZXQsICZhbXA7d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZSwgJmFtcDtjdHgpOwomIzQzOwlkbyB7CiYjNDM7CQljdHgubnIgPSAwOwomIzQzOwkJZXJyID0geGZybV9zdGF0ZV93YWxrKG5ldCwgJmFtcDt3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgJmFtcDtjdHgpOwomIzQzOwkJbG9jYWxfYmhfZGlzYWJsZSgpOwomIzQzOwkJZm9yIChpID0gMDsgaSAmbHQ7IGN0eC5ucjsgaSYjNDM7JiM0MzspIHsKJiM0MzsJCQluYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgJmFtcDtjdHgpOwomIzQzOwkJCXhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7CiYjNDM7CQl9CiYjNDM7CQlsb2NhbF9iaF9lbmFibGUoKTsKJiM0MzsJfSB3aGlsZSAoZXJyID09IE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCk7CiAJeGZybV9zdGF0ZV93YWxrX2RvbmUoJmFtcDt3YWxrLCBuZXQpOwogCWlmIChjdHgubmV4dF9ydW4pCiAJCXNjaGVkdWxlX2RlbGF5ZWRfd29yaygmYW1wO25ldC0mZ3Q7eGZybS5uYXRfa2VlcGFsaXZlX3dvcmssCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX291dHB1dC5jIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuYwppbmRleCBjYzM1YzJmY2JiZTA5Li5lMzA1YmEzMmUzNTZiIDEwMDY0NAotLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMKQEAgLTYzNiwxMCAmIzQzOzYzNiw4IEBAIHN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LAogCW5mX3Jlc2V0X2N0KHNrYik7CiAKIAllcnIgPSBza2JfZHN0KHNrYiktJmd0O29wcy0mZ3Q7bG9jYWxfb3V0KG5ldCwgc2ssIHNrYik7Ci0JaWYgKHVubGlrZWx5KGVyciAhPSAxKSkgewotCQlrZnJlZV9za2Ioc2tiKTsKJiM0MzsJaWYgKHVubGlrZWx5KGVyciAhPSAxKSkKIAkJcmV0dXJuIGVycjsKLQl9CiAKIAkvKiBJbiB0cmFuc3BvcnQgbW9kZSwgbmV0d29yayBkZXN0aW5hdGlvbiBpcwogCSAqIGRpcmVjdGx5IHJlYWNoYWJsZSwgd2hpbGUgaW4gdHVubmVsIG1vZGUsCmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0Ci0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC94ZnJtL3hmcm1fdXNlci5jCkBAIC05NDAsNyAmIzQzOzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LAogCWlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoJmFtcDt4LSZndDthYWxnLCAmYW1wO3gtJmd0O3Byb3BzLmFhbGdvLAogCQkJCSAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhfVFJVTkNdLCBleHRhY2spKSkKIAkJZ290byBlcnJvcjsKLQlpZiAoIXgtJmd0O3Byb3BzLmFhbGdvKSB7CiYjNDM7CWlmICgheC0mZ3Q7YWFsZykgewogCQlpZiAoKGVyciA9IGF0dGFjaF9hdXRoKCZhbXA7eC0mZ3Q7YWFsZywgJmFtcDt4LSZndDtwcm9wcy5hYWxnbywKIAkJCQkgICAgICAgYXR0cnNbWEZSTUFfQUxHX0FVVEhdLCBleHRhY2spKSkKIAkJCWdvdG8gZXJyb3I7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MTQ2CgkJCQkJCQlvdXRwdXQ6IDE2MwoJCQkJCQkJdGhvdWdodHM6IDk0MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqCgpPa2F5LCBsZXQmIzM5O3MgYXNzZXNzIHRoaXMgcGF0Y2ggc2VyaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZXNlIGNoYW5nZXMgd2FycmFudCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24sIHNpbmNlIEtNU0FOIGlzIHNwZWNpZmljYWxseSBkZXNpZ25lZCB0byBjYXRjaCB1c2VzIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBMZXQmIzM5O3MgZGlnIGluLgoKVGhlIGZpcnN0IHBhdGNoIHRvdWNoZXMgYG5ldC9pcHY2L2FoNi5jYC4gSXQgbG9va3MgbGlrZSBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGdvdCBhIGJvdW5kcyBjaGVjayBhZGRlZCB0byBpdC4gQmFzaWNhbGx5LCBpdCYjMzk7cyBhIHZhbGlkYXRpb24gZml4IHByZXZlbnRpbmcgb3V0LW9mLWJvdW5kcyByZWFkcywgd2hpY2ggaXMgZ29vZCwgYnV0IGl0IGRvZXNuJiMzOTt0IHNjcmVhbSAmIzM0O3VuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWsmIzM0OyB0byBtZS4gTW92aW5nIG9uLCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGp1c3QgaGFuZGxlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoYXQgZnVuY3Rpb24uCgpOZXh0LCB3ZSBoYXZlIGBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYCwgd2hpY2ggaXMgYWxzbyBhIGJvdW5kcyBjaGVjay4gSXQmIzM5O3MgdGlnaHRlbmluZyB1cCBhIGNvbmRpdGlvbiB0byBwcmV2ZW50IGlzc3VlcywgYnV0IHN0aWxsIGRvZXNuJiMzOTt0IGFwcGVhciB0byBiZSBhIEtNU0FOIHRhcmdldC4KClRoZSB0aGlyZCBwYXRjaCwgYG5ldC94ZnJtL2VzcGludGNwLmNgLCBmaXhlcyBhIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZSBhbmQgYWRkcmVzc2VzIHNvbWUgdXNlLWFmdGVyLWZyZWUgYW5kIGNvbmN1cnJlbmN5IGlzc3Vlcy4gU3BlY2lmaWNhbGx5LCBpdCBhZGRzIGEgY2hlY2sgZm9yIGAhc2tiLSZndDtkZXZgIGFuZCBzd2FwcyBvdXQgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgLiBJbXBvcnRhbnQgZml4ZXMsIGJ1dCBub3QgcmVsYXRlZCB0byB1bmluaXRpYWxpemVkIG1lbW9yeS4KClRoZW4sIHRoZXJlJiMzOTtzIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHdoaWNoIHNlZW1zIHRvIGJlIGFsbCBhYm91dCBjb25jdXJyZW5jeSwgbG9ja2luZywgYW5kIHVzZS1hZnRlci1mcmVlIHNjZW5hcmlvcy4gSXQgcmVzdHJ1Y3R1cmVzIHdvcmsgcHJvY2Vzc2luZyB1c2luZyBhIGBiYXRjaGAgYXJyYXksIHJlcGxhY2VzIGBzcGluX2xvY2tgIHdpdGggYHNwaW5fbG9ja19iaGAsIGFuZCBhZGRzIGB4ZnJtX3N0YXRlX2hvbGRgIGFuZCBgeGZybV9zdGF0ZV9wdXRgLiBUaGlzIGlzIHNvbGlkLCBidXQgYWdhaW4sIGRvZXNuJiMzOTt0IHNlZW0gdG8gYmUgYSBLTVNBTiBpc3N1ZSBzcGVjaWZpY2FsbHkuCgpJbiBgbmV0L3hmcm0veGZybV9vdXRwdXQuY2AsIHRoZXJlJiMzOTtzIGEgZml4IGZvciBkb3VibGUgZnJlZXMgb3IgbWVtb3J5IGxlYWtzLiBUaGUgcGF0Y2ggcmVtb3ZlcyBhIGBrZnJlZV9za2Ioc2tiKWAgY2FsbCB1bmRlciBjZXJ0YWluIGVycm9yIGNvbmRpdGlvbnMuIFRoaXMgaXMgZ29vZCBzYW5pdGF0aW9uLCBidXQgbm90IGEgS01TQU4gZmxhZy4KCkxhc3RseSwgYG5ldC94ZnJtL3hmcm1fdXNlci5jYCBoYXMgYSBzaW1wbGUgbG9naWMgYnVnIGZpeC4gSXQgY2hhbmdlcyBhIGNvbmRpdGlvbmFsIGNoZWNrLCBidXQgdGhpcyBhZ2FpbiBoYXMgbm90aGluZyB0byBkbyB3aXRoIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LgoKU28sIHNjYW5uaW5nIHRoZXNlIGNoYW5nZXMsIEkgZG9uJiMzOTt0IHNlZSBhbnkgb2J2aW91cyBLTVNBTiBmbGFncy4gVGhlcmUgYXJlIG5vIG5ldyBzdHJ1Y3R1cmVzIGJlaW5nIHNlbnQgdG8gdXNlciBzcGFjZSwgbm8gbmV3IGFsbG9jYXRpb25zIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGhvdXQgaW5pdGlhbGl6YXRpb24sIGFuZCBubyBjb25kaXRpb25hbCBsb2dpYyB0aGF0IGRlcGVuZHMgb24gdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuIFdlJiMzOTtyZSBtYWlubHkgc2VlaW5nIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCB1c2UtYWZ0ZXItZnJlZSBpc3N1ZXMsIGxvY2tpbmcgYnVncywgYW5kIGxvZ2ljIGVycm9ycy4gVGhlc2UgYXJlIHRoZSBraW5kcyBvZiBpc3N1ZXMgdGhhdCBLQVNBTiwgTE9DS0RFUCwgYW5kIHRoZSB1c3VhbCBzdXNwZWN0cyBhcmUgZGVzaWduZWQgdG8gY2F0Y2guCgpMZXQmIzM5O3MgZG8gYSBxdWljayBkb3VibGUtY2hlY2sgb24gYG5ldC9pcHY2L2FoNi5jYC4gVGhhdCBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGZ1bmN0aW9uIHdpdGggdGhlIGJvdW5kcyBjaGVjay4uLiBgc2VnbWVudHNfbGVmdCAmZ3Q7IHNlZ21lbnRzYC4uLiB0aGF0IGNsZWFybHkgcHJldmVudHMgcmVhZGluZyBvdXRzaWRlIHRoZSBgYWRkcnNgIGFycmF5LiAgQSBLQVNBTiB3b3VsZCBkZWZpbml0ZWx5IHNlZSB0aGF0LgoKQW5kIHRoYXQgYG5hdF9rZWVwYWxpdmVfd29ya19jdHhgIGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2Agd2l0aCBpdHMgYGJhdGNoYCBhcnJheS4uLiB0aGUgYXJyYXkgaXRzZWxmIGlzIHBvcHVsYXRlZCBhbmQgdXNlZCBjb3JyZWN0bHkuIFRoZXJlJiMzOTtzIG5vIGx1cmtpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2UgdGhlcmUuCgpDb25jbHVzaW9uOiBObywgd2UgKmRvbiYjMzk7dCogbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGZvciB0aGlzLiBUaGVzZSBwYXRjaGVzIGFkZHJlc3MgdnVsbmVyYWJpbGl0aWVzIHRoYXQgYXJlIHdlbGwtY292ZXJlZCBieSBleGlzdGluZyB0b29scy4gTXkgcmVhc29uaW5nIGlzIHNvbGlkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xOCAxMDozNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIChpbiBpcHY2X3JlYXJyYW5nZV9ydGhkciBhbmQgeGZybTZfaW5wdXRfYWRkciksIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgKGluIGhhbmRsZV9lc3ApLCB1c2UtYWZ0ZXItZnJlZS9jb25jdXJyZW5jeSBpc3N1ZXMgKGluIGVzcGludGNwX2Nsb3NlIGFuZCB4ZnJtX25hdF9rZWVwYWxpdmUpLCBkb3VibGUgZnJlZSAoaW4geGZybV9kZXZfZGlyZWN0X291dHB1dCksIGFuZCBsb2dpYyBlcnJvcnMgKGluIHhmcm1fc3RhdGVfY29uc3RydWN0KS4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlc2UgY2hhbmdlcy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6MDguNjk1NzQ5NzQ1WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTcxNTI3MDk5MDExLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIklORVQ2X0FIXCIsXG4gICAgXCJJTkVUX0VTUElOVENQXCIsXG4gICAgXCJYRlJNX1VTRVJcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJhaDZfaW5wdXRcIixcbiAgICBcImFoNl9vdXRwdXRcIixcbiAgICBcInhmcm02X2lucHV0X2FkZHJcIixcbiAgICBcImVzcGludGNwX3JjdlwiLFxuICAgIFwiZXNwaW50Y3BfY2xvc2VcIixcbiAgICBcInhmcm1fb3V0cHV0XCIsXG4gICAgXCJ4ZnJtX2FkZF9zYVwiLFxuICAgIFwibmF0X2tlZXBhbGl2ZV93b3JrXCJcbiAgXSxcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2UsXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXFx1MDAzZWRldmAgaW4gYGhhbmRsZV9lc3BgIChFU1AgaW4gVENQKSwgcmVwbGFjZXMgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAsIHJld3JpdGVzIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgcmVtb3ZlcyBhIGRvdWJsZS1mcmVlIGluIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YCwgYW5kIGZpeGVzIGEgZmllbGQgY2hlY2sgaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YC4gVGhlc2UgYXJlIGFsbCByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBhbmQgSVBzZWMgbG9naWMsIHdoaWNoIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjA4LjY5NTc1NjA1NVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTYzMjIyOTQ4OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTA6MzQ6MDYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYvYWg2LmMgYi9uZXQvaXB2Ni9haDYuY1xcbmluZGV4IDc2ZjdhMmRlOTEwOGUuLmM5NmY3ZTBkMGE0ODEgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcXG4rKysgYi9uZXQvaXB2Ni9haDYuY1xcbkBAIC0yMzIsMjYgKzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlc1xcbiAgKlxcdFJlYXJyYW5nZSB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyBpbiBAaXBoIGFuZCB0aGUgYWRkcmVzc2VzIGluIEBydGhkclxcbiAgKlxcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXFxuICAqXFx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxcbisgKlxcbisgKiBSZXR1cm46IDAgb24gc3VjY2VzcywgLUVJTlZBTCBpZiBzZWdtZW50c19sZWZ0IGV4Y2VlZHMgdGhlIG51bWJlciBvZlxcbisgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi5cXG4gICovXFxuLXN0YXRpYyB2b2lkIGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXFxuK3N0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4ge1xcbi1cXHRpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XFxuK1xcdHVuc2lnbmVkIGludCBzZWdtZW50cywgc2VnbWVudHNfbGVmdDtcXG4gXFx0c3RydWN0IGluNl9hZGRyICphZGRycztcXG4gXFx0c3RydWN0IGluNl9hZGRyIGZpbmFsX2FkZHI7XFxuIFxcbiBcXHRzZWdtZW50c19sZWZ0ID0gcnRoZHItXFx1MDAzZXNlZ21lbnRzX2xlZnQ7XFxuIFxcdGlmIChzZWdtZW50c19sZWZ0ID09IDApXFxuLVxcdFxcdHJldHVybjtcXG4tXFx0cnRoZHItXFx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xcbitcXHRcXHRyZXR1cm4gMDtcXG4gXFxuLVxcdC8qIFRoZSB2YWx1ZSBvZiBydGhkci1cXHUwMDNlaGRybGVuIGhhcyBiZWVuIHZlcmlmaWVkIGVpdGhlciBieSB0aGUgc3lzdGVtXFxuLVxcdCAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nXFxuLVxcdCAqIHBhY2tldHMuICBTbyB3ZSBjYW4gYXNzdW1lIHRoYXQgaXQgaXMgZXZlbiBhbmQgdGhhdCBzZWdtZW50cyBpc1xcbi1cXHQgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VnbWVudHNfbGVmdC5cXG4tXFx0ICpcXG4tXFx0ICogRm9yIHRoZSBzYW1lIHJlYXNvbiB3ZSBjYW4gYXNzdW1lIHRoYXQgdGhpcyBvcHRpb24gaXMgb2YgdHlwZSAwLlxcbitcXHQvKiBSYXcgbG9jYWxseSBnZW5lcmF0ZWQgcGFja2V0cyBjYW4gcmVhY2ggQUg2IHdpdGhvdXQgdGhlIGludmFyaWFudFxcbitcXHQgKiByZXF1aXJlZCBieSB0aGUgcnQwLXN0eWxlIGFkZHJlc3MgcmVhcnJhbmdlbWVudCBiZWxvdy5cXG4gXFx0ICovXFxuIFxcdHNlZ21lbnRzID0gcnRoZHItXFx1MDAzZWhkcmxlbiBcXHUwMDNlXFx1MDAzZSAxO1xcbitcXHRpZiAoc2VnbWVudHNfbGVmdCBcXHUwMDNlIHNlZ21lbnRzKVxcbitcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4rXFxuK1xcdHJ0aGRyLVxcdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcXG4gXFxuIFxcdGFkZHJzID0gKChzdHJ1Y3QgcnQwX2hkciAqKXJ0aGRyKS1cXHUwMDNlYWRkcjtcXG4gXFx0ZmluYWxfYWRkciA9IGFkZHJzW3NlZ21lbnRzIC0gMV07XFxuQEAgLTI2MSw2ICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxcbiBcXG4gXFx0YWRkcnNbMF0gPSBpcGgtXFx1MDAzZWRhZGRyO1xcbiBcXHRpcGgtXFx1MDAzZWRhZGRyID0gZmluYWxfYWRkcjtcXG4rXFxuK1xcdHJldHVybiAwO1xcbiB9XFxuIFxcbiBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXFxuQEAgLTI3Myw2ICsyNzcsNyBAQCBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXFxuIFxcdH0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07XFxuIFxcdGNoYXIgKmVuZCA9IGV4dGhkci5yYXcgKyBsZW47XFxuIFxcdGludCBuZXh0aGRyID0gaXBoLVxcdTAwM2VuZXh0aGRyO1xcbitcXHRpbnQgZXJyO1xcbiBcXG4gXFx0ZXh0aGRyLmlwaCsrO1xcbiBcXG5AQCAtMjkyLDcgKzI5Nyw5IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRjYXNlIE5FWFRIRFJfUk9VVElORzpcXG4tXFx0XFx0XFx0aXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcXG4rXFx0XFx0XFx0ZXJyID0gaXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcXG4rXFx0XFx0XFx0aWYgKGVycilcXG4rXFx0XFx0XFx0XFx0cmV0dXJuIGVycjtcXG4gXFx0XFx0XFx0YnJlYWs7XFxuIFxcbiBcXHRcXHRkZWZhdWx0OlxcbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jIGIvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xcbmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0XFxuLS0tIGEvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xcbisrKyBiL25ldC9pcHY2L3hmcm02X2lucHV0LmNcXG5AQCAtMjQ3LDcgKzI0Nyw3IEBAIGludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcXG4gXFx0XFx0Z290byBkcm9wO1xcbiBcXHR9XFxuIFxcbi1cXHRpZiAoMSArIHNwLVxcdTAwM2VsZW4gPT0gWEZSTV9NQVhfREVQVEgpIHtcXG4rXFx0aWYgKHNwLVxcdTAwM2VsZW4gXFx1MDAzZT0gWEZSTV9NQVhfREVQVEgpIHtcXG4gXFx0XFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOQlVGRkVSRVJST1IpO1xcbiBcXHRcXHRnb3RvIGRyb3A7XFxuIFxcdH1cXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0vZXNwaW50Y3AuYyBiL25ldC94ZnJtL2VzcGludGNwLmNcXG5pbmRleCAzNzRlMWI5NjQ0MzgzLi42NzRhZWRjNWFmNWEyIDEwMDY0NFxcbi0tLSBhL25ldC94ZnJtL2VzcGludGNwLmNcXG4rKysgYi9uZXQveGZybS9lc3BpbnRjcC5jXFxuQEAgLTM3LDYgKzM3LDExIEBAIHN0YXRpYyB2b2lkIGhhbmRsZV9lc3Aoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IHNvY2sgKnNrKVxcbiBcXG4gXFx0cmN1X3JlYWRfbG9jaygpO1xcbiBcXHRza2ItXFx1MDAzZWRldiA9IGRldl9nZXRfYnlfaW5kZXhfcmN1KHNvY2tfbmV0KHNrKSwgc2tiLVxcdTAwM2Vza2JfaWlmKTtcXG4rXFx0aWYgKCFza2ItXFx1MDAzZWRldikge1xcbitcXHRcXHRYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7XFxuK1xcdFxcdGtmcmVlX3NrYihza2IpO1xcbitcXHRcXHRnb3RvIG91dDtcXG4rXFx0fVxcbiBcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuICNpZiBJU19FTkFCTEVEKENPTkZJR19JUFY2KVxcbiBcXHRpZiAoc2stXFx1MDAzZXNrX2ZhbWlseSA9PSBBRl9JTkVUNilcXG5AQCAtNDUsNiArNTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG4gI2VuZGlmXFxuIFxcdFxcdHhmcm00X3Jjdl9lbmNhcChza2IsIElQUFJPVE9fRVNQLCAwLCBUQ1BfRU5DQVBfRVNQSU5UQ1ApO1xcbiBcXHRsb2NhbF9iaF9lbmFibGUoKTtcXG4rb3V0OlxcbiBcXHRyY3VfcmVhZF91bmxvY2soKTtcXG4gfVxcbiBcXG5AQCAtNTE1LDcgKzUyMSw4IEBAIHN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxcbiBcXHRzdHJwX3N0b3AoXFx1MDAyNmN0eC1cXHUwMDNlc3RycCk7XFxuIFxcbiBcXHRzay1cXHUwMDNlc2tfcHJvdCA9IFxcdTAwMjZ0Y3BfcHJvdDtcXG4tXFx0YmFycmllcigpO1xcbitcXG4rXFx0c3luY2hyb25pemVfcmN1KCk7XFxuIFxcbiBcXHRkaXNhYmxlX3dvcmtfc3luYyhcXHUwMDI2Y3R4LVxcdTAwM2V3b3JrKTtcXG4gXFx0c3RycF9kb25lKFxcdTAwMjZjdHgtXFx1MDAzZXN0cnApO1xcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuaW5kZXggZWIxYjZmNjc3MzllMS4uNWNkNmQ0MzE2NGRiYyAxMDA2NDRcXG4tLS0gYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXFxuQEAgLTE1NSwyNSArMTU1LDUwIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXFxuIFxcdH1cXG4gfVxcbiBcXG4rZW51bSB7XFxuK1xcdE5BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRSA9IDE2LFxcbitcXHROQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwgPSAxLFxcbit9O1xcbitcXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xcbitcXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqYmF0Y2hbTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFXTtcXG4rXFx0dW5zaWduZWQgaW50IG5yO1xcbiBcXHR0aW1lNjRfdCBuZXh0X3J1bjtcXG4gXFx0dGltZTY0X3Qgbm93O1xcbiB9O1xcbiBcXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4rc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxuIHtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcXG4rXFxuK1xcdGlmICghUkVBRF9PTkNFKHgtXFx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWwpKVxcbitcXHRcXHRyZXR1cm4gMDtcXG4rXFxuK1xcdGlmIChjdHgtXFx1MDAzZW5yID09IEFSUkFZX1NJWkUoY3R4LVxcdTAwM2ViYXRjaCkpXFxuK1xcdFxcdHJldHVybiBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEw7XFxuK1xcbitcXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XFxuK1xcdGN0eC1cXHUwMDNlYmF0Y2hbY3R4LVxcdTAwM2VucisrXSA9IHg7XFxuK1xcdHJldHVybiAwO1xcbit9XFxuK1xcbitzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbitcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxcbit7XFxuIFxcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmUga2E7XFxuLVxcdHRpbWU2NF90IG5leHRfcnVuO1xcbitcXHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XFxuIFxcdHUzMiBpbnRlcnZhbDtcXG4gXFx0aW50IGRlbHRhO1xcbiBcXG4rXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZ4LVxcdTAwM2Vsb2NrKTtcXG4rXFxuK1xcdGlmICh4LVxcdTAwM2VrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpXFxuK1xcdFxcdGdvdG8gb3V0O1xcbitcXG4gXFx0aW50ZXJ2YWwgPSB4LVxcdTAwM2VuYXRfa2VlcGFsaXZlX2ludGVydmFsO1xcbiBcXHRpZiAoIWludGVydmFsKVxcbi1cXHRcXHRyZXR1cm4gMDtcXG4tXFxuLVxcdHNwaW5fbG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuK1xcdFxcdGdvdG8gb3V0O1xcbiBcXG4gXFx0ZGVsdGEgPSAoaW50KShjdHgtXFx1MDAzZW5vdyAtIHgtXFx1MDAzZWxhc3R1c2VkKTtcXG4gXFx0aWYgKGRlbHRhIFxcdTAwM2MgaW50ZXJ2YWwpIHtcXG5AQCAtMTg3LDE0ICsyMTIsMTQgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcXG4gXFx0XFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xcbiBcXHR9XFxuIFxcbi1cXHRzcGluX3VubG9jayhcXHUwMDI2eC1cXHUwMDNlbG9jayk7XFxuK291dDpcXG4rXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNngtXFx1MDAzZWxvY2spO1xcbiBcXG4gXFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxcbiBcXHRcXHRuYXRfa2VlcGFsaXZlX3NlbmQoXFx1MDAyNmthKTtcXG4gXFxuLVxcdGlmICghY3R4LVxcdTAwM2VuZXh0X3J1biB8fCBuZXh0X3J1biBcXHUwMDNjIGN0eC1cXHUwMDNlbmV4dF9ydW4pXFxuK1xcdGlmIChuZXh0X3J1biBcXHUwMDI2XFx1MDAyNiAoIWN0eC1cXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXFx1MDAzYyBjdHgtXFx1MDAzZW5leHRfcnVuKSlcXG4gXFx0XFx0Y3R4LVxcdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xcbi1cXHRyZXR1cm4gMDtcXG4gfVxcbiBcXG4gc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5AQCAtMjAyLDEzICsyMjcsMjMgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG4gXFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbiBcXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuIFxcdHN0cnVjdCBuZXQgKm5ldDtcXG4rXFx0aW50IGVyciwgaTtcXG4gXFxuIFxcdGN0eC5uZXh0X3J1biA9IDA7XFxuIFxcdGN0eC5ub3cgPSBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7XFxuIFxcbiBcXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XFxuIFxcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFxcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XFxuLVxcdHhmcm1fc3RhdGVfd2FsayhuZXQsIFxcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcXHUwMDI2Y3R4KTtcXG4rXFx0ZG8ge1xcbitcXHRcXHRjdHgubnIgPSAwO1xcbitcXHRcXHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFxcdTAwMjZjdHgpO1xcbitcXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxuK1xcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjdHgubnI7IGkrKykge1xcbitcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgXFx1MDAyNmN0eCk7XFxuK1xcdFxcdFxcdHhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7XFxuK1xcdFxcdH1cXG4rXFx0XFx0bG9jYWxfYmhfZW5hYmxlKCk7XFxuK1xcdH0gd2hpbGUgKGVyciA9PSBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwpO1xcbiBcXHR4ZnJtX3N0YXRlX3dhbGtfZG9uZShcXHUwMDI2d2FsaywgbmV0KTtcXG4gXFx0aWYgKGN0eC5uZXh0X3J1bilcXG4gXFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX291dHB1dC5jIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xcbmluZGV4IGNjMzVjMmZjYmJlMDkuLmUzMDViYTMyZTM1NmIgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xcbisrKyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmNcXG5AQCAtNjM2LDEwICs2MzYsOCBAQCBzdGF0aWMgaW50IHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG4gXFx0bmZfcmVzZXRfY3Qoc2tiKTtcXG4gXFxuIFxcdGVyciA9IHNrYl9kc3Qoc2tiKS1cXHUwMDNlb3BzLVxcdTAwM2Vsb2NhbF9vdXQobmV0LCBzaywgc2tiKTtcXG4tXFx0aWYgKHVubGlrZWx5KGVyciAhPSAxKSkge1xcbi1cXHRcXHRrZnJlZV9za2Ioc2tiKTtcXG4rXFx0aWYgKHVubGlrZWx5KGVyciAhPSAxKSlcXG4gXFx0XFx0cmV0dXJuIGVycjtcXG4tXFx0fVxcbiBcXG4gXFx0LyogSW4gdHJhbnNwb3J0IG1vZGUsIG5ldHdvcmsgZGVzdGluYXRpb24gaXNcXG4gXFx0ICogZGlyZWN0bHkgcmVhY2hhYmxlLCB3aGlsZSBpbiB0dW5uZWwgbW9kZSxcXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xcbmluZGV4IGQ2ZGI2MzMwNGJhNmIuLjYyNjZhOTJjZjMwMjAgMTAwNjQ0XFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcXG4rKysgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xcbkBAIC05NDAsNyArOTQwLDcgQEAgc3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuIFxcdGlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoXFx1MDAyNngtXFx1MDAzZWFhbGcsIFxcdTAwMjZ4LVxcdTAwM2Vwcm9wcy5hYWxnbyxcXG4gXFx0XFx0XFx0XFx0ICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF9UUlVOQ10sIGV4dGFjaykpKVxcbiBcXHRcXHRnb3RvIGVycm9yO1xcbi1cXHRpZiAoIXgtXFx1MDAzZXByb3BzLmFhbGdvKSB7XFxuK1xcdGlmICgheC1cXHUwMDNlYWFsZykge1xcbiBcXHRcXHRpZiAoKGVyciA9IGF0dGFjaF9hdXRoKFxcdTAwMjZ4LVxcdTAwM2VhYWxnLCBcXHUwMDI2eC1cXHUwMDNlcHJvcHMuYWFsZ28sXFxuIFxcdFxcdFxcdFxcdCAgICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF0sIGV4dGFjaykpKVxcbiBcXHRcXHRcXHRnb3RvIGVycm9yO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoxMC4zMjkwMTAwNzRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTgyNDE5Njc5NjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVDZfQUhcIixcbiAgICBcIklORVRfRVNQSU5UQ1BcIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoNl9pbnB1dFwiLFxuICAgIFwiYWg2X291dHB1dFwiLFxuICAgIFwieGZybTZfaW5wdXRfYWRkclwiLFxuICAgIFwiZXNwaW50Y3BfcmN2XCIsXG4gICAgXCJlc3BpbnRjcF9jbG9zZVwiLFxuICAgIFwieGZybV9vdXRwdXRcIixcbiAgICBcInhmcm1fYWRkX3NhXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29udGFpbnMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUHY2IGFuZCBJUHNlYy9YRlJNIG5ldHdvcmtpbmcgc3RhY2suIEl0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IsIGZpeGVzIGEgZGVwdGggY2hlY2sgaW4gYHhmcm02X2lucHV0X2FkZHJgLCBhZGRzIGEgTlVMTCBwb2ludGVyIGNoZWNrIGZvciBgc2tiLVxcdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBhNDA2M2UyY2MwYzE5MGU1MGExYzlkNTMzY2NkOTkwMThhOWM3NmVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFR1ZSBBdWcgMTggMTA6MzQ6MDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvaXB2Ni9haDYuYyBiL25ldC9pcHY2L2FoNi5jXG5pbmRleCA3NmY3YTJkZTkxMDhlLi5jOTZmN2UwZDBhNDgxIDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYvYWg2LmNcbisrKyBiL25ldC9pcHY2L2FoNi5jXG5AQCAtMjMyLDI2ICsyMzIsMjggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfZGVzdG9wdChzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9vcHRfaGRyICpkZXNcbiAgKlx0UmVhcnJhbmdlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIGluIEBpcGggYW5kIHRoZSBhZGRyZXNzZXMgaW4gQHJ0aGRyXG4gICpcdHNvIHRoYXQgdGhleSBhcHBlYXIgaW4gdGhlIG9yZGVyIHRoZXkgd2lsbCBhdCB0aGUgZmluYWwgZGVzdGluYXRpb24uXG4gICpcdFNlZSBBcHBlbmRpeCBBMiBvZiBSRkMgMjQwMiBmb3IgZGV0YWlscy5cbisgKlxuKyAqIFJldHVybjogMCBvbiBzdWNjZXNzLCAtRUlOVkFMIGlmIHNlZ21lbnRzX2xlZnQgZXhjZWVkcyB0aGUgbnVtYmVyIG9mXG4rICogYWRkcmVzc2VzIGRlc2NyaWJlZCBieSBoZHJsZW4uXG4gICovXG4tc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbitzdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXG4ge1xuLVx0aW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xuK1x0dW5zaWduZWQgaW50IHNlZ21lbnRzLCBzZWdtZW50c19sZWZ0O1xuIFx0c3RydWN0IGluNl9hZGRyICphZGRycztcbiBcdHN0cnVjdCBpbjZfYWRkciBmaW5hbF9hZGRyO1xuIFxuIFx0c2VnbWVudHNfbGVmdCA9IHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQ7XG4gXHRpZiAoc2VnbWVudHNfbGVmdCA9PSAwKVxuLVx0XHRyZXR1cm47XG4tXHRydGhkci1cdTAwM2VzZWdtZW50c19sZWZ0ID0gMDtcbitcdFx0cmV0dXJuIDA7XG4gXG4tXHQvKiBUaGUgdmFsdWUgb2YgcnRoZHItXHUwMDNlaGRybGVuIGhhcyBiZWVuIHZlcmlmaWVkIGVpdGhlciBieSB0aGUgc3lzdGVtXG4tXHQgKiBjYWxsIGlmIGl0IGlzIGxvY2FsbHkgZ2VuZXJhdGVkLCBvciBieSBpcHY2X3J0aGRyX3JjdigpIGZvciBpbmNvbWluZ1xuLVx0ICogcGFja2V0cy4gIFNvIHdlIGNhbiBhc3N1bWUgdGhhdCBpdCBpcyBldmVuIGFuZCB0aGF0IHNlZ21lbnRzIGlzXG4tXHQgKiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gc2VnbWVudHNfbGVmdC5cbi1cdCAqXG4tXHQgKiBGb3IgdGhlIHNhbWUgcmVhc29uIHdlIGNhbiBhc3N1bWUgdGhhdCB0aGlzIG9wdGlvbiBpcyBvZiB0eXBlIDAuXG4rXHQvKiBSYXcgbG9jYWxseSBnZW5lcmF0ZWQgcGFja2V0cyBjYW4gcmVhY2ggQUg2IHdpdGhvdXQgdGhlIGludmFyaWFudFxuK1x0ICogcmVxdWlyZWQgYnkgdGhlIHJ0MC1zdHlsZSBhZGRyZXNzIHJlYXJyYW5nZW1lbnQgYmVsb3cuXG4gXHQgKi9cbiBcdHNlZ21lbnRzID0gcnRoZHItXHUwMDNlaGRybGVuIFx1MDAzZVx1MDAzZSAxO1xuK1x0aWYgKHNlZ21lbnRzX2xlZnQgXHUwMDNlIHNlZ21lbnRzKVxuK1x0XHRyZXR1cm4gLUVJTlZBTDtcbitcbitcdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuIFxuIFx0YWRkcnMgPSAoKHN0cnVjdCBydDBfaGRyICopcnRoZHIpLVx1MDAzZWFkZHI7XG4gXHRmaW5hbF9hZGRyID0gYWRkcnNbc2VnbWVudHMgLSAxXTtcbkBAIC0yNjEsNiArMjYzLDggQEAgc3RhdGljIHZvaWQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiBcbiBcdGFkZHJzWzBdID0gaXBoLVx1MDAzZWRhZGRyO1xuIFx0aXBoLVx1MDAzZWRhZGRyID0gZmluYWxfYWRkcjtcbitcbitcdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgaW50IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHN0cnVjdCBpcHY2aGRyICppcGgsIGludCBsZW4sIGludCBkaXIpXG5AQCAtMjczLDYgKzI3Nyw3IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbiBcdH0gZXh0aGRyID0geyAuaXBoID0gaXBoIH07XG4gXHRjaGFyICplbmQgPSBleHRoZHIucmF3ICsgbGVuO1xuIFx0aW50IG5leHRoZHIgPSBpcGgtXHUwMDNlbmV4dGhkcjtcbitcdGludCBlcnI7XG4gXG4gXHRleHRoZHIuaXBoKys7XG4gXG5AQCAtMjkyLDcgKzI5Nyw5IEBAIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbiBcdFx0XHRicmVhaztcbiBcbiBcdFx0Y2FzZSBORVhUSERSX1JPVVRJTkc6XG4tXHRcdFx0aXB2Nl9yZWFycmFuZ2VfcnRoZHIoaXBoLCBleHRoZHIucnRoKTtcbitcdFx0XHRlcnIgPSBpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xuK1x0XHRcdGlmIChlcnIpXG4rXHRcdFx0XHRyZXR1cm4gZXJyO1xuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRkZWZhdWx0OlxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L3hmcm02X2lucHV0LmMgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG5pbmRleCA4OWQwNDQzYjUzMDczLi4wN2VkZWYyNTg5ODQ0IDEwMDY0NFxuLS0tIGEvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuKysrIGIvbmV0L2lwdjYveGZybTZfaW5wdXQuY1xuQEAgLTI0Nyw3ICsyNDcsNyBAQCBpbnQgeGZybTZfaW5wdXRfYWRkcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCB4ZnJtX2FkZHJlc3NfdCAqZGFkZHIsXG4gXHRcdGdvdG8gZHJvcDtcbiBcdH1cbiBcbi1cdGlmICgxICsgc3AtXHUwMDNlbGVuID09IFhGUk1fTUFYX0RFUFRIKSB7XG4rXHRpZiAoc3AtXHUwMDNlbGVuIFx1MDAzZT0gWEZSTV9NQVhfREVQVEgpIHtcbiBcdFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOQlVGRkVSRVJST1IpO1xuIFx0XHRnb3RvIGRyb3A7XG4gXHR9XG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0vZXNwaW50Y3AuYyBiL25ldC94ZnJtL2VzcGludGNwLmNcbmluZGV4IDM3NGUxYjk2NDQzODMuLjY3NGFlZGM1YWY1YTIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS9lc3BpbnRjcC5jXG4rKysgYi9uZXQveGZybS9lc3BpbnRjcC5jXG5AQCAtMzcsNiArMzcsMTEgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2VzcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2spXG4gXG4gXHRyY3VfcmVhZF9sb2NrKCk7XG4gXHRza2ItXHUwMDNlZGV2ID0gZGV2X2dldF9ieV9pbmRleF9yY3Uoc29ja19uZXQoc2spLCBza2ItXHUwMDNlc2tiX2lpZik7XG4rXHRpZiAoIXNrYi1cdTAwM2VkZXYpIHtcbitcdFx0WEZSTV9JTkNfU1RBVFMoc29ja19uZXQoc2spLCBMSU5VWF9NSUJfWEZSTUlORVJST1IpO1xuK1x0XHRrZnJlZV9za2Ioc2tiKTtcbitcdFx0Z290byBvdXQ7XG4rXHR9XG4gXHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4gI2lmIElTX0VOQUJMRUQoQ09ORklHX0lQVjYpXG4gXHRpZiAoc2stXHUwMDNlc2tfZmFtaWx5ID09IEFGX0lORVQ2KVxuQEAgLTQ1LDYgKzUwLDcgQEAgc3RhdGljIHZvaWQgaGFuZGxlX2VzcChzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgc29jayAqc2spXG4gI2VuZGlmXG4gXHRcdHhmcm00X3Jjdl9lbmNhcChza2IsIElQUFJPVE9fRVNQLCAwLCBUQ1BfRU5DQVBfRVNQSU5UQ1ApO1xuIFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4rb3V0OlxuIFx0cmN1X3JlYWRfdW5sb2NrKCk7XG4gfVxuIFxuQEAgLTUxNSw3ICs1MjEsOCBAQCBzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcbiBcdHN0cnBfc3RvcChcdTAwMjZjdHgtXHUwMDNlc3RycCk7XG4gXG4gXHRzay1cdTAwM2Vza19wcm90ID0gXHUwMDI2dGNwX3Byb3Q7XG4tXHRiYXJyaWVyKCk7XG4rXG4rXHRzeW5jaHJvbml6ZV9yY3UoKTtcbiBcbiBcdGRpc2FibGVfd29ya19zeW5jKFx1MDAyNmN0eC1cdTAwM2V3b3JrKTtcbiBcdHN0cnBfZG9uZShcdTAwMjZjdHgtXHUwMDNlc3RycCk7XG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuaW5kZXggZWIxYjZmNjc3MzllMS4uNWNkNmQ0MzE2NGRiYyAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG4rKysgYi9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY1xuQEAgLTE1NSwyNSArMTU1LDUwIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfc2VuZChzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSAqa2EpXG4gXHR9XG4gfVxuIFxuK2VudW0ge1xuK1x0TkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFID0gMTYsXG4rXHROQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwgPSAxLFxuK307XG4rXG4gc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHgge1xuK1x0c3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07XG4rXHR1bnNpZ25lZCBpbnQgbnI7XG4gXHR0aW1lNjRfdCBuZXh0X3J1bjtcbiBcdHRpbWU2NF90IG5vdztcbiB9O1xuIFxuLXN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4rc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4ge1xuIFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eCA9IHB0cjtcbitcbitcdGlmICghUkVBRF9PTkNFKHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbCkpXG4rXHRcdHJldHVybiAwO1xuK1xuK1x0aWYgKGN0eC1cdTAwM2VuciA9PSBBUlJBWV9TSVpFKGN0eC1cdTAwM2ViYXRjaCkpXG4rXHRcdHJldHVybiBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEw7XG4rXG4rXHR4ZnJtX3N0YXRlX2hvbGQoeCk7XG4rXHRjdHgtXHUwMDNlYmF0Y2hbY3R4LVx1MDAzZW5yKytdID0geDtcbitcdHJldHVybiAwO1xuK31cbitcbitzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxuK1x0XHRcdFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcbit7XG4gXHRib29sIHNlbmRfa2VlcGFsaXZlID0gZmFsc2U7XG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZSBrYTtcbi1cdHRpbWU2NF90IG5leHRfcnVuO1xuK1x0dGltZTY0X3QgbmV4dF9ydW4gPSAwO1xuIFx0dTMyIGludGVydmFsO1xuIFx0aW50IGRlbHRhO1xuIFxuK1x0c3Bpbl9sb2NrX2JoKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rXG4rXHRpZiAoeC1cdTAwM2VrbS5zdGF0ZSA9PSBYRlJNX1NUQVRFX0RFQUQpXG4rXHRcdGdvdG8gb3V0O1xuK1xuIFx0aW50ZXJ2YWwgPSB4LVx1MDAzZW5hdF9rZWVwYWxpdmVfaW50ZXJ2YWw7XG4gXHRpZiAoIWludGVydmFsKVxuLVx0XHRyZXR1cm4gMDtcbi1cbi1cdHNwaW5fbG9jayhcdTAwMjZ4LVx1MDAzZWxvY2spO1xuK1x0XHRnb3RvIG91dDtcbiBcbiBcdGRlbHRhID0gKGludCkoY3R4LVx1MDAzZW5vdyAtIHgtXHUwMDNlbGFzdHVzZWQpO1xuIFx0aWYgKGRlbHRhIFx1MDAzYyBpbnRlcnZhbCkge1xuQEAgLTE4NywxNCArMjEyLDE0IEBAIHN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXG4gXHRcdHNlbmRfa2VlcGFsaXZlID0gdHJ1ZTtcbiBcdH1cbiBcbi1cdHNwaW5fdW5sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rb3V0OlxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbiBcbiBcdGlmIChzZW5kX2tlZXBhbGl2ZSlcbiBcdFx0bmF0X2tlZXBhbGl2ZV9zZW5kKFx1MDAyNmthKTtcbiBcbi1cdGlmICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pXG4rXHRpZiAobmV4dF9ydW4gXHUwMDI2XHUwMDI2ICghY3R4LVx1MDAzZW5leHRfcnVuIHx8IG5leHRfcnVuIFx1MDAzYyBjdHgtXHUwMDNlbmV4dF9ydW4pKVxuIFx0XHRjdHgtXHUwMDNlbmV4dF9ydW4gPSBuZXh0X3J1bjtcbi1cdHJldHVybiAwO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuQEAgLTIwMiwxMyArMjI3LDIzIEBAIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCBjdHg7XG4gXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XG4gXHRzdHJ1Y3QgbmV0ICpuZXQ7XG4rXHRpbnQgZXJyLCBpO1xuIFxuIFx0Y3R4Lm5leHRfcnVuID0gMDtcbiBcdGN0eC5ub3cgPSBrdGltZV9nZXRfcmVhbF9zZWNvbmRzKCk7XG4gXG4gXHRuZXQgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IG5ldCwgeGZybS5uYXRfa2VlcGFsaXZlX3dvcmsud29yayk7XG4gXHR4ZnJtX3N0YXRlX3dhbGtfaW5pdChcdTAwMjZ3YWxrLCBJUFBST1RPX0VTUCwgTlVMTCk7XG4tXHR4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlLCBcdTAwMjZjdHgpO1xuK1x0ZG8ge1xuK1x0XHRjdHgubnIgPSAwO1xuK1x0XHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcdTAwMjZ3YWxrLCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdCwgXHUwMDI2Y3R4KTtcbitcdFx0bG9jYWxfYmhfZGlzYWJsZSgpO1xuK1x0XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBjdHgubnI7IGkrKykge1xuK1x0XHRcdG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoY3R4LmJhdGNoW2ldLCBcdTAwMjZjdHgpO1xuK1x0XHRcdHhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7XG4rXHRcdH1cbitcdFx0bG9jYWxfYmhfZW5hYmxlKCk7XG4rXHR9IHdoaWxlIChlcnIgPT0gTkFUX0tFRVBBTElWRV9CQVRDSF9GVUxMKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19kb25lKFx1MDAyNndhbGssIG5ldCk7XG4gXHRpZiAoY3R4Lm5leHRfcnVuKVxuIFx0XHRzY2hlZHVsZV9kZWxheWVkX3dvcmsoXHUwMDI2bmV0LVx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxuZGlmZiAtLWdpdCBhL25ldC94ZnJtL3hmcm1fb3V0cHV0LmMgYi9uZXQveGZybS94ZnJtX291dHB1dC5jXG5pbmRleCBjYzM1YzJmY2JiZTA5Li5lMzA1YmEzMmUzNTZiIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xuKysrIGIvbmV0L3hmcm0veGZybV9vdXRwdXQuY1xuQEAgLTYzNiwxMCArNjM2LDggQEAgc3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXG4gXHRuZl9yZXNldF9jdChza2IpO1xuIFxuIFx0ZXJyID0gc2tiX2RzdChza2IpLVx1MDAzZW9wcy1cdTAwM2Vsb2NhbF9vdXQobmV0LCBzaywgc2tiKTtcbi1cdGlmICh1bmxpa2VseShlcnIgIT0gMSkpIHtcbi1cdFx0a2ZyZWVfc2tiKHNrYik7XG4rXHRpZiAodW5saWtlbHkoZXJyICE9IDEpKVxuIFx0XHRyZXR1cm4gZXJyO1xuLVx0fVxuIFxuIFx0LyogSW4gdHJhbnNwb3J0IG1vZGUsIG5ldHdvcmsgZGVzdGluYXRpb24gaXNcbiBcdCAqIGRpcmVjdGx5IHJlYWNoYWJsZSwgd2hpbGUgaW4gdHVubmVsIG1vZGUsXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV91c2VyLmMgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuaW5kZXggZDZkYjYzMzA0YmE2Yi4uNjI2NmE5MmNmMzAyMCAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL3hmcm1fdXNlci5jXG4rKysgYi9uZXQveGZybS94ZnJtX3VzZXIuY1xuQEAgLTk0MCw3ICs5NDAsNyBAQCBzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcbiBcdGlmICgoZXJyID0gYXR0YWNoX2F1dGhfdHJ1bmMoXHUwMDI2eC1cdTAwM2VhYWxnLCBcdTAwMjZ4LVx1MDAzZXByb3BzLmFhbGdvLFxuIFx0XHRcdFx0ICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF9UUlVOQ10sIGV4dGFjaykpKVxuIFx0XHRnb3RvIGVycm9yO1xuLVx0aWYgKCF4LVx1MDAzZXByb3BzLmFhbGdvKSB7XG4rXHRpZiAoIXgtXHUwMDNlYWFsZykge1xuIFx0XHRpZiAoKGVyciA9IGF0dGFjaF9hdXRoKFx1MDAyNngtXHUwMDNlYWFsZywgXHUwMDI2eC1cdTAwM2Vwcm9wcy5hYWxnbyxcbiBcdFx0XHRcdCAgICAgICBhdHRyc1tYRlJNQV9BTEdfQVVUSF0sIGV4dGFjaykpKVxuIFx0XHRcdGdvdG8gZXJyb3I7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoxMC4zMjkwMTE5ODRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDYyNzY0NDMzNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQYXRjaCBTZXJpZXMgaW4gdGhlIE5ldHdvcmsgU3RhY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBicmVhayBkb3duIHRoaXMgcGF0Y2ggc2VyaWVzLiBJdCBsb29rcyBsaWtlIHdlJ3ZlIGdvdCBhIHNldCBvZiBtb2RpZmljYXRpb25zIHRvdWNoaW5nIHNldmVyYWwga2V5IGZpbGVzIHdpdGhpbiBgbmV0L2lwdjYvYCBhbmQgYG5ldC94ZnJtL2AsIHdoaWNoIGltbWVkaWF0ZWx5IHRlbGxzIG1lIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHJldmlldyB3aXRoIGEgZnV6emluZyBzdHJhdGVneSBpbiBtaW5kLiBUaGUgYWZmZWN0ZWQgZmlsZXMgYXJlOiBgYWg2LmNgLCBgeGZybTZfaW5wdXQuY2AsIGBlc3BpbnRjcC5jYCwgYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgYHhmcm1fb3V0cHV0LmNgLCBhbmQgYHhmcm1fdXNlci5jYC5cblxuTXkgaW5pdGlhbCByZWFkIHRlbGxzIG1lIHRoYXQgdGhlIGNoYW5nZXMgYXJlIGxhcmdlbHkgZnVuY3Rpb25hbCwgd2hpY2ggbWVhbnMgd2UgY2FuIGxpa2VseSB0cmlnZ2VyIGEgcmFuZ2Ugb2YgbmV3IGV4ZWN1dGlvbiBwYXRocy5cblxuSGVyZSdzIHRoZSBnaXN0IG9mIHdoYXQncyBoYXBwZW5pbmc6XG5cbjEuICAqKmBuZXQvaXB2Ni9haDYuY2A6KiogVGhlIHJldHVybiB0eXBlIG9mIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgaGFzIGJlZW4gY2hhbmdlZCB0byBgaW50YCwgYW5kIHRoZXJlJ3MgYSBuZXcgY2hlY2sgZm9yIGEgcG90ZW50aWFsIGVycm9yIGNvbmRpdGlvbiB3aXRoIGAtRUlOVkFMYCwgd2hpY2ggaXMgdGhlbiBwcm9wYWdhdGVkIGJ5IGBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9uc2AuIFRoaXMgZXJyb3IgaGFuZGxpbmcgY2hhbmdlIHNob3VsZCBiZSBpbnZlc3RpZ2F0ZWQ7IHNwZWNpZmljYWxseSwgaWYgdGhlIGVycm9yIGNvbmRpdGlvbnMgYXJlIHJlYXNvbmFibGUsIGdpdmVuIHRoYXQgaXQgYXBwZWFycyB0aGUgY2FsbGVyIGRpZCBub3QgaGFuZGxlIGEgZmFpbHVyZSBjYXNlLlxuXG4yLiAgKipgbmV0L2lwdjYveGZybTZfaW5wdXQuY2A6KiogV2UndmUgZ290IGEgc3VidGxlIGNoYW5nZSBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIHN3aXRjaGluZyBhbiBlcXVhbGl0eSBjaGVjayB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbCBjaGVjay4gVGhpcyBjb3VsZCBiZSBhIGJvdW5kYXJ5IGNvbmRpdGlvbiBmaXggb3IgYSBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0eSBpZiBub3QgaGFuZGxlZCByaWdodC5cblxuMy4gICoqYG5ldC94ZnJtL2VzcGludGNwLmNgOioqIE51bGwgYHNrYi1cdTAwM2VkZXZgIGNoZWNrcyBhZGRlZCB0byBgaGFuZGxlX2VzcGAgdG8gZHJvcCBwYWNrZXRzLCBhbmQgdGhlIHJlcGxhY2VtZW50IG9mIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgIG1ha2VzIG1lIHRoaW5rIHRoaXMgbWlnaHQgYmUgYSBtZW1vcnktc2FmZXR5IGltcHJvdmVtZW50LiBMZXQncyBtYWtlIHN1cmUgdGhpcyBSQ1UgY2hhbmdlIGlzIGNvcnJlY3QuXG5cbjQuICAqKmBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2A6KiogVGhlIGBuYXRfa2VlcGFsaXZlX3dvcmtgIGhhcyBiZWVuIHJld3JpdHRlbiB1c2luZyBhIGJhdGNoaW5nIGFwcHJvYWNoLiBEZWZpbml0ZWx5IGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJ1dCBhbHdheXMgd29ydGggY2hlY2tpbmcgZm9yIHJhY2VzIGluIGJhdGNoaW5nIGltcGxlbWVudGF0aW9ucy5cblxuNS4gICoqYG5ldC94ZnJtL3hmcm1fb3V0cHV0LmNgOioqIFRoZSBjb25kaXRpb25hbCBga2ZyZWVfc2tiYCBjYWxsIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIHdoaWNoIG1lYW5zIHRoZSBmdW5jdGlvbiBpcyBub3cgYXNzdW1pbmcgdGhhdCBhIGZhaWxlZCBgbG9jYWxfb3V0YCBjYWxsIHdpbGwgZnJlZSB0aGUgU0tCLiBUaGlzIGlzIGltcG9ydGFudCB0byB2ZXJpZnkgYmVjYXVzZSBkb3VibGUtZnJlZXMgYXJlIGNvbW1vbiBpbiB0aGVzZSBjb250ZXh0cy5cblxuNi4gICoqYG5ldC94ZnJtL3hmcm1fdXNlci5jYDoqKiBBIHNtYWxsIGNoYW5nZSBpbiBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLCBzd2l0Y2hpbmcgYSBudWxsIGNoZWNrIGZvciBgeC1cdTAwM2Vwcm9wcy5hYWxnb2AgdG8gYHgtXHUwMDNlYWFsZ2AuIFRoaXMgYXBwZWFycyB0byBiZSBhIGJ1ZyBmaXguXG5cblRoaXMgYWxsIHBvaW50cyB0byBjb3JlIG5ldHdvcmtpbmcgZnVuY3Rpb25hbGl0eSwgc28gdGhpcyBkZWZpbml0ZWx5IG1lcml0cyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24uIEdpdmVuIHRoZSBzY29wZSBvZiB0aGVzZSBjaGFuZ2VzLCBJJ2xsIGlkZW50aWZ5IHNvbWUgZm9jdXMgc3ltYm9scyBhbmQgdGhlaXIgY29udGV4dC4gV2UgY2FuIHVzZSB0aGVzZSBzeW1ib2xzIHRvIGd1aWRlIHRoZSBmdXp6ZXIuXG5cblRoZSBrZXkgZnVuY3Rpb25zIHRoYXQgSSdsbCBsb29rIGF0IGluIGRldGFpbDpcblxuKiAgIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAgKHNpbmNlIHRoZSBmdW5jdGlvbiBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGlzIGNhbGxlZCBieSB0aGVzZSBmdW5jdGlvbnMuKVxuKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYFxuKiAgIGBlc3BpbnRjcF9jbG9zZWBcbiogICBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAgKG9yIG1heWJlIGB4ZnJtX291dHB1dGA/KVxuKiAgIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGBcblxuTXkgbmV4dCBzdGVwIHdpbGwgYmUgdG8gc2VhcmNoIGZvciB0aGVzZSBmdW5jdGlvbnMgdG8gZGV0ZXJtaW5lIHRoZWlyIHZpc2liaWxpdHksIGNhbGxzaXRlcywgYW5kIGNvbnRleHRzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ5LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzE5LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6MjAuOTU2NjYyMThaIiwiU2VxIjo0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxNTE0ODgyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L2lwdjYvYWg2LmM9MjM5PXN0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTI2OS1cXG5uZXQvaXB2Ni9haDYuYzoyNzA6c3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxcbm5ldC9pcHY2L2FoNi5jLTI3MS17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjI0LjE3MTgxNjA1M1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI2NDQyNjMxMzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSBjb25zaWRlcmluZyB0aGlzIG15c2VsZjpcblxuKipJbnZlc3RpZ2F0aW5nIElQdjYgTXV0YWJsZSBPcHRpb25zIENsZWFyaW5nKipcblxuT2theSwgc28gSSBuZWVkIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgd2hlcmUgYGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zYCBpcyBiZWluZyB1c2VkLiBJIHN1c3BlY3QgdGhlcmUgbWlnaHQgYmUgc29tZSBzdWJ0bGUgYnVncyByZWxhdGVkIHRvIGhvdyBtdXRhYmxlIG9wdGlvbnMgYXJlIGhhbmRsZWQuIEEgdGhvcm91Z2ggcmV2aWV3IG9mIHRoZSBjYWxsIHNpdGVzIGlzIGRlZmluaXRlbHkgd2FycmFudGVkLiBUaW1lIHRvIGdldCBpbnRvIGBhaDYuY2AgYW5kIGZpZ3VyZSBvdXQgd2hvJ3MgY2FsbGluZyB0aGF0IGZ1bmN0aW9uLiBMZXQncyBzZWUgd2hhdCB3ZSBmaW5kLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MTksIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoyNi44MTYwODMxNVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNDcwNjU0MDYzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2FoNi5jPTIzOT1zdGF0aWMgaW50IGlwdjZfcmVhcnJhbmdlX3J0aGRyKHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X3J0X2hkciAqcnRoZHIpXFxuLS1cXG5uZXQvaXB2Ni9haDYuYy0yNjktXFxubmV0L2lwdjYvYWg2LmM6MjcwOnN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcXG5uZXQvaXB2Ni9haDYuYy0yNzEte1xcbi0tXFxubmV0L2lwdjYvYWg2LmM9MzUwPXN0YXRpYyBpbnQgYWg2X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTQxNi1cXHRpZiAoZXh0bGVuKSB7XFxubmV0L2lwdjYvYWg2LmM6NDE3OlxcdFxcdGVyciA9IGlwdjZfY2xlYXJfbXV0YWJsZV9vcHRpb25zKHRvcF9pcGgsXFxubmV0L2lwdjYvYWg2LmMtNDE4LVxcdFxcdFxcdFxcdFxcdFxcdCBleHRsZW4gLSBzaXplb2YoKmlwaF9leHQpICtcXG4tLVxcbm5ldC9pcHY2L2FoNi5jPTUxOT1zdGF0aWMgaW50IGFoNl9pbnB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTYxMy1cXG5uZXQvaXB2Ni9haDYuYzo2MTQ6XFx0ZXJyID0gaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoaXA2aCwgaGRyX2xlbiwgWEZSTV9QT0xJQ1lfSU4pO1xcbm5ldC9pcHY2L2FoNi5jLTYxNS1cXHRpZiAoZXJyKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDoyOS4yODY3NDMwODRaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjAyMjcyNzgzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEVudHJ5IFBvaW50cyoqXG5cbkFscmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkga2V5aW5nIGluIG9uIGBhaDZfb3V0cHV0YCBhbmQgYGFoNl9pbnB1dGAuIFRob3NlIGFyZSwgd2l0aG91dCBhIGRvdWJ0LCB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludHMgaW50byB0aGlzIHBhcnQgb2YgdGhlIHN5c3RlbS4gVGhleSdyZSB3aGVyZSB0aGUgZGF0YSBmbG93IGJlZ2lucyBhbmQgZW5kcywgbWFraW5nIHRoZW0gdGhlIGxvZ2ljYWwgcGxhY2UgdG8gc3RhcnQuIEdpdmVuIHRoZSBjb250ZXh0LCBJJ20gYWxyZWFkeSBmb3JtdWxhdGluZyBoeXBvdGhlc2VzIGFib3V0IHRoZSBuYXR1cmUgb2YgdGhpcyBkYXRhIGFuZCBwb3RlbnRpYWwgcHJvY2Vzc2luZyB3aXRoaW4gdGhlc2UgZnVuY3Rpb25zLCBidXQgYmVmb3JlIGRpZ2dpbmcgZGVlcGVyLCBJIHdhbnQgdG8gY2xhcmlmeSBzb21lIGFzc3VtcHRpb25zLlxuXG5Ob3csIG15IGF0dGVudGlvbiBoYXMgc2hpZnRlZCB0byBgeGZybTZfaW5wdXRfYWRkcmAuIEkgd2FudCB0byB2ZXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRob3NlIGZ1bmN0aW9ucy4gSSB3YW50IHRvIGNoZWNrIHRvIGNvbmZpcm0gdGhhdCB0aGUgaW5wdXQgYW5kIG91dHB1dCBmdW5jdGlvbnMgYXJlIHNldCB1cCBjb3JyZWN0bHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNDIsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDozMi44ODkwMTg3NTdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEzMzAyMjA4NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgeGZybTZfaW5wdXRfYWRkclwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJpbmNsdWRlL25ldC94ZnJtLmg9MTg0OD1pbnQgeGZybTZfcmN2KHN0cnVjdCBza19idWZmICpza2IpO1xcbmluY2x1ZGUvbmV0L3hmcm0uaDoxODQ5OmludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcXG5pbmNsdWRlL25ldC94ZnJtLmgtMTg1MC1cXHRcXHQgICAgIHhmcm1fYWRkcmVzc190ICpzYWRkciwgdTggcHJvdG8pO1xcbi0tXFxubmV0L2lwdjYveGZybTZfaW5wdXQuYz0yMzU9RVhQT1JUX1NZTUJPTCh4ZnJtNl9yY3YpO1xcbm5ldC9pcHY2L3hmcm02X2lucHV0LmM6MjM2OmludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcXG5uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jLTIzNy1cXHRcXHQgICAgIHhmcm1fYWRkcmVzc190ICpzYWRkciwgdTggcHJvdG8pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjM2LjAyMjA4NjI1M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzODM5NDAzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgaW1tZWRpYXRlIHRob3VnaHQgcHJvY2VzcywgYXMgdGhvdWdoIEkgd2VyZSBjb25zaWRlcmluZyB0aGVzZSBwb2ludHM6XG5cbioqRXhhbWluaW5nIE5ldHdvcmsgU2VjdXJpdHkgSW5mcmFzdHJ1Y3R1cmUqKlxuXG5Pa2F5LCBzbyBgeGZybTZfaW5wdXRfYWRkcmAgaXMgZXhwbGljaXRseSBleHBvcnRlZC4gVGhhdCB0ZWxscyBtZSBpdCdzIGRlc2lnbmVkIHRvIGJlIGFjY2Vzc2VkIGV4dGVybmFsbHksIGxpa2VseSBieSBzb21lIG90aGVyIG1vZHVsZSBvciBmdW5jdGlvbiB3aXRoaW4gdGhlIGtlcm5lbCdzIG5ldHdvcmsgc3RhY2suIE5vdywgSSBuZWVkIHRvIHVuZGVyc3RhbmQgKmhvdyogaXQncyBiZWluZyB1c2VkIGFuZCwgY3JpdGljYWxseSwgaWYgdGhlcmUgYXJlIGFueSBwb3RlbnRpYWwgdnVsbmVyYWJpbGl0aWVzIG9yIGRlcGVuZGVuY2llcyB0aWVkIHRvIGl0LiBUaGUgZXhwb3J0IGl0c2VsZiBpc24ndCBpbmhlcmVudGx5IGEgcHJvYmxlbSwgYnV0IGl0IGRlbWFuZHMgc2NydXRpbnkuXG5cbk15IG5leHQgc3RlcCBpcyB0byBleGFtaW5lIGhvdyB0aGlzIG1pZ2h0IHBsYXkgd2l0aCB0aGUgVENQIGNvbm5lY3Rpb24gY2xvc2luZyBwcm9jZXNzLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCBgZXNwaW50Y3BfY2xvc2VgIHNwZWNpZmljYWxseS4gSXQgc2VlbXMgbGlrZSB0aGUgY29ubmVjdGlvbiBpcyB0cnlpbmcgdG8gY2xvc2Ugc28gbGV0J3Mgc3RhcnQgd2l0aCBjaGVja2luZyB0aGUgY29kZSB0byBlbnN1cmUgYGVzcGludGNwX2Nsb3NlYCBpcyBjb3JyZWN0bHkgbWFuYWdpbmcgdGhlIGFkZHJlc3MuIENvdWxkIHRoZXJlIGJlIHNvbWUgaW50ZXJhY3Rpb24gd2hlcmUgYWRkcmVzcyBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIGB4ZnJtNl9pbnB1dF9hZGRyYCBpcyBtaXNoYW5kbGVkIGR1cmluZyBjb25uZWN0aW9uIHRlcm1pbmF0aW9uPyBJIG5lZWQgdG8gbG9vayBmb3IgYW55IHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG1lbW9yeSBsZWFrcywgb3IgaW1wcm9wZXIgZnJlZXMgaWYgdGhhdCdzIHRoZSByZWxldmFudCBjb2RlIHNlY3Rpb24uIEFueSBpbXByb3BlciB1c2UgdGhlcmUgY291bGQgbGVhZCB0byBleHBsb2l0YWJsZSBmbGF3cy5cblxuXG4iLCJJbnB1dFRva2VucyI6NzgwMSwiT3V0cHV0VG9rZW5zIjoyNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjM5LjQwNjAzMDI1OVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzIxMDg4MTU2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgZXNwaW50Y3BfY2xvc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz01MDE9c3RhdGljIHZvaWQgZXNwaW50Y3BfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cXG5uZXQveGZybS9lc3BpbnRjcC5jOjUxNjpzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNy17XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjQyLjYxNjkyMjg5OVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzcxMjgyODE3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKlRyYWNpbmcgdGhlIENsb3N1cmUgb2YgYGVzcGludGNwX2Nsb3NlYCoqXG5cbk9rYXksIHNvIGBlc3BpbnRjcF9jbG9zZWAgaXMgZGVjbGFyZWQgYXMgc3RhdGljLiBUaGF0IGltbWVkaWF0ZWx5IHRlbGxzIG1lIEkgbmVlZCB0byBiZSBjYXJlZnVsIGFib3V0IGZpbmRpbmcgaXRzIHVzYWdlcy4gQmVjYXVzZSBpdCdzIHN0YXRpYywgaXQncyBub3QgZ29pbmcgdG8gYmUgZGlyZWN0bHkgYWNjZXNzaWJsZSBmcm9tIG91dHNpZGUgaXRzIGNvbXBpbGF0aW9uIHVuaXQuIFRoZXJlZm9yZSwgYSBzaW1wbGUgZ2xvYmFsIHNlYXJjaCBpc24ndCBnb2luZyB0byBjdXQgaXQuIEkgbmVlZCB0byBiZSBwcmVjaXNlLiBJJ20gZ29pbmcgdG8gaGF2ZSB0byBkaXZlIGludG8gdGhlIHNvdXJjZSBjb2RlIHdoZXJlIGl0J3MgZGVmaW5lZCBhbmQgdW5kZXJzdGFuZCB0aGUgc2NvcGUgY29uc3RyYWludHMuIE15IGdvYWwgbm93IGlzIHRvIHRyYWNrIGRvd24gYWxsIHRoZSBwbGFjZXMgd2l0aGluIHRoZSBzY29wZSBvZiB0aGF0IHN0YXRpYyBkZWNsYXJhdGlvbiB3aGVyZSBpdCdzIGFjdHVhbGx5ICpjYWxsZWQqLiBObyBwb2ludCBpbiB3YXN0aW5nIHRpbWUgbG9va2luZyBvdXRzaWRlIG9mIHRoYXQuIExldCdzIGRpZyBpbiBhbmQgc2VlIHdoYXQgd2UgY2FuIGZpbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjgyMDUsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDo0NS4zODgyMDgzNjZaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTMyNTAzNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiZXNwaW50Y3BfY2xvc2VcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz01MDE9c3RhdGljIHZvaWQgZXNwaW50Y3BfcmVsZWFzZShzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNS1cXG5uZXQveGZybS9lc3BpbnRjcC5jOjUxNjpzdGF0aWMgdm9pZCBlc3BpbnRjcF9jbG9zZShzdHJ1Y3Qgc29jayAqc2ssIGxvbmcgdGltZW91dClcXG5uZXQveGZybS9lc3BpbnRjcC5jLTUxNy17XFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jPTU1Mj1zdGF0aWMgdm9pZCBidWlsZF9wcm90b3Moc3RydWN0IHByb3RvICplc3BpbnRjcF9wcm90LFxcbi0tXFxubmV0L3hmcm0vZXNwaW50Y3AuYy01NjAtXFx0ZXNwaW50Y3BfcHJvdC1cXHUwMDNlcmVjdm1zZyA9IGVzcGludGNwX3JlY3Ztc2c7XFxubmV0L3hmcm0vZXNwaW50Y3AuYzo1NjE6XFx0ZXNwaW50Y3BfcHJvdC1cXHUwMDNlY2xvc2UgPSBlc3BpbnRjcF9jbG9zZTtcXG5uZXQveGZybS9lc3BpbnRjcC5jLTU2Mi1cXHRlc3BpbnRjcF9wcm90LVxcdTAwM2VyZWxlYXNlX2NiID0gZXNwaW50Y3BfcmVsZWFzZTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6NDcuNDgxNDYyODk4WiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwMTk2NDI4OTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duOlxuXG4qKlByb3RvY29sIENhbGxiYWNrIENvbnNpZGVyYXRpb24qKlxuXG5BbHJpZ2h0LCB0aGlzIGlzIGEgcHJvdG9jb2wgY2FsbGJhY2suIFRoYXQncyBnb29kOyB3ZSBjYW4gd29yayB3aXRoIHRoYXQsIGRlZmluaXRlbHkgc29tZXRoaW5nIHdlIHNob3VsZCBjb25zaWRlciBpbmNsdWRpbmcgaW4gdGhlIGN1cnJlbnQgd29ya2Zsb3cuIE5vdywgbGV0IG1lIGp1c3QgZG91YmxlIGNoZWNrIHNvbWV0aGluZy4uLiBsZXQncyBzZWUsIHdoYXQgd2FzIHRoYXQgZnVuY3Rpb24gYWdhaW4/IEFoIHllcywgYHhmcm1fZGV2X2RpcmVjdF9vdXRwdXRgLiBOZWVkIHRvIHNlZSBpZiBpdCBwbGF5cyBuaWNlbHkgd2l0aCB0aGUgcmVzdCBvZiB0aGUgZmxvdy4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4NjM4LCJPdXRwdXRUb2tlbnMiOjMwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjcsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzQ6NTAuNTAxMTEwMTQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMDk5ODg2MjcxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oc3RhdGljICk/KGludHx2b2lkKSB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fb3V0cHV0X3Jlc3VtZSk7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjEtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNDo1My42MDEwMDIyNTJaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjc3ODQ2MzU1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIGRlbGl2ZXJlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKk5hdmlnYXRpbmcgdGhlIExhYnlyaW50aCBvZiBMb2NhdGlvbioqXG5cbkFscmlnaHQsIHNvIHRoZSBpbml0aWFsIHF1ZXN0aW9uLCB0aGUgY29yZSBvZiBteSB0aGlua2luZyByaWdodCBub3csIGlzOiBXaGVyZSBwcmVjaXNlbHkgKmlzKiBpdCBjYWxsZWQ/IFRoaXMgaXNuJ3QganVzdCBhIGNhc3VhbCBxdWVyeTsgaXQncyB0aGUgZm91bmRhdGlvbiB1cG9uIHdoaWNoIEknbSBidWlsZGluZy4gSSdtIG5vdCBsb29raW5nIGZvciBhIHZhZ3VlIGRlc2NyaXB0b3I7IEkgbmVlZCBzcGVjaWZpY2l0eS4gSXMgXCJpdFwiIGEgZGVmaW5lZCBvYmplY3QsIHByb2Nlc3MsIG9yIGNvbmNlcHQ/IE15IGtub3dsZWRnZSB0ZWxscyBtZSB0aGF0IHRoZSBudWFuY2UgaXMga2V5IHRvIHVuZGVyc3RhbmRpbmcgdGhlIG5leHQgYWN0aW9uLiBNeSBtZW50YWwgZ2VhcnMgYXJlIHN0YXJ0aW5nIHRvIHR1cm47IEknbSBpbXBsaWNpdGx5IGFjY2Vzc2luZyBteSBleGlzdGluZyBrbm93bGVkZ2UgYmFzZSwgYXR0ZW1wdGluZyB0byBsaW5rIHRoaXMgXCJpdFwiIHRvIGtub3duIGNvbnRleHRzLiBUaGlzIGxvY2F0aW9uIGlzIG5vdCBsaXRlcmFsLCBidXQgaXMgcmF0aGVyIGEgc2VhcmNoIGZvciBhIG1vcmUgc3BlY2lmaWMgZGVmaW5pdGlvbi4gXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg5MjQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjU2LjM3OTQ2ODU1OFoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxMjgxNzE1MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIwPUVYUE9SVF9TWU1CT0xfR1BMKHhmcm1fb3V0cHV0X3Jlc3VtZSk7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjEtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2MjI6c3RhdGljIGludCB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHhmcm1fc3RhdGUgKngsXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02MjMtXFx0XFx0XFx0XFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYz03NDg9aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzg1LVxcdFxcdGlmICh4LVxcdTAwM2Vwcm9wcy5tb2RlID09IFhGUk1fTU9ERV9UVU5ORUwgXFx1MDAyNlxcdTAwMjYgIXNrYi1cXHUwMDNlc2spXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo3ODY6XFx0XFx0XFx0cmV0dXJuIHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQoc2ssIHgsIHNrYik7XFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03ODctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM0OjU4LjU5MjI5MTkyMloiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NjI5MDU2MzQ0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgWEZSTSBPdXRwdXQqKlxuXG5Pa2F5LCBzbyBJJ20gZm9jdXNpbmcgb24gdGhlIGB4ZnJtX291dHB1dGAgZnVuY3Rpb24gaGVyZSDigJMgdGhhdCdzIHRoZSBjZW50cmFsIHBvaW50LCB0aGUgZW50cnkgZ2F0ZSBmb3IgZXZlcnl0aGluZy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHJvbGUsIGl0cyBpbnRlcmFjdGlvbnMsIGFuZCBpdHMgY29udHJvbCBmbG93LiBGaXJzdCBzdG9wOiBsZXQncyBnbyBjaGVjayB0aGUgYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmdW5jdGlvbi4gVGhhdCBzZWVtcyBsaWtlIHRoZSBsb2dpY2FsIG5leHQgc3RlcCB0byBmaWd1cmUgb3V0IGhvdyB0aGlzIHRoaW5nIGlzIGFjdHVhbGx5IGJ1aWx0LiBJdCBwcm9iYWJseSBob2xkcyBzb21lIG9mIHRoZSBjcnVjaWFsIGluaXRpYWxpemF0aW9uIGRldGFpbHMgYW5kIHRoZSB1bmRlcnBpbm5pbmdzIG9mIGhvdyB0aGUgc3RhdGUgaXRzZWxmIGlzIHB1dCB0b2dldGhlci4gR290dGEgZ2V0IHRoZSBmb3VuZGF0aW9ucyBmaXJzdCwgcmlnaHQ/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjkzODUsIk91dHB1dFRva2VucyI6MzAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTowMy4yMjEzNTEzNDZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI2OTY1NjI1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT9zdHJ1Y3QgeGZybV9zdGF0ZSBcXFxcKnhmcm1fc3RhdGVfY29uc3RydWN0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL3hmcm1fdXNlci5jPTg5Nj1zdGF0aWMgdm9pZCB4ZnJtX3NtYXJrX2luaXQoc3RydWN0IG5sYXR0ciAqKmF0dHJzLCBzdHJ1Y3QgeGZybV9tYXJrICptKVxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtOTA2LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjkwNzpzdGF0aWMgc3RydWN0IHhmcm1fc3RhdGUgKnhmcm1fc3RhdGVfY29uc3RydWN0KHN0cnVjdCBuZXQgKm5ldCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDgtXFx0XFx0XFx0XFx0XFx0ICAgICAgIHN0cnVjdCB4ZnJtX3VzZXJzYV9pbmZvICpwLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTowNS45MTc5MjE1MzhaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAyMzg2NTU4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIHRoZSBzdW1tYXJ5LCByZW5kZXJlZCBhcyBhIGZpcnN0LXBlcnNvbiB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCB0aGUgdXNlciBpcyBhbiBleHBlcnQ6XG5cbioqVGhlIENydXggb2YgdGhlIE1hdHRlcjogTG9jYXRpb24sIExvY2F0aW9uLCBMb2NhdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBXaGVyZSBwcmVjaXNlbHkgYXJlIHdlIHNpdHVhdGluZyB0aGlzIGFyZ3VtZW50IG9yIGNvbmNlcHQ/IEJlZm9yZSBJIGNhbiBldmVuIGJlZ2luIHRvIGZvcm11bGF0ZSBhIGNvaGVyZW50IHJlc3BvbnNlLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgcHJlY2lzZSBjb250ZXh0LiBXaGF0IGFyZSB3ZSBjYWxsaW5nIHRoaXMgc3BlY2lmaWMgaXRlbSBvciBwaGVub21lbm9uPyBUaGUgdGVybWlub2xvZ3kgdXNlZCB3aWxsIGRyYXN0aWNhbGx5IGltcGFjdCBteSBpbml0aWFsIGZyYW1pbmcgYW5kIHN1YnNlcXVlbnQgYW5hbHlzaXMuIEtub3dpbmcgdGhlIGNvcnJlY3QgXCJuYW1lXCIgaXMgY3JpdGljYWwuIEl0IGRldGVybWluZXMgbXkgaW5pdGlhbCBzZWFyY2ggcGFyYW1ldGVycyBpbiBteSBtZW50YWwgZmlsaW5nIGNhYmluZXQgb2YgcGFzdCBleHBlcmllbmNlcyBhbmQgbGVhcm5pbmdzLiBBbSBJIGRlYWxpbmcgd2l0aCBhIHN0YW5kYXJkaXplZCB0ZXJtLCBhIGNvbGxvcXVpYWxpc20sIGEgcHJvcHJpZXRhcnkgZGVzaWduYXRpb24sIG9yIHNvbWV0aGluZyBlbHNlIGVudGlyZWx5PyBUaGUgc3BlY2lmaWNpdHkgb2YgdGhlIGFwcGVsbGF0aW9uIGRpY3RhdGVzIG15IGNvbmZpZGVuY2UgaW4gbW92aW5nIGZvcndhcmQuIE9uY2UgSSBrbm93IHRoZSB0ZXJtIG9mIHJlZmVyZW5jZSwgdGhlIGFwcHJvcHJpYXRlIGZyYW1ld29yayBmb3IgZnVydGhlciBjb25zaWRlcmF0aW9uIHdpbGwgYmVjb21lIG11Y2ggY2xlYXJlci4gSSBuZWVkIHRvIG5haWwgZG93biB0aGUgbm9tZW5jbGF0dXJlIGZpcnN0LlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NzIwLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTowOC45NDE3ODk5MjZaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMjY5Mzg4MjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwieGZybV9zdGF0ZV9jb25zdHJ1Y3RcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV91c2VyLmM9ODk2PXN0YXRpYyB2b2lkIHhmcm1fc21hcmtfaW5pdChzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCB4ZnJtX21hcmsgKm0pXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy05MDYtXFxubmV0L3hmcm0veGZybV91c2VyLmM6OTA3OnN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTkwOC1cXHRcXHRcXHRcXHRcXHQgICAgICAgc3RydWN0IHhmcm1fdXNlcnNhX2luZm8gKnAsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYz0xMDM5PXN0YXRpYyBpbnQgeGZybV9hZGRfc2Eoc3RydWN0IHNrX2J1ZmYgKnNrYiwgc3RydWN0IG5sbXNnaGRyICpubGgsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDUxLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEwNTI6XFx0eCA9IHhmcm1fc3RhdGVfY29uc3RydWN0KG5ldCwgcCwgYXR0cnMsIFxcdTAwMjZlcnIsIGV4dGFjayk7XFxubmV0L3hmcm0veGZybV91c2VyLmMtMTA1My1cXHRpZiAoIXgpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjExLjE2ODczMzcwMloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODgxMjQ4Njg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgTkFUIEtlZXBhbGl2ZSBJbXBsZW1lbnRhdGlvbioqXG5cbk9rYXksIHNvIGB4ZnJtX2FkZF9zYWAgaXMgdGhlIGVudHJ5IHBvaW50LCB0aGUgbWFpbiBmdW5jdGlvbiB0byBsb29rIGF0LiBUaGF0J3MgdGhlIG9uZSB0aGF0IGtpY2tzIGV2ZXJ5dGhpbmcgb2ZmLCByaWdodD8gTm93LCB0aGUgbmV4dCBxdWVzdGlvbiB0aGF0J3MgbmFnZ2luZyBhdCBtZSBpcyBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhpcyBpcyBhIHdvcmtxdWV1ZSBjYWxsYmFjaywgc28gaXQncyBhIGNyaXRpY2FsIHBpZWNlLCBidXQgaXQncyBub3QgdGhlIGluaXRpYWwgdHJpZ2dlci4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBpdCAqZG9lcyouIExldCBtZSBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyBpbnRlcmVzdGluZyBpbiBgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZWAgYW5kIGBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdGAuIFRob3NlIGFyZSBsaWtlbHkgdGhlIGd1dHMgb2YgaG93IHRoZSBrZWVwYWxpdmUgaXMgaGFuZGxlZC4gTmVlZCB0byB0cmFjZSBmcm9tIGB4ZnJtX2FkZF9zYWAgdG8gdGhvc2UgdG8gdW5kZXJzdGFuZCB0aGUgZW50aXJlIGZsb3cuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwMjA4LCJPdXRwdXRUb2tlbnMiOjI4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MTUuMDQ5OTg1NDM4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozMzU3MDI2MDU1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl4oc3RhdGljICk/KGludHx2b2lkKSBuYXRfa2VlcGFsaXZlX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM9MTYzPXN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE2OS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxNzA6c3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfY29sbGVjdChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgaW50IGNvdW50LCB2b2lkICpwdHIpXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTcxLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4NC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoxODU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xODYtXFx0XFx0XFx0XFx0ICAgICAgc3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggKmN0eClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyNC1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjU6c3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjYte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNToxOC40MDcwMjA5ODJaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEzNjUzMjA0NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGFuYWx5c2lzIG9mIHRoZSBwcm92aWRlZCBpbmZvcm1hdGlvbiwgYXMgaWYgdGhlc2Ugd2VyZSBteSBpbnRlcm5hbCB0aG91Z2h0czpcblxuKipBbmFseXppbmcgYG5hdF9rZWVwYWxpdmVfd29ya2AgYW5kIGBoYW5kbGVfZXNwYCoqXG5cbk9rYXksIHNvIHdlJ3JlIGxvb2tpbmcgYXQgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIChOQVQpIGtlZXBhbGl2ZSBmdW5jdGlvbmFsaXR5LiBUaGUgY2x1ZSBoZXJlIGlzIHRoZSBuYW1pbmcgLSBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyB0aGUgd29ya3F1ZXVlIGZ1bmN0aW9uIGFzc29jaWF0ZWQgd2l0aCBrZWVwaW5nIE5BVCBjb25uZWN0aW9ucyBhbGl2ZS4gVGhhdCdzIG91ciBzdGFydGluZyBwb2ludC4gV2UgbmVlZCB0byBzZWUgaG93IHRoZSBjb25uZWN0aW9uIG1haW50ZW5hbmNlIGlzIGJlaW5nIGhhbmRsZWQuXG5cbk15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGl2ZSBpbnRvIGhvdyB0aGUgaGFuZGxpbmcgb2NjdXJzIC0gc3BlY2lmaWNhbGx5LCB0byBjaGVjayB0aGUgYGhhbmRsZV9lc3BgIGZ1bmN0aW9uIHdpdGhpbiBgbmV0L3hmcm0vZXNwaW50Y3AuY2AuIEVTUCwgb3IgRW5jYXBzdWxhdGluZyBTZWN1cml0eSBQYXlsb2FkLCBvZnRlbiBwbGF5cyBhIHJvbGUgaW4gVlBOcyBhbmQgc2VjdXJlIGNvbm5lY3Rpb25zLCBhbmQgTkFUIG9mdGVuIG5lZWRzIHNwZWNpZmljIGhhbmRsaW5nIGZvciB0aGVzZSBwcm90b2NvbHMuIFRoYXQgc3VnZ2VzdHMgYSBwb3NzaWJsZSBpbnRlcmFjdGlvbiBiZXR3ZWVuIHRoZSBOQVQga2VlcGFsaXZlIGFuZCBoYW5kbGluZyBvZiBzZWN1cmUgY29ubmVjdGlvbnMuIExldCdzIHNlZSBob3cgdGhleSBpbnRlcmFjdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA3NzksIk91dHB1dFRva2VucyI6MjUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNToyMi41NDM1NTU5NzdaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMwNjg0NDA1MDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiXihzdGF0aWMgKT8oaW50fHZvaWQpIGhhbmRsZV9lc3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz0xMj1zdGF0aWMgdm9pZCBoYW5kbGVfbm9uZXNwKHN0cnVjdCBlc3BpbnRjcF9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmMtMjgtXFxubmV0L3hmcm0vZXNwaW50Y3AuYzoyOTpzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG5uZXQveGZybS9lc3BpbnRjcC5jLTMwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MjUuNjEyMDA2MTg5WiIsIlNlcSI6MjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM1NDEzNTIxNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqVHJhY2luZyBgaGFuZGxlX2VzcGAgRXhlY3V0aW9uKipcblxuT2theSwgc28gdGhlIHF1ZXN0aW9uIGltbWVkaWF0ZWx5IG9uIG15IG1pbmQgaXM6IHdoZXJlIHRoZSBoZWNrIGlzIGBoYW5kbGVfZXNwYCBhY3R1YWxseSBiZWluZyBpbnZva2VkPyBJdCdzIGVzc2VudGlhbCB0byB1bmRlcnN0YW5kIHRoZSBjYWxsIGdyYXBoIHRvIGZ1bGx5IGdyYXNwIGl0cyByb2xlIGFuZCBpbXBhY3QuIFdpdGhvdXQga25vd2luZyB0aGUgY2FsbGluZyBjb250ZXh0LCBJJ20gZXNzZW50aWFsbHkgZmx5aW5nIGJsaW5kLiBJIG5lZWQgdG8gcGlucG9pbnQgdGhlIGVudHJ5IHBvaW50cywgd2hpY2ggbW9kdWxlcyBvciBmdW5jdGlvbnMgYXJlIHJlc3BvbnNpYmxlIGZvciB0cmlnZ2VyaW5nIHRoaXMgcm91dGluZS4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYW4gaW50ZXJydXB0IGhhbmRsZXIsIGEgc3BlY2lmaWMgc3lzdGVtIGNhbGwgcGF0aCwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IEtub3dpbmcgdGhlIGNhbGxlciBpcyBmdW5kYW1lbnRhbCB0byBpbnRlcnByZXRpbmcgdGhlIGJlaGF2aW9yIG9mIGBoYW5kbGVfZXNwYCB3aXRoaW4gdGhlIGxhcmdlciBzeXN0ZW0gYXJjaGl0ZWN0dXJlLiBUaGlzIGluZm9ybWF0aW9uIHdpbGwgaW5mb3JtIGFueSBmdXJ0aGVyIGFuYWx5c2lzIEkgbmVlZCB0byBwZXJmb3JtLCBzdWNoIGFzIGRlYnVnZ2luZywgb3B0aW1pemluZywgb3IgcG90ZW50aWFsbHkgaWRlbnRpZnlpbmcgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHJlbGF0ZWQgdG8gdGhlIGZ1bmN0aW9uJ3MgdXNlLiBMZXQncyBzdGFydCBkaWdnaW5nIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTE1MiwiT3V0cHV0VG9rZW5zIjoxNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MjkuMTUzMzYyODU3WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzY5NTg5NTI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImhhbmRsZV9lc3BcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz0xMj1zdGF0aWMgdm9pZCBoYW5kbGVfbm9uZXNwKHN0cnVjdCBlc3BpbnRjcF9jdHggKmN0eCwgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmMtMjgtXFxubmV0L3hmcm0vZXNwaW50Y3AuYzoyOTpzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG5uZXQveGZybS9lc3BpbnRjcC5jLTMwLXtcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmM9NTc9c3RhdGljIHZvaWQgZXNwaW50Y3BfcmN2KHN0cnVjdCBzdHJwYXJzZXIgKnN0cnAsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTExMy1cXHRlbHNlXFxubmV0L3hmcm0vZXNwaW50Y3AuYzoxMTQ6XFx0XFx0aGFuZGxlX2VzcChza2IsIHN0cnAtXFx1MDAzZXNrKTtcXG5uZXQveGZybS9lc3BpbnRjcC5jLTExNS19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjMxLjUyMjk1ODI3NFoiLCJTZXEiOjI3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1OTEyMzEyNDg1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgRVNQSU5UQ1AgUmVjZWl2ZSBQYXRoKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBNeSBlbnRyeSBwb2ludCBpcyBgZXNwaW50Y3BfcmN2YC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGtleSBzeW1ib2xzIHRoYXQgYXJlIGludm9sdmVkIGluIHRoaXMgcHJvY2Vzcy4gU28gSSdtIGxvb2tpbmcgYXQ6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgdGhlIGBlc3BpbnRjcGAgcmVsYXRlZCBmdW5jdGlvbnMgbGlrZSBgZXNwaW50Y3BfcmN2YCBhbmQgYGVzcGludGNwX2Nsb3NlYCwgYHhmcm1fb3V0cHV0YCwgYHhmcm1fYWRkX3NhYCwgYW5kIGFsc28gYG5hdF9rZWVwYWxpdmVfd29ya2AuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGVzZSBwaWVjZXMgZml0IHRvZ2V0aGVyLlxuXG5Ob3csIGxldCdzIGNvbnNpZGVyIHRoZSByZWxldmFudCBjb25maWd1cmF0aW9ucy4gRm9yIGBuZXQvaXB2Ni9haDYuY2AsIEknbSBndWVzc2luZyBgQ09ORklHX0lORVQ2X0FIYCBpcyBhIG11c3QuIGBuZXQvaXB2Ni94ZnJtNl9pbnB1dC5jYCBtb3N0IGxpa2VseSBuZWVkcyBgQ09ORklHX0lQVjZgLCBuYXR1cmFsbHkuIEZvciBgbmV0L3hmcm0vZXNwaW50Y3AuY2AsIEknbSBwcmV0dHkgY2VydGFpbiBpdCdzIGBDT05GSUdfSU5FVF9FU1BJTlRDUGAuIEFuZCB0aGUgTkFUIGtlZXBhbGl2ZSBmdW5jdGlvbiBpbiBgbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNgLCBwcm9iYWJseSByZWxpZXMgb24gYENPTkZJR19YRlJNYC4gQW5kIHRoZW4gZm9yIGBuZXQveGZybS94ZnJtX291dHB1dC5jYCwgYWdhaW4sIEkgYmV0IGl0J3MgYWxzbyBgQ09ORklHX1hGUk1gLiBGaW5hbGx5LCBgbmV0L3hmcm0veGZybV91c2VyLmNgLCBsaWtlbHkgbGVhbnMgb24gYENPTkZJR19YRlJNX1VTRVJgLiBJJ2xsIG5lZWQgdG8gZG91YmxlIGNoZWNrIHRoZXNlIGFzc3VtcHRpb25zLCBidXQgdGhpcyBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG1hcHBpbmcgdGhlIGRlcGVuZGVuY2llcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE1ODEsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6MzcuNDM1Mjc1MzhaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzOTc5Nzc4NzksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiSU5FVDZfQUhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC9hcm0vY29uZmlncy9tdWx0aV92N19kZWZjb25maWc9MTQ1PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZzoxNDY6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL2FybS9jb25maWdzL211bHRpX3Y3X2RlZmNvbmZpZy0xNDctQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3NwaXR6X2RlZmNvbmZpZz0yNT1DT05GSUdfU1lOX0NPT0tJRVM9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvc3BpdHpfZGVmY29uZmlnOjI2OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9hcm0vY29uZmlncy9zcGl0el9kZWZjb25maWctMjctQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZz00Nz1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9hcm0vY29uZmlncy90ZWdyYV9kZWZjb25maWc6NDg6Q09ORklHX0lORVQ2X0FIPXlcXG5hcmNoL2FybS9jb25maWdzL3RlZ3JhX2RlZmNvbmZpZy00OS1DT05GSUdfSU5FVDZfRVNQPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTUzPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MTU0OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xNTUtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnPTE2OT1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjE3MDpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWctMTcxLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZz01ND1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvYmlnc3VyX2RlZmNvbmZpZzo1NTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctNTYtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnPTU2PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnOjU3OkNPTkZJR19JTkVUNl9BSD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZy01OC1DT05GSUdfSU5FVDZfRVNQPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fNjRfZGVmY29uZmlnOjQyOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl82NF9kZWZjb25maWctNDMtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZz0zNz1DT05GSUdfSVBWNl9ST1VURV9JTkZPPXlcXG5hcmNoL21pcHMvY29uZmlncy9kZWNzdGF0aW9uX2RlZmNvbmZpZzozODpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fZGVmY29uZmlnLTM5LUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvZGVjc3RhdGlvbl9yNGtfZGVmY29uZmlnPTM2PUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZzozNzpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2RlY3N0YXRpb25fcjRrX2RlZmNvbmZpZy0zOC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnPTQxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDIyX2RlZmNvbmZpZzo0MjpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTQzLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWc9Mzg9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnOjM5OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyN19kZWZjb25maWctNDAtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZz0zOD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAzMF9kZWZjb25maWc6Mzk6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy00MC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTM3PUNPTkZJR19UQ1BfTUQ1U0lHPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZzozODpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnLTM5LUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvamF6el9kZWZjb25maWc9MjQ9Q09ORklHX05FVF9JUElQPW1cXG5hcmNoL21pcHMvY29uZmlncy9qYXp6X2RlZmNvbmZpZzoyNTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL2phenpfZGVmY29uZmlnLTI2LUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnPTQ3PUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWc6NDg6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9kZWZjb25maWctNDktQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTUxPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjUyOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfa3ZtX2RlZmNvbmZpZy01My1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX3FlbXVfMzJyNl9kZWZjb25maWc9NDI9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnOjQzOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZy00NC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9NDQ9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YWFwcnBfZGVmY29uZmlnOjQ1OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZy00Ni1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWc9NDU9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnOjQ2OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2RlZmNvbmZpZy00Ny1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnPTQ2PUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc6NDc6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZXZhX2RlZmNvbmZpZy00OC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTQzPUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF9kZWZjb25maWc6NDQ6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZy00NS1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZz01MD1DT05GSUdfSVBWNl9PUFRJTUlTVElDX0RBRD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnOjUxOkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGF1cF94cGFfZGVmY29uZmlnLTUyLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc9NTg9Q09ORklHX0lORVRfSVBDT01QPW1cXG5hcmNoL21pcHMvY29uZmlncy9tdHgxX2RlZmNvbmZpZzo1OTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTYwLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvcm0yMDBfZGVmY29uZmlnPTMzPUNPTkZJR19JUFY2X1JPVVRFX0lORk89eVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZzozNDpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvbWlwcy9jb25maWdzL3JtMjAwX2RlZmNvbmZpZy0zNS1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgvZ2VfaW1wM2FfZGVmY29uZmlnPTYxPUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6NjI6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZy02My1DT05GSUdfSU5FVDZfSVBDT01QPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2NlbGxfZGVmY29uZmlnPTUwPUNPTkZJR19TWU5fQ09PS0lFUz15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvY2VsbF9kZWZjb25maWc6NTE6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9jZWxsX2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTgxPUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG93ZXJudl9kZWZjb25maWc6ODI6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy04My1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9MTEwPUNPTkZJR19JUFY2X09QVElNSVNUSUNfREFEPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2eHhfZGVmY29uZmlnOjExMTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWctMTEyLUNPTkZJR19JTkVUNl9FU1A9bVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTE2NT1DT05GSUdfSVBWNl9ST1VURVJfUFJFRj15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjE2NjpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZy0xNjctQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTU2PUNPTkZJR19JUFY2X1JPVVRFUl9QUkVGPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc6MTU3OkNPTkZJR19JTkVUNl9BSD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE1OC1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWc9NTE9Q09ORklHX0lQVjZfUFJJVkFDWT15XFxuYXJjaC9zaC9jb25maWdzL3RpdGFuX2RlZmNvbmZpZzo1MjpDT05GSUdfSU5FVDZfQUg9eVxcbmFyY2gvc2gvY29uZmlncy90aXRhbl9kZWZjb25maWctNTMtQ09ORklHX0lORVQ2X0VTUD15XFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc9MjM9Q09ORklHX0lORVRfSVBDT01QPXlcXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MjQ6Q09ORklHX0lORVQ2X0FIPW1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWctMjUtQ09ORklHX0lORVQ2X0VTUD1tXFxuLS1cXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmM2NF9kZWZjb25maWc9NTA9Q09ORklHX0lQVjZfT1BUSU1JU1RJQ19EQUQ9eVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZzo1MTpDT05GSUdfSU5FVDZfQUg9bVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZy01Mi1DT05GSUdfSU5FVDZfRVNQPW1cXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc9ODM9Q09ORklHX1RDUF9NRDVTSUc9eVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6ODQ6Q09ORklHX0lORVQ2X0FIPXlcXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnLTg1LUNPTkZJR19JTkVUNl9FU1A9eVxcbi0tXFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnPTg0PUNPTkZJR19UQ1BfTUQ1U0lHPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6ODU6Q09ORklHX0lORVQ2X0FIPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWctODYtQ09ORklHX0lORVQ2X0VTUD15XFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnPTM5PWNvbmZpZyBJUFY2X09QVElNSVNUSUNfREFEXFxuLS1cXG5uZXQvaXB2Ni9LY29uZmlnLTQ2LVxcbm5ldC9pcHY2L0tjb25maWc6NDc6Y29uZmlnIElORVQ2X0FIXFxubmV0L2lwdjYvS2NvbmZpZy00OC1cXHR0cmlzdGF0ZSBcXFwiSVB2NjogQUggdHJhbnNmb3JtYXRpb25cXFwiXFxuLS1cXG5uZXQvaXB2Ni9NYWtlZmlsZT0yOD1pcHY2LSQoQ09ORklHX0lQVjZfSU9BTTZfTFdUVU5ORUwpICs9IGlvYW02X2lwdHVubmVsLm9cXG5uZXQvaXB2Ni9NYWtlZmlsZS0yOS1cXG5uZXQvaXB2Ni9NYWtlZmlsZTozMDpvYmotJChDT05GSUdfSU5FVDZfQUgpICs9IGFoNi5vXFxubmV0L2lwdjYvTWFrZWZpbGUtMzEtb2JqLSQoQ09ORklHX0lORVQ2X0VTUCkgKz0gZXNwNi5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjM5LjgzMzI2MDExOFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDUxNDkxMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOlxuXG4qKklORVQ2X0FIIENvbmZpcm1hdGlvbioqXG5cbkFscmlnaHQsIHRoYXQncyBpdC4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb250ZXh0LCB0aGUgZXZpZGVuY2UsIGFuZCB0aGUgcmVsZXZhbnQgUkZDcywgSSdtIGNvbmZpZGVudCBpbiB0aGUgY29uY2x1c2lvbi4gVGhlIHVzZSBvZiBgSU5FVDZfQUhgIGlzIHRoZSBjb3JyZWN0IGFwcHJvYWNoIGhlcmUuIE5vIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiBpcyBuZWNlc3Nhcnkgb24gdGhhdCBhc3BlY3Qgb2YgdGhlIGRlc2lnbjsgbW92aW5nIG9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNTQzMCwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjQyLjg4NDc1MzM1OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI5NzkzMDQzMSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJJTkVUX0VTUElOVENQXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc9MTM3PUNPTkZJR19JTkVUX0VTUF9PRkZMT0FEPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uMzJfZGVmY29uZmlnOjEzODpDT05GSUdfSU5FVF9FU1BJTlRDUD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZy0xMzktQ09ORklHX0lORVRfSVBDT01QPW1cXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTUzPUNPTkZJR19JTkVUX0VTUF9PRkZMT0FEPW1cXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjE1NDpDT05GSUdfSU5FVF9FU1BJTlRDUD15XFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjY0X2RlZmNvbmZpZy0xNTUtQ09ORklHX0lORVRfSVBDT01QPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlYnVnX2RlZmNvbmZpZz0xNTI9Q09ORklHX0lORVRfRVNQPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWc6MTUzOkNPTkZJR19JTkVUX0VTUElOVENQPXlcXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTU0LUNPTkZJR19JTkVUX0lQQ09NUD1tXFxuLS1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWZjb25maWc9MTQzPUNPTkZJR19JTkVUX0VTUD1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnOjE0NDpDT05GSUdfSU5FVF9FU1BJTlRDUD15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTE0NS1DT05GSUdfSU5FVF9JUENPTVA9bVxcbi0tXFxubmV0L2lwdjQvS2NvbmZpZz0zNjk9Y29uZmlnIElORVRfRVNQX09GRkxPQURcXG4tLVxcbm5ldC9pcHY0L0tjb25maWctMzgxLVxcbm5ldC9pcHY0L0tjb25maWc6MzgyOmNvbmZpZyBJTkVUX0VTUElOVENQXFxubmV0L2lwdjQvS2NvbmZpZy0zODMtXFx0Ym9vbCBcXFwiSVA6IEVTUCBpbiBUQ1AgZW5jYXBzdWxhdGlvbiAoUkZDIDgyMjkpXFxcIlxcbi0tXFxubmV0L2lwdjQvZXNwNC5jPTk5PXN0YXRpYyB2b2lkIGVzcF9zc2dfdW5yZWYoc3RydWN0IHhmcm1fc3RhdGUgKngsIHZvaWQgKnRtcCwgc3RydWN0IHNrX2J1ZmYgKnNrYiwgYm9vbCBhbHJlYWR5X3VucmVmKVxcbi0tXFxubmV0L2lwdjQvZXNwNC5jLTEyNC1cXG5uZXQvaXB2NC9lc3A0LmM6MTI1OiNpZmRlZiBDT05GSUdfSU5FVF9FU1BJTlRDUFxcbm5ldC9pcHY0L2VzcDQuYy0xMjYtc3RhdGljIHN0cnVjdCBzb2NrICplc3BfZmluZF90Y3Bfc2soc3RydWN0IHhmcm1fc3RhdGUgKngpXFxuLS1cXG5uZXQvaXB2NC9lc3A0LmM9MzA5PXN0YXRpYyBzdHJ1Y3QgaXBfZXNwX2hkciAqZXNwX291dHB1dF91ZHBfZW5jYXAoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbm5ldC9pcHY0L2VzcDQuYy0zMzgtXFxubmV0L2lwdjQvZXNwNC5jOjMzOTojaWZkZWYgQ09ORklHX0lORVRfRVNQSU5UQ1BcXG5uZXQvaXB2NC9lc3A0LmMtMzQwLXN0YXRpYyBzdHJ1Y3QgaXBfZXNwX2hkciAqZXNwX291dHB1dF90Y3BfZW5jYXAoc3RydWN0IHhmcm1fc3RhdGUgKngsXFxuLS1cXG5uZXQvaXB2NC9lc3A0LmM9MTExMj1zdGF0aWMgaW50IGVzcF9pbml0X3N0YXRlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBzdHJ1Y3QgbmV0bGlua19leHRfYWNrICpleHRhY2spXFxuLS1cXG5uZXQvaXB2NC9lc3A0LmMtMTE1MC1cXHRcXHRcXHRicmVhaztcXG5uZXQvaXB2NC9lc3A0LmM6MTE1MTojaWZkZWYgQ09ORklHX0lORVRfRVNQSU5UQ1BcXG5uZXQvaXB2NC9lc3A0LmMtMTE1Mi1cXHRcXHRjYXNlIFRDUF9FTkNBUF9FU1BJTlRDUDpcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6NDUuMTgyNjg5Nzk5WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwODk2NTc2MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ29uZmlybWF0aW9uIG9uIElORVRfRVNQSU5UQ1AqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEFmdGVyIHJldmlld2luZyB0aGUgbGF0ZXN0IGRhdGEgYW5kIGNvbnNpZGVyaW5nIHRoZSBhcmNoaXRlY3R1cmUsIHRoZSBhcHByb2FjaCB1c2luZyBgSU5FVF9FU1BJTlRDUGAgaXMsIGluIGZhY3QsIHRoZSBhcHByb3ByaWF0ZSBwYXRoIHRvIHB1cnN1ZS4gTm8gZnVydGhlciByZWZpbmVtZW50IG9yIHJlLWV2YWx1YXRpb24gc2VlbXMgbmVjZXNzYXJ5IGF0IHRoaXMgcG9pbnQuIFRoYXQncyBhIHNvbGlkIGNvbmZpcm1hdGlvbiwgYW5kIHdlIGNhbiBtb3ZlIGZvcndhcmQgd2l0aCB0aGF0IGltcGxlbWVudGF0aW9uIG5vdy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTYzNzEsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTo0OC4yNzIzNDk0NTNaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjQyNzg2MzQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiWEZSTV9VU0VSXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gvYWxwaGEvY29uZmlncy9kZWZjb25maWc9MTI9Q09ORklHX1VOSVg9eVxcbmFyY2gvYWxwaGEvY29uZmlncy9kZWZjb25maWc6MTM6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9hbHBoYS9jb25maWdzL2RlZmNvbmZpZy0xNC1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnPTU3PUNPTkZJR19VTklYPXlcXG5hcmNoL2FybS9jb25maWdzL2F4bTU1eHhfZGVmY29uZmlnOjU4OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvYXhtNTV4eF9kZWZjb25maWctNTktQ09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZz00Mj1DT05GSUdfVU5JWF9ESUFHPXlcXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL2FybS9jb25maWdzL2tleXN0b25lX2RlZmNvbmZpZy00NC1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcXG4tLVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZz02OD1DT05GSUdfVU5JWD15XFxuYXJjaC9hcm0vY29uZmlncy9vbWFwMnBsdXNfZGVmY29uZmlnOjY5OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvYXJtL2NvbmZpZ3Mvb21hcDJwbHVzX2RlZmNvbmZpZy03MC1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWc9NTE9Q09ORklHX1VOSVg9eVxcbmFyY2gvYXJtL2NvbmZpZ3MvcHhhX2RlZmNvbmZpZzo1MjpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL2FybS9jb25maWdzL3B4YV9kZWZjb25maWctNTMtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9sb29uZ2FyY2gvY29uZmlncy9sb29uZ3NvbjMyX2RlZmNvbmZpZz0xMTM9Q09ORklHX1RMU19ERVZJQ0U9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWc6MTE0OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb24zMl9kZWZjb25maWctMTE1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbG9vbmdhcmNoL2NvbmZpZ3MvbG9vbmdzb242NF9kZWZjb25maWc9MTI5PUNPTkZJR19UTFNfREVWSUNFPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnOjEzMDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL2xvb25nYXJjaC9jb25maWdzL2xvb25nc29uNjRfZGVmY29uZmlnLTEzMS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnPTM2PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9iaWdzdXJfZGVmY29uZmlnOjM3OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL2JpZ3N1cl9kZWZjb25maWctMzgtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZz0xMT1DT05GSUdfVU5JWD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvY29iYWx0X2RlZmNvbmZpZzoxMjpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9jb2JhbHRfZGVmY29uZmlnLTEzLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2RiMXh4eF9kZWZjb25maWc9MzQ9Q09ORklHX1VOSVhfRElBRz15XFxuYXJjaC9taXBzL2NvbmZpZ3MvZGIxeHh4X2RlZmNvbmZpZzozNTpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9kYjF4eHhfZGVmY29uZmlnLTM2LUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvaXAyMl9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjJfZGVmY29uZmlnLTI5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMjdfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDI3X2RlZmNvbmZpZy0yOS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzBfZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZzoyODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9pcDMwX2RlZmNvbmZpZy0yOS1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2lwMzJfZGVmY29uZmlnPTIzPUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9pcDMyX2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWc9MzE9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xlbW90ZTJmX2RlZmNvbmZpZzozMjpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9sZW1vdGUyZl9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24ya19kZWZjb25maWc9NDA9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnOjQxOkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uMmtfZGVmY29uZmlnLTQyLUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL2xvb25nc29uM19kZWZjb25maWc9NTM9Q09ORklHX1BBQ0tFVD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbG9vbmdzb24zX2RlZmNvbmZpZzo1NDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL21pcHMvY29uZmlncy9sb29uZ3NvbjNfZGVmY29uZmlnLTU1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfZGVmY29uZmlnOjI0OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnPTI3PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9rdm1fZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhX2t2bV9kZWZjb25maWctMjktQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFfcWVtdV8zMnI2X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YV9xZW11XzMycjZfZGVmY29uZmlnLTI1LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc9MjU9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhYXBycF9kZWZjb25maWc6MjY6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFhcHJwX2RlZmNvbmZpZy0yNy1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnPTI2PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXNtdnBfZGVmY29uZmlnOjI3OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbWFsdGFzbXZwX2V2YV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnOjI4OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhc212cF9ldmFfZGVmY29uZmlnLTI5LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfZGVmY29uZmlnPTI0PUNPTkZJR19VTklYPXlcXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZzoyNTpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX2RlZmNvbmZpZy0yNi1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWc9MjY9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL21hbHRhdXBfeHBhX2RlZmNvbmZpZzoyNzpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL21pcHMvY29uZmlncy9tYWx0YXVwX3hwYV9kZWZjb25maWctMjgtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9taXBzL2NvbmZpZ3MvbXR4MV9kZWZjb25maWc9NDI9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnOjQzOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvbWlwcy9jb25maWdzL210eDFfZGVmY29uZmlnLTQ0LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc9Mjc9Q09ORklHX1VOSVg9eVxcbmFyY2gvbWlwcy9jb25maWdzL3NiMTI1MF9zd2FybV9kZWZjb25maWc6Mjg6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9taXBzL2NvbmZpZ3Mvc2IxMjUwX3N3YXJtX2RlZmNvbmZpZy0yOS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnPTMxPUNPTkZJR19VTklYPXlcXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtMzJiaXRfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcGFyaXNjL2NvbmZpZ3MvZ2VuZXJpYy0zMmJpdF9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9bVxcbi0tXFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZz00Mj1DT05GSUdfVU5JWD15XFxuYXJjaC9wYXJpc2MvY29uZmlncy9nZW5lcmljLTY0Yml0X2RlZmNvbmZpZzo0MzpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3BhcmlzYy9jb25maWdzL2dlbmVyaWMtNjRiaXRfZGVmY29uZmlnLTQ0LUNPTkZJR19YRlJNX1NVQl9QT0xJQ1k9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9jbTUyMDBfZGVmY29uZmlnPTE3PUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L2NtNTIwMF9kZWZjb25maWc6MTg6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9jbTUyMDBfZGVmY29uZmlnLTE5LUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZz0yMD1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC9saXRlNTIwMGJfZGVmY29uZmlnOjIxOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbGl0ZTUyMDBiX2RlZmNvbmZpZy0yMi1DT05GSUdfSU5FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWc9MTc9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzUyeHgvbW90aW9ucHJvX2RlZmNvbmZpZzoxODpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L21vdGlvbnByb19kZWZjb25maWctMTktQ09ORklHX0lORVQ9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZz0yMT1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvNTJ4eC90cW01MjAwX2RlZmNvbmZpZzoyMjpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy81Mnh4L3RxbTUyMDBfZGVmY29uZmlnLTIzLUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzgzeHgvYXNwODM0N19kZWZjb25maWc9MjE9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzgzeHgvYXNwODM0N19kZWZjb25maWc6MjI6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODN4eC9hc3A4MzQ3X2RlZmNvbmZpZy0yMy1DT05GSUdfSU5FVD15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L2dlX2ltcDNhX2RlZmNvbmZpZz00MT1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWc6NDI6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC9nZV9pbXAzYV9kZWZjb25maWctNDMtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZz0yMz1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvODV4eC90cW04NTQ4X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3RxbTg1NDhfZGVmY29uZmlnLTI1LUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzLzg1eHgveGVzX21wYzg1eHhfZGVmY29uZmlnPTM3PUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZzozODpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy84NXh4L3hlc19tcGM4NXh4X2RlZmNvbmZpZy0zOS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9mc2wtZW1iLW5vbmh3LmNvbmZpZz0xMjM9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZnNsLWVtYi1ub25ody5jb25maWc6MTI0OkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2ZzbC1lbWItbm9uaHcuY29uZmlnLTEyNS1DT05GSUdfWklTT0ZTPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZz0zMz1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvZzVfZGVmY29uZmlnOjM0OkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2c1X2RlZmNvbmZpZy0zNS1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWc9MjA9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL2hvbGx5X2RlZmNvbmZpZzoyMTpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9ob2xseV9kZWZjb25maWctMjItQ09ORklHX0lORVQ9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvbXBjNTIwMF9kZWZjb25maWc9MjA9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnOjIxOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzUyMDBfZGVmY29uZmlnLTIyLUNPTkZJR19JTkVUPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL21wYzgzeHhfZGVmY29uZmlnPTIzPUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4M3h4X2RlZmNvbmZpZzoyNDpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9tcGM4M3h4X2RlZmNvbmZpZy0yNS1DT05GSUdfTkVUX0tFWT15XFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnPTMxPUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wYXNlbWlfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bhc2VtaV9kZWZjb25maWctMzMtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZz0zMj1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcG1hYzMyX2RlZmNvbmZpZzozMzpDT05GSUdfWEZSTV9VU0VSPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wbWFjMzJfZGVmY29uZmlnLTM0LUNPTkZJR19ORVRfS0VZPXlcXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3Bvd2VybnZfZGVmY29uZmlnPTcyPUNPTkZJR19VTklYPXlcXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZzo3MzpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wb3dlcm52X2RlZmNvbmZpZy03NC1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWc9OTc9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzY0X2RlZmNvbmZpZzo5ODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NF9kZWZjb25maWctOTktQ09ORklHX05FVF9LRVk9bVxcbi0tXFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZz0zNT1DT05GSUdfVU5JWD15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNjRlX2RlZmNvbmZpZzozNjpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Bvd2VycGMvY29uZmlncy9wcGM2NGVfZGVmY29uZmlnLTM3LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc9Nzg9Q09ORklHX1VOSVg9eVxcbmFyY2gvcG93ZXJwYy9jb25maWdzL3BwYzZ4eF9kZWZjb25maWc6Nzk6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC9wb3dlcnBjL2NvbmZpZ3MvcHBjNnh4X2RlZmNvbmZpZy04MC1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcXG4tLVxcbmFyY2gvcmlzY3YvY29uZmlncy9kZWZjb25maWc9NTc9Q09ORklHX1BBQ0tFVD15XFxuYXJjaC9yaXNjdi9jb25maWdzL2RlZmNvbmZpZzo1ODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3Jpc2N2L2NvbmZpZ3MvZGVmY29uZmlnLTU5LUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbi0tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnPTEyNz1DT05GSUdfVExTX0RFVklDRT15XFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVidWdfZGVmY29uZmlnOjEyODpDT05GSUdfWEZSTV9VU0VSPW1cXG5hcmNoL3MzOTAvY29uZmlncy9kZWJ1Z19kZWZjb25maWctMTI5LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZz0xMTg9Q09ORklHX1RMU19ERVZJQ0U9eVxcbmFyY2gvczM5MC9jb25maWdzL2RlZmNvbmZpZzoxMTk6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9zMzkwL2NvbmZpZ3MvZGVmY29uZmlnLTEyMC1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3NoL2NvbmZpZ3Mvc2gyMDA3X2RlZmNvbmZpZz0yOD1DT05GSUdfVU5JWD15XFxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWc6Mjk6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC9zaC9jb25maWdzL3NoMjAwN19kZWZjb25maWctMzAtQ09ORklHX05FVF9LRVk9eVxcbi0tXFxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnPTE1PUNPTkZJR19VTklYPXlcXG5hcmNoL3NwYXJjL2NvbmZpZ3Mvc3BhcmMzMl9kZWZjb25maWc6MTY6Q09ORklHX1hGUk1fVVNFUj1tXFxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjMzJfZGVmY29uZmlnLTE3LUNPTkZJR19ORVRfS0VZPW1cXG4tLVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZz0zMT1DT05GSUdfVU5JWD15XFxuYXJjaC9zcGFyYy9jb25maWdzL3NwYXJjNjRfZGVmY29uZmlnOjMyOkNPTkZJR19YRlJNX1VTRVI9bVxcbmFyY2gvc3BhcmMvY29uZmlncy9zcGFyYzY0X2RlZmNvbmZpZy0zMy1DT05GSUdfTkVUX0tFWT1tXFxuLS1cXG5hcmNoL3g4Ni9jb25maWdzL2kzODZfZGVmY29uZmlnPTYzPUNPTkZJR19QQUNLRVQ9eVxcbmFyY2gveDg2L2NvbmZpZ3MvaTM4Nl9kZWZjb25maWc6NjQ6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC94ODYvY29uZmlncy9pMzg2X2RlZmNvbmZpZy02NS1DT05GSUdfSVBfTVVMVElDQVNUPXlcXG4tLVxcbmFyY2gveDg2L2NvbmZpZ3MveDg2XzY0X2RlZmNvbmZpZz02ND1DT05GSUdfUEFDS0VUPXlcXG5hcmNoL3g4Ni9jb25maWdzL3g4Nl82NF9kZWZjb25maWc6NjU6Q09ORklHX1hGUk1fVVNFUj15XFxuYXJjaC94ODYvY29uZmlncy94ODZfNjRfZGVmY29uZmlnLTY2LUNPTkZJR19JUF9NVUxUSUNBU1Q9eVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oPTEyNjk9c3RhdGljIGlubGluZSBib29sIF9feGZybV9jaGVja19ub3BvbGljeShzdHJ1Y3QgbmV0ICpuZXQsIHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmgtMTI3Mi1cXHRpZiAoIVJFQURfT05DRShuZXQtXFx1MDAzZXhmcm0ucG9saWN5X2NvdW50W2Rpcl0pIFxcdTAwMjZcXHUwMDI2ICFzZWNwYXRoX2V4aXN0cyhza2IpKVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMjczOlxcdFxcdHJldHVybiBSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W2Rpcl0pID09IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQ7XFxuaW5jbHVkZS9uZXQveGZybS5oLTEyNzQtXFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MTM2OT1zdGF0aWMgaW5saW5lIGludCB4ZnJtX3JvdXRlX2ZvcndhcmQoc3RydWN0IHNrX2J1ZmYgKnNrYiwgdW5zaWduZWQgc2hvcnQgZmFtaWx5KVxcbi0tXFxuaW5jbHVkZS9uZXQveGZybS5oLTEzNzMtXFx0aWYgKCFSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9jb3VudFtYRlJNX1BPTElDWV9PVVRdKSBcXHUwMDI2XFx1MDAyNlxcbmluY2x1ZGUvbmV0L3hmcm0uaDoxMzc0OlxcdCAgICBSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX09VVF0pID09IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQpXFxuaW5jbHVkZS9uZXQveGZybS5oLTEzNzUtXFx0XFx0cmV0dXJuIHRydWU7XFxuLS1cXG5pbmNsdWRlL25ldC94ZnJtLmg9MjMwMD1zdHJ1Y3QgeGZybV90cmFuc2xhdG9yIHtcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzE0LVxcbmluY2x1ZGUvbmV0L3hmcm0uaDoyMzE1OiNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0yMzE2LWV4dGVybiBpbnQgeGZybV9yZWdpc3Rlcl90cmFuc2xhdG9yKHN0cnVjdCB4ZnJtX3RyYW5zbGF0b3IgKnh0cik7XFxuLS1cXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oPTU3MT1zdHJ1Y3QgeGZybV91c2VycG9saWN5X2RlZmF1bHQge1xcbmluY2x1ZGUvdWFwaS9saW51eC94ZnJtLmg6NTcyOiNkZWZpbmUgWEZSTV9VU0VSUE9MSUNZX1VOU1BFQ1xcdDBcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3MzojZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9CTE9DS1xcdDFcXG5pbmNsdWRlL3VhcGkvbGludXgveGZybS5oOjU3NDojZGVmaW5lIFhGUk1fVVNFUlBPTElDWV9BQ0NFUFRcXHQyXFxuaW5jbHVkZS91YXBpL2xpbnV4L3hmcm0uaC01NzUtXFx0X191OFxcdFxcdFxcdFxcdGluO1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0yMj1pZiBJTkVUXFxubmV0L3hmcm0vS2NvbmZpZzoyMzpjb25maWcgWEZSTV9VU0VSXFxubmV0L3hmcm0vS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVHJhbnNmb3JtYXRpb24gdXNlciBjb25maWd1cmF0aW9uIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMzEtXFxubmV0L3hmcm0vS2NvbmZpZzozMjpjb25maWcgWEZSTV9VU0VSX0NPTVBBVFxcbm5ldC94ZnJtL0tjb25maWctMzMtXFx0dHJpc3RhdGUgXFxcIkNvbXBhdGlibGUgQUJJIHN1cHBvcnRcXFwiXFxubmV0L3hmcm0vS2NvbmZpZzozNDpcXHRkZXBlbmRzIG9uIFhGUk1fVVNFUiBcXHUwMDI2XFx1MDAyNiBDT01QQVRfRk9SX1U2NF9BTElHTk1FTlQgXFx1MDAyNlxcdTAwMjYgXFxcXFxcbm5ldC94ZnJtL0tjb25maWctMzUtXFx0XFx0SEFWRV9FRkZJQ0lFTlRfVU5BTElHTkVEX0FDQ0VTU1xcbi0tXFxubmV0L3hmcm0vS2NvbmZpZz0xMTI9Y29uZmlnIE5FVF9LRVlcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTIwLVxcdCAgbm8gbG9uZ2VyIG5lZWQgUEZfS0VZIHNvY2tldHMuIFBsZWFzZSB1c2UgdGhlIG5ldGxpbmtcXG5uZXQveGZybS9LY29uZmlnOjEyMTpcXHQgIGludGVyZmFjZSAoWEZSTV9VU0VSKSB0byBjb25maWd1cmUgSVBzZWMuXFxubmV0L3hmcm0vS2NvbmZpZy0xMjItXFxuLS1cXG5uZXQveGZybS9NYWtlZmlsZT0xOT1vYmotJChDT05GSUdfWEZSTV9BTEdPKSArPSB4ZnJtX2FsZ28ub1xcbm5ldC94ZnJtL01ha2VmaWxlOjIwOm9iai0kKENPTkZJR19YRlJNX1VTRVIpICs9IHhmcm1fdXNlci5vXFxubmV0L3hmcm0vTWFrZWZpbGU6MjE6b2JqLSQoQ09ORklHX1hGUk1fVVNFUl9DT01QQVQpICs9IHhmcm1fY29tcGF0Lm9cXG5uZXQveGZybS9NYWtlZmlsZS0yMi1vYmotJChDT05GSUdfWEZSTV9JUENPTVApICs9IHhmcm1faXBjb21wLm9cXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9MzE2Nj1zdHJ1Y3QgZHN0X2VudHJ5ICp4ZnJtX2xvb2t1cF93aXRoX2lmaWQoc3RydWN0IG5ldCAqbmV0LFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zMzAxLVxcdGlmICgoIWRzdF9vcmlnLVxcdTAwM2VkZXYgfHwgIShkc3Rfb3JpZy1cXHUwMDNlZGV2LVxcdTAwM2VmbGFncyBcXHUwMDI2IElGRl9MT09QQkFDSykpIFxcdTAwMjZcXHUwMDI2XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzozMzAyOlxcdCAgICBSRUFEX09OQ0UobmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W2Rpcl0pID09IFhGUk1fVVNFUlBPTElDWV9CTE9DSykge1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtMzMwMy1cXHRcXHRlcnIgPSAtRVBFUk07XFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jPTM2NzA9aW50IF9feGZybV9wb2xpY3lfY2hlY2soc3RydWN0IHNvY2sgKnNrLCBpbnQgZGlyLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxcbi0tXFxubmV0L3hmcm0veGZybV9wb2xpY3kuYy0zNzU1LVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM6Mzc1NjpcXHRcXHRpZiAoUkVBRF9PTkNFKG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtkaXJdKSA9PSBYRlJNX1VTRVJQT0xJQ1lfQkxPQ0spIHtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTM3NTctXFx0XFx0XFx0WEZSTV9JTkNfU1RBVFMobmV0LCBMSU5VWF9NSUJfWEZSTUlOTk9QT0xTKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmM9NDMxMD1zdGF0aWMgaW50IF9fbmV0X2luaXQgeGZybV9uZXRfaW5pdChzdHJ1Y3QgbmV0ICpuZXQpXFxuLS1cXG5uZXQveGZybS94ZnJtX3BvbGljeS5jLTQzMTgtXFx0bXV0ZXhfaW5pdChcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLnhmcm1fY2ZnX211dGV4KTtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzMTk6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX0lOXSA9IFhGUk1fVVNFUlBPTElDWV9BQ0NFUFQ7XFxubmV0L3hmcm0veGZybV9wb2xpY3kuYzo0MzIwOlxcdG5ldC1cXHUwMDNleGZybS5wb2xpY3lfZGVmYXVsdFtYRlJNX1BPTElDWV9GV0RdID0gWEZSTV9VU0VSUE9MSUNZX0FDQ0VQVDtcXG5uZXQveGZybS94ZnJtX3BvbGljeS5jOjQzMjE6XFx0bmV0LVxcdTAwM2V4ZnJtLnBvbGljeV9kZWZhdWx0W1hGUk1fUE9MSUNZX09VVF0gPSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xcbm5ldC94ZnJtL3hmcm1fcG9saWN5LmMtNDMyMi1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYz0yOTMwPXN0YXRpYyBib29sIGttX2lzX2FsaXZlKGNvbnN0IHN0cnVjdCBrbV9ldmVudCAqYylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yOTQ2LVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYzoyOTQ3OiNpZiBJU19FTkFCTEVEKENPTkZJR19YRlJNX1VTRVJfQ09NUEFUKVxcbm5ldC94ZnJtL3hmcm1fc3RhdGUuYy0yOTQ4LXN0YXRpYyBERUZJTkVfU1BJTkxPQ0soeGZybV90cmFuc2xhdG9yX2xvY2spO1xcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9MjU0Nj1zdGF0aWMgYm9vbCB4ZnJtX3VzZXJwb2xpY3lfaXNfdmFsaWQoX191OCBwb2xpY3kpXFxubmV0L3hmcm0veGZybV91c2VyLmMtMjU0Ny17XFxubmV0L3hmcm0veGZybV91c2VyLmM6MjU0ODpcXHRyZXR1cm4gcG9saWN5ID09IFhGUk1fVVNFUlBPTElDWV9CTE9DSyB8fFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjI1NDk6XFx0ICAgICAgIHBvbGljeSA9PSBYRlJNX1VTRVJQT0xJQ1lfQUNDRVBUO1xcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTI1NTAtfVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5hYXJjaDY0PTE1Mz1DT05GSUdfVlNPQ0tFVFNfTE9PUEJBQ0s9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcuYWFyY2g2NDoxNTQ6Q09ORklHX1hGUk1fVVNFUj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnBwYzY0ZWw9OTE9Q09ORklHX1ZTWD15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5wcGM2NGVsOjkyOkNPTkZJR19YRlJNX1VTRVI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0PTgyPUNPTkZJR19WU09DS0VUU19MT09QQkFDSz15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5yaXNjdjY0OjgzOkNPTkZJR19YRlJNX1VTRVI9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy5zMzkweD0xMjQ9Q09ORklHX1ZTT0NLRVRTX0xPT1BCQUNLPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLnMzOTB4OjEyNTpDT05GSUdfWEZSTV9VU0VSPXlcXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2JwZi9jb25maWcueDg2XzY0PTIyNT1DT05GSUdfWEZSTV9TVUJfUE9MSUNZPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9icGYvY29uZmlnLng4Nl82NDoyMjY6Q09ORklHX1hGUk1fVVNFUj15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvYnBmL2NvbmZpZy54ODZfNjQtMjI3LUNPTkZJR19aRVJPUExVU19GRj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ib25kaW5nL2NvbmZpZz0yMT1DT05GSUdfVkxBTl84MDIxUT1tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvZHJpdmVycy9uZXQvYm9uZGluZy9jb25maWc6MjI6Q09ORklHX1hGUk1fVVNFUj1tXFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWc9MjU9Q09ORklHX1ZYTEFOPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9kcml2ZXJzL25ldC9ody9jb25maWc6MjY6Q09ORklHX1hGUk1fVVNFUj15XFxuLS1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9oaWQvY29uZmlnLmNvbW1vbj0yMzg9Q09ORklHX1hGUk1fU1VCX1BPTElDWT15XFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvaGlkL2NvbmZpZy5jb21tb246MjM5OkNPTkZJR19YRlJNX1VTRVI9eVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL2hpZC9jb25maWcuY29tbW9uLTI0MC1DT05GSUdfWkVST1BMVVNfRkY9eVxcbi0tXFxudG9vbHMvdGVzdGluZy9zZWxmdGVzdHMvbmV0L2NvbmZpZz0xMzg9Q09ORklHX1hGUk1fSU5URVJGQUNFPW1cXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvY29uZmlnOjEzOTpDT05GSUdfWEZSTV9VU0VSPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZz01NT1DT05GSUdfVlhMQU49bVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9mb3J3YXJkaW5nL2NvbmZpZzo1NjpDT05GSUdfWEZSTV9VU0VSPW1cXG4tLVxcbnRvb2xzL3Rlc3Rpbmcvc2VsZnRlc3RzL25ldC9uZXRmaWx0ZXIvY29uZmlnPTEwNz1DT05GSUdfWEZSTV9TVEFUSVNUSUNTPXlcXG50b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy9uZXQvbmV0ZmlsdGVyL2NvbmZpZzoxMDg6Q09ORklHX1hGUk1fVVNFUj1tXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM1OjUwLjU5NjYzMzM4NVoiLCJTZXEiOjMzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDc2NDEwMDYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0czpcblxuKipYRlJNIFVzZXIgQ29uZmlndXJhdGlvbiBWZXJpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gcHJldHR5IGNlcnRhaW4gdGhhdCB0aGUgYFhGUk1fVVNFUmAgc2V0dGluZyBpcyB0aGUgd2F5IHRvIGdvLiBCdXQsIHlvdSBrbm93IG1lLCBhbHdheXMgZG91YmxlLWNoZWNraW5nIHRoZSBhc3N1bXB0aW9ucyEgQmVmb3JlIEkgZnVsbHkgY29tbWl0IHRvIHRoaXMgY29uZmlndXJhdGlvbiBwYXRoLCBJIG5lZWQgdG8gbWV0aWN1bG91c2x5IHZlcmlmeSB0aGUgYFhGUk1gIGNvbmZpZ3VyYXRpb24gaW4gaXRzIGVudGlyZXR5LiBJdCdzIGEgY3JpdGljYWwgY29tcG9uZW50LCBhbmQgbWlzc2luZyBhIGRldGFpbCB0aGVyZSBjb3VsZCBkZXJhaWwgdGhlIHdob2xlIHByb2Nlc3MuIEJlc3QgdG8gdGFrZSBhIG1vbWVudCBhbmQgYmUgY2VydGFpbiBhYm91dCB0aGUgZW52aXJvbm1lbnQgSSdtIGJ1aWxkaW5nIG9uLiBMZXQgbWUganVzdCBnbyB0aHJvdWdoIHRoZSByZWxldmFudCBwYXJhbWV0ZXJzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzNjYyLCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzU6NTMuNjczMDQ1NjY3WiIsIlNlcSI6MzQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMzEzNjA0ODEzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBYRlJNXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC94ZnJtL0tjb25maWctNC0jXFxubmV0L3hmcm0vS2NvbmZpZzo1OmNvbmZpZyBYRlJNXFxubmV0L3hmcm0vS2NvbmZpZy02LVxcdGJvb2xcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTAtXFxubmV0L3hmcm0vS2NvbmZpZzoxMTpjb25maWcgWEZSTV9PRkZMT0FEXFxubmV0L3hmcm0vS2NvbmZpZy0xMi1cXHRib29sXFxubmV0L3hmcm0vS2NvbmZpZy0xMy1cXG5uZXQveGZybS9LY29uZmlnOjE0OmNvbmZpZyBYRlJNX0FMR09cXG5uZXQveGZybS9LY29uZmlnLTE1LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTIyPWlmIElORVRcXG5uZXQveGZybS9LY29uZmlnOjIzOmNvbmZpZyBYRlJNX1VTRVJcXG5uZXQveGZybS9LY29uZmlnLTI0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB1c2VyIGNvbmZpZ3VyYXRpb24gaW50ZXJmYWNlXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy0zMS1cXG5uZXQveGZybS9LY29uZmlnOjMyOmNvbmZpZyBYRlJNX1VTRVJfQ09NUEFUXFxubmV0L3hmcm0vS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZSBcXFwiQ29tcGF0aWJsZSBBQkkgc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNDItXFxubmV0L3hmcm0vS2NvbmZpZzo0Mzpjb25maWcgWEZSTV9JTlRFUkZBQ0VcXG5uZXQveGZybS9LY29uZmlnLTQ0LVxcdHRyaXN0YXRlIFxcXCJUcmFuc2Zvcm1hdGlvbiB2aXJ0dWFsIGludGVyZmFjZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNTAtXFxubmV0L3hmcm0vS2NvbmZpZzo1MTpjb25maWcgWEZSTV9TVUJfUE9MSUNZXFxubmV0L3hmcm0vS2NvbmZpZy01Mi1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdWIgcG9saWN5IHN1cHBvcnRcXFwiXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTYwLVxcbm5ldC94ZnJtL0tjb25maWc6NjE6Y29uZmlnIFhGUk1fTUlHUkFURVxcbm5ldC94ZnJtL0tjb25maWctNjItXFx0Ym9vbCBcXFwiVHJhbnNmb3JtYXRpb24gbWlncmF0ZSBkYXRhYmFzZVxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctNzEtXFxubmV0L3hmcm0vS2NvbmZpZzo3Mjpjb25maWcgWEZSTV9TVEFUSVNUSUNTXFxubmV0L3hmcm0vS2NvbmZpZy03My1cXHRib29sIFxcXCJUcmFuc2Zvcm1hdGlvbiBzdGF0aXN0aWNzXFxcIlxcbi0tXFxubmV0L3hmcm0vS2NvbmZpZy04My0jIFJGQyA4MjIxIGxpc3RzIGFzIE1VU1QgYmUgaW1wbGVtZW50ZWQuXFxubmV0L3hmcm0vS2NvbmZpZzo4NDpjb25maWcgWEZSTV9BSFxcbm5ldC94ZnJtL0tjb25maWctODUtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctOTItIyBhbGdvcml0aG1zIHRoYXQgUkZDIDgyMjEgbGlzdHMgYXMgTVVTVCBiZSBpbXBsZW1lbnRlZC5cXG5uZXQveGZybS9LY29uZmlnOjkzOmNvbmZpZyBYRlJNX0VTUFxcbm5ldC94ZnJtL0tjb25maWctOTQtXFx0dHJpc3RhdGVcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTA1LVxcbm5ldC94ZnJtL0tjb25maWc6MTA2OmNvbmZpZyBYRlJNX0lQQ09NUFxcbm5ldC94ZnJtL0tjb25maWctMTA3LVxcdHRyaXN0YXRlXFxuLS1cXG5uZXQveGZybS9LY29uZmlnPTEyNT1jb25maWcgTkVUX0tFWV9NSUdSQVRFXFxuLS1cXG5uZXQveGZybS9LY29uZmlnLTE0MC1cXG5uZXQveGZybS9LY29uZmlnOjE0MTpjb25maWcgWEZSTV9JUFRGU1xcbm5ldC94ZnJtL0tjb25maWctMTQyLVxcdHRyaXN0YXRlIFxcXCJJUHNlYyBJUC1URlMvQUdHRlJBRyAoUkZDIDkzNDcpIGVuY2Fwc3VsYXRpb24gc3VwcG9ydFxcXCJcXG4tLVxcbm5ldC94ZnJtL0tjb25maWctMTU2LVxcbm5ldC94ZnJtL0tjb25maWc6MTU3OmNvbmZpZyBYRlJNX0VTUElOVENQXFxubmV0L3hmcm0vS2NvbmZpZy0xNTgtXFx0Ym9vbFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNTo1NS45ODY2NjEyN1oiLCJTZXEiOjM1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NzgxMTIxMDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBYRlJNIE1vZHVsZSBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBgWEZSTWAgaXMgZXNzZW50aWFsbHkgYSBoaWRkZW4gZmxhZywgYSBib29sZWFuLCBhY3RpdmF0ZWQgaW1wbGljaXRseSB3aGVuIG90aGVyIG9wdGlvbnMgbGlrZSBgSU5FVF9FU1BJTlRDUGAsIGBJTkVUNl9BSGAsIG9yIGBYRlJNX1VTRVJgIGFyZSBjaG9zZW4uIFRoaXMgaXMgZ29vZCB0byBrbm93OyBJIGRvbid0IG5lZWQgdG8gZXhwbGljaXRseSBkZWZpbmUgYFhGUk1gIGlmIHRoZSB1bmRlcmx5aW5nIGNvbXBvbmVudCBpcyBhbHJlYWR5IGluIHBsYXkuIE1ha2VzIHRoaW5ncyBjbGVhbmVyLlxuXG5Ob3csIGxldCdzIHRyYWNlIHRoZSByZWFjaGFibGUgY29kZS4gSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGNhbGwgcGF0aHMuIEZpcnN0LCBJJ20gY2hlY2tpbmcgYGVzcGludGNwX3JjdmAgYW5kIGBlc3BpbnRjcF9jbG9zZWAuIEFoLCBnb29kLCB0aGV5J3JlIHBhcnQgb2YgYGVzcGludGNwX3Byb3RgIGFzIGV4cGVjdGVkLiBUaGF0IG1ha2VzIHNlbnNlLiBOZXh0LCBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAuLi4gaXQncyBzdGF0aWMsIHNvIGl0J3Mgbm90IGEgZGlyZWN0IGVudHJ5IHBvaW50LiBIb3dldmVyLCBgeGZybV9vdXRwdXRgICppcyogZXhwb3J0ZWQsIHNvIHRoYXQgaXMgdGhlIGZ1bmN0aW9uIEkgbmVlZCB0byBmb2N1cyBvbi5cblxuTW92aW5nIG9uLCBgbmF0X2tlZXBhbGl2ZV93b3JrYCBpcyBhIHdvcmtxdWV1ZSBmdW5jdGlvbiwgYXMgSSBzdXNwZWN0ZWQuIE5vIHN1cnByaXNlcyB0aGVyZS4gVGhlbiwgSSdtIGV4YW1pbmluZyBgeGZybV9zdGF0ZV9jb25zdHJ1Y3RgLiBBZ2FpbiwgaXQncyBzdGF0aWMsIGJ1dCBgeGZybV9hZGRfc2FgIGlzIHRoZSBwdWJsaWNseSBhY2Nlc3NpYmxlIGVudHJ5IHBvaW50LCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHVuZGVyc3RhbmRpbmcgdGhlIG1vZHVsZSdzIGJlaGF2aW9yLlxuXG5GaW5hbGx5LCBJJ20gdmVyaWZ5aW5nIHRoZSBBSCBjb21wb25lbnRzLiBgYWg2X2lucHV0YCBhbmQgYGFoNl9vdXRwdXRgIGFyZSBzdGF0aWMgYXMgd2VsbCwgYnV0IHRoZXkgYXJlIHJlZ2lzdGVyZWQgYXMgaGFuZGxlcnMsIHNvIHRoZXkgYXJlIGNyaXRpY2FsLiBUaGUgc2FtZSBnb2VzIGZvciBgeGZybTZfaW5wdXRfYWRkcmAgd2hpY2ggaXMgZXhwb3J0ZWQuXG5cblNvIHRoZSBjb3JlIHN5bWJvbHMgSSdtIHRyYWNraW5nIGFyZTpcbiogICBgYWg2X2lucHV0YFxuKiAgIGBhaDZfb3V0cHV0YFxuKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYFxuKiAgIGBlc3BpbnRjcF9yY3ZgXG4qICAgYGVzcGludGNwX2Nsb3NlYFxuKiAgIGB4ZnJtX291dHB1dGBcbiogICBgeGZybV9hZGRfc2FgXG4qICAgYG5hdF9rZWVwYWxpdmVfd29ya2BcblxuSSBuZWVkIHRvIGNvbmZpcm0gYGVzcGludGNwX3JjdmAgaXMgdGhlIHNwZWNpZmljIGZ1bmN0aW9uIEknbSBsb29raW5nIGZvci4uLiBJJ2xsIGNoZWNrIGludG8gaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0NjIxLCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjAyLjc2Nzc4NTM4M1oiLCJTZXEiOjM2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc3MTE5NjY4OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJlc3BpbnRjcF9yY3ZcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3hmcm0vZXNwaW50Y3AuYz0yOT1zdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmMtNTYtXFxubmV0L3hmcm0vZXNwaW50Y3AuYzo1NzpzdGF0aWMgdm9pZCBlc3BpbnRjcF9yY3Yoc3RydWN0IHN0cnBhcnNlciAqc3RycCwgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG5uZXQveGZybS9lc3BpbnRjcC5jLTU4LXtcXG4tLVxcbm5ldC94ZnJtL2VzcGludGNwLmM9NDQxPXN0YXRpYyBpbnQgZXNwaW50Y3BfaW5pdF9zayhzdHJ1Y3Qgc29jayAqc2spXFxuLS1cXG5uZXQveGZybS9lc3BpbnRjcC5jLTQ0NC1cXHRzdHJ1Y3Qgc3RycF9jYWxsYmFja3MgY2IgPSB7XFxubmV0L3hmcm0vZXNwaW50Y3AuYzo0NDU6XFx0XFx0LnJjdl9tc2cgPSBlc3BpbnRjcF9yY3YsXFxubmV0L3hmcm0vZXNwaW50Y3AuYy00NDYtXFx0XFx0LnBhcnNlX21zZyA9IGVzcGludGNwX3BhcnNlLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNjowNS41Mzg5ODc4MzJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDI2Njc2ODIyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzczpcblxuKipJbnRlcm5hbCBDb2RlIFJldmlldzogUmVjZWl2ZSBDYWxsYmFjayBcdTAwMjYgTkFUIEtlZXBhbGl2ZSoqXG5cbk9rYXksIHNvIEknbSBwcmV0dHkgc3VyZSBgZXNwaW50Y3BfcmN2YCBpcyB0aGUgcmVjZWl2ZSBjYWxsYmFjayBmdW5jdGlvbiB3ZSdyZSBkZWFsaW5nIHdpdGguIE5lZWQgdG8gY29uZmlybSB0aGF0IHF1aWNrbHk7IGl0J3MgYSBjcml0aWNhbCBjb21wb25lbnQuXG5cbk5vdywgbGV0J3Mgc3dpdGNoIGdlYXJzIGFuZCBpbnZlc3RpZ2F0ZSBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhhdCdzIHRoZSBuZXh0IGxvZ2ljYWwgcGllY2UgdG8gY2hlY2ssIGFzIEkgc3VzcGVjdCB0aGVzZSB0d28gZnVuY3Rpb25zIGhhdmUgYSBjbG9zZSByZWxhdGlvbnNoaXAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUga2VlcGFsaXZlIG1lY2hhbmlzbSBpbnRlcmFjdHMgd2l0aCB0aGUgaW5jb21pbmcgZGF0YSBzdHJlYW0gdG8gZW5zdXJlIGV2ZXJ5dGhpbmcgaXMgZnVuY3Rpb25pbmcgY29ycmVjdGx5IGFuZCBlZmZpY2llbnRseS4gSSdsbCBuZWVkIHRvIGNoZWNrIHRoZSBsb2dpYywgdGhlIHRpbWluZywgYW5kIGFueSBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTY4MCwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjA5LjgwNTc1OTc0N1oiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjA4ODgxMjIzNSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJuYXRfa2VlcGFsaXZlX3dvcmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oPTMyPXN0cnVjdCBuZXRuc194ZnJtIHtcXG4tLVxcbmluY2x1ZGUvbmV0L25ldG5zL3hmcm0uaC04NS1cXHRzdHJ1Y3QgbXV0ZXggeGZybV9jZmdfbXV0ZXg7XFxuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oOjg2OlxcdHN0cnVjdCBkZWxheWVkX3dvcmtcXHRuYXRfa2VlcGFsaXZlX3dvcms7XFxuaW5jbHVkZS9uZXQvbmV0bnMveGZybS5oLTg3LX07XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0xNTg9ZW51bSB7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjItXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTYzOnN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IHtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjQtXFx0c3RydWN0IHhmcm1fc3RhdGUgKmJhdGNoW05BVF9LRUVQQUxJVkVfQkFUQ0hfU0laRV07XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0xNjktXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcwOnN0YXRpYyBpbnQgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3Qoc3RydWN0IHhmcm1fc3RhdGUgKngsIGludCBjb3VudCwgdm9pZCAqcHRyKVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE3MS17XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MTcyOlxcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4ICpjdHggPSBwdHI7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTczLVxcbi0tXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMTg0LVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NTpzdGF0aWMgdm9pZCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjE4NjpcXHRcXHRcXHRcXHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTE4Ny17XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMjQtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjI1OnN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjI2LXtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyMjc6XFx0c3RydWN0IG5hdF9rZWVwYWxpdmVfd29ya19jdHggY3R4O1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIyOC1cXHRzdHJ1Y3QgeGZybV9zdGF0ZV93YWxrIHdhbGs7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzQtXFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjM1OlxcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yMzYtXFx0eGZybV9zdGF0ZV93YWxrX2luaXQoXFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTIzOC1cXHRcXHRjdHgubnIgPSAwO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjIzOTpcXHRcXHRlcnIgPSB4ZnJtX3N0YXRlX3dhbGsobmV0LCBcXHUwMDI2d2FsaywgbmF0X2tlZXBhbGl2ZV93b3JrX2NvbGxlY3QsIFxcdTAwMjZjdHgpO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI0MC1cXHRcXHRsb2NhbF9iaF9kaXNhYmxlKCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQxLVxcdFxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBjdHgubnI7IGkrKykge1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjI0MjpcXHRcXHRcXHRuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKGN0eC5iYXRjaFtpXSwgXFx1MDAyNmN0eCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjQzLVxcdFxcdFxcdHhmcm1fc3RhdGVfcHV0KGN0eC5iYXRjaFtpXSk7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0yNDgtXFx0aWYgKGN0eC5uZXh0X3J1bilcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYzoyNDk6XFx0XFx0c2NoZWR1bGVfZGVsYXllZF93b3JrKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLFxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI1MC1cXHRcXHRcXHRcXHQgICAgICAoY3R4Lm5leHRfcnVuIC0gY3R4Lm5vdykgKiBIWik7XFxuLS1cXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYz0yODM9dm9pZCB4ZnJtX25hdF9rZWVwYWxpdmVfc3RhdGVfdXBkYXRlZChzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5MC1cXHRuZXQgPSB4c19uZXQoeCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6MjkxOlxcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcXHUwMDI2bmV0LVxcdTAwM2V4ZnJtLm5hdF9rZWVwYWxpdmVfd29yaywgMCk7XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmMtMjkyLX1cXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTI5ND1pbnQgX19uZXRfaW5pdCB4ZnJtX25hdF9rZWVwYWxpdmVfbmV0X2luaXQoc3RydWN0IG5ldCAqbmV0KVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5NS17XFxubmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmM6Mjk2OlxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrLCBuYXRfa2VlcGFsaXZlX3dvcmspO1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jLTI5Ny1cXHRyZXR1cm4gMDtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jPTMwMD1pbnQgeGZybV9uYXRfa2VlcGFsaXZlX25ldF9maW5pKHN0cnVjdCBuZXQgKm5ldClcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDEte1xcbm5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jOjMwMjpcXHRkaXNhYmxlX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZuZXQtXFx1MDAzZXhmcm0ubmF0X2tlZXBhbGl2ZV93b3JrKTtcXG5uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYy0zMDMtXFx0cmV0dXJuIDA7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjExLjg5NDU3Nzk3MloiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU3NTYyMDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIHByZXNlbnRlZCBhcyBpZiBJJ20gaGF2aW5nIGl0OlxuXG4qKkRpZ2dpbmcgaW50byB0aGUgTkFUIEtlZXBhbGl2ZSBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHNvIEknbSBwcmV0dHkgc3VyZSB0aGF0IGBuYXRfa2VlcGFsaXZlX3dvcmtgIGlzIHRoZSBhY3R1YWwgZnVuY3Rpb24gaG9va2VkIGludG8gdGhlIHdvcmtxdWV1ZSBmb3IgaGFuZGxpbmcgTkFUIGtlZXBhbGl2ZSB0YXNrcy4gSSBuZWVkIHRvIGJlIGFic29sdXRlbHkgY2VydGFpbiB0aG91Z2gsIHNvIEknbGwgdHJ1c3QgbXkgZ3V0IGZvciBub3csIGJ1dCBJIHdhbnQgdG8gdmVyaWZ5IHRoYXQuXG5cbk5leHQgSSdsbCBjaGVjayBgeGZybV9hZGRfc2FgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzMyMSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjE0Ljk1MjE0MzEzM1oiLCJTZXEiOjQwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA1MTc5OTYyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJ4ZnJtX2FkZF9zYVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQveGZybS94ZnJtX3VzZXIuYz05MDc9c3RhdGljIHN0cnVjdCB4ZnJtX3N0YXRlICp4ZnJtX3N0YXRlX2NvbnN0cnVjdChzdHJ1Y3QgbmV0ICpuZXQsXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDM4LVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjEwMzk6c3RhdGljIGludCB4ZnJtX2FkZF9zYShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3Qgbmxtc2doZHIgKm5saCxcXG5uZXQveGZybS94ZnJtX3VzZXIuYy0xMDQwLVxcdFxcdCAgICAgICBzdHJ1Y3QgbmxhdHRyICoqYXR0cnMsIHN0cnVjdCBuZXRsaW5rX2V4dF9hY2sgKmV4dGFjaylcXG4tLVxcbm5ldC94ZnJtL3hmcm1fdXNlci5jPTI5Mzc9c3RhdGljIGludCB4ZnJtX2FkZF9wb2xfZXhwaXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzAwMy1cXG5uZXQveGZybS94ZnJtX3VzZXIuYzozMDA0OnN0YXRpYyBpbnQgeGZybV9hZGRfc2FfZXhwaXJlKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBubG1zZ2hkciAqbmxoLFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTMwMDUtXFx0XFx0XFx0ICAgICAgc3RydWN0IG5sYXR0ciAqKmF0dHJzLFxcbi0tXFxubmV0L3hmcm0veGZybV91c2VyLmM9Mzc0MD1zdGF0aWMgY29uc3Qgc3RydWN0IHhmcm1fbGluayB7XFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzQ4LX0geGZybV9kaXNwYXRjaFtYRlJNX05SX01TR1RZUEVTXSA9IHtcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzQ5OlxcdFtYRlJNX01TR19ORVdTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fYWRkX3NhICAgICAgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NTAtXFx0W1hGUk1fTVNHX0RFTFNBICAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9kZWxfc2EgICAgICAgIH0sXFxuLS1cXG5uZXQveGZybS94ZnJtX3VzZXIuYy0zNzYxLVxcdFtYRlJNX01TR19BQ1FVSVJFICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fYWRkX2FjcXVpcmUgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jOjM3NjI6XFx0W1hGUk1fTVNHX0VYUElSRSAgICAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfc2FfZXhwaXJlIH0sXFxubmV0L3hmcm0veGZybV91c2VyLmMtMzc2My1cXHRbWEZSTV9NU0dfVVBEUE9MSUNZICAgLSBYRlJNX01TR19CQVNFXSA9IHsgLmRvaXQgPSB4ZnJtX2FkZF9wb2xpY3kgICAgfSxcXG5uZXQveGZybS94ZnJtX3VzZXIuYzozNzY0OlxcdFtYRlJNX01TR19VUERTQSAgICAgICAtIFhGUk1fTVNHX0JBU0VdID0geyAuZG9pdCA9IHhmcm1fYWRkX3NhICAgICAgICB9LFxcbm5ldC94ZnJtL3hmcm1fdXNlci5jLTM3NjUtXFx0W1hGUk1fTVNHX1BPTEVYUElSRSAgIC0gWEZSTV9NU0dfQkFTRV0gPSB7IC5kb2l0ID0geGZybV9hZGRfcG9sX2V4cGlyZX0sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjE4LjAwMzk0ODY2MloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4MTkwNDY3Mzk1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIHRoZSBTZWN1cml0eSBBc3NvY2lhdGlvbiBNb2R1bGUqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGNvbmZpcm1lZCB0aGF0IGB4ZnJtX2FkZF9zYWAgaXMgaW5kZWVkIHRoZSBuZXRsaW5rIGNhbGxiYWNrIHdlJ3JlIGludGVyZXN0ZWQgaW4uIE5vdywgSSBuZWVkIHRvIGZvY3VzIG9uIHRoZXNlIHN5bWJvbHM6IGBhaDZfaW5wdXRgLCBgYWg2X291dHB1dGAsIGB4ZnJtNl9pbnB1dF9hZGRyYCwgYGVzcGludGNwX3JjdmAsIGBlc3BpbnRjcF9jbG9zZWAsIGB4ZnJtX291dHB1dGAsIGB4ZnJtX2FkZF9zYWAsIGFuZCBgbmF0X2tlZXBhbGl2ZV93b3JrYC4gVGhpcyBnaXZlcyBtZSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIG1hcHBpbmcgdGhlIGtleSBmdW5jdGlvbnMgYW5kIGhvdyB0aGV5IHJlbGF0ZS5cblxuTmV4dCwgSSBuZWVkIHRvIGNoZWNrIHRoZSBjb25maWd1cmF0aW9ucy4gVGhlIHJlbGV2YW50IG9uZXMgc2VlbSB0byBiZSBgSU5FVDZfQUhgLCBgSU5FVF9FU1BJTlRDUGAsIGFuZCBgWEZSTV9VU0VSYC4gSSdsbCBjcm9zcy1yZWZlcmVuY2UgdGhlc2Ugd2l0aCB0aGUgc3ltYm9scyB0byBlc3RhYmxpc2ggdGhlaXIgZGVwZW5kZW5jaWVzIGFuZCB1bmRlcnN0YW5kIHdoaWNoIGZlYXR1cmVzIGFyZSBlbmFibGVkLlxuXG5KdXN0IHRvIGJlIGFic29sdXRlbHkgc3VyZSwgSSdsbCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYGFoNl9pbnB1dGAgYW5kIGBhaDZfb3V0cHV0YC4gVGhlc2UgZnVuY3Rpb25zIGFyZSBjcml0aWNhbCBmb3IgQUggcHJvY2Vzc2luZyBpbiBJUHY2LCBzbyBJIHNob3VsZCBlbnN1cmUgSSB1bmRlcnN0YW5kIHRoZWlyIGZ1bmN0aW9uIGNsZWFybHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTk5LCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ3LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjI2LjE5NDQxODI5N1oiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzA5MzE2Nzg0NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgYWg2X2lucHV0XCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9pcHY2L2FoNi5jPTM1MD1zdGF0aWMgaW50IGFoNl9vdXRwdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXFxuLS1cXG5uZXQvaXB2Ni9haDYuYy00NzQtXFxubmV0L2lwdjYvYWg2LmM6NDc1OnN0YXRpYyB2b2lkIGFoNl9pbnB1dF9kb25lKHZvaWQgKmRhdGEsIGludCBlcnIpXFxubmV0L2lwdjYvYWg2LmMtNDc2LXtcXG4tLVxcbm5ldC9pcHY2L2FoNi5jLTUxOC1cXG5uZXQvaXB2Ni9haDYuYzo1MTk6c3RhdGljIGludCBhaDZfaW5wdXQoc3RydWN0IHhmcm1fc3RhdGUgKngsIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L2lwdjYvYWg2LmMtNTIwLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzY6MjkuMjg3NTkwOTgxWiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyNjI2OTEzNTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBzdW1tYXJ5LCB0YWtpbmcgb24gdGhlIHBlcnNvbmEgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgQ29yZSBGdW5jdGlvbmFsaXR5KipcblxuUmlnaHQsIHNvLCB0YWtpbmcgc3RvY2sgb2YgdGhpbmdzLi4uIFllcywgSSdtIHByZXR0eSBjZXJ0YWluIHRob3NlIGFyZSBpbmRlZWQgdGhlICpwcmltYXJ5KiBmdW5jdGlvbnMgd2UncmUgZGVhbGluZyB3aXRoIGhlcmUuIE5vIHF1ZXN0aW9uIGFib3V0IGl0LiBCdXQsIHlvdSBrbm93IG1lLCBJIGxpa2UgdG8gYmUgYWJzb2x1dGVseSBjZXJ0YWluIGJlZm9yZSBJIG1vdmUgZm9yd2FyZC4gQSBzb2xpZCB2ZXJpZmljYXRpb24gaXMgYWx3YXlzIHdpc2UsIHNvIGxldCdzIGp1c3QgdGFrZSBhIHF1aWNrIHBlZWsgYXQgYHhmcm1fb3V0cHV0YCBhZ2FpbiwganVzdCB0byBiZSAqY29tcGxldGVseSogc3VyZSB3ZSBoYXZlbid0IG1pc3NlZCBhbnl0aGluZyBjcnVjaWFsIGluIG91ciBpbml0aWFsIGFuYWx5c2lzLiBJdCBuZXZlciBodXJ0cyB0byBkb3VibGUtY2hlY2sgdGhlc2UgY3JpdGljYWwgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyODc4NywiT3V0cHV0VG9rZW5zIjoyNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjMzLjU1MDI4NjAzN1oiLCJTZXEiOjQ0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzEyNDg5MjE2NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJeKHN0YXRpYyApPyhpbnR8dm9pZCkgeGZybV9vdXRwdXRcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiaW5jbHVkZS9uZXQveGZybS5oPTE4MDM9aW50IHhmcm1fdHJhbnNfcXVldWUoc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4tLVxcbmluY2x1ZGUvbmV0L3hmcm0uaC0xODA1LVxcdFxcdFxcdFxcdCAgIHN0cnVjdCBza19idWZmICopKTtcXG5pbmNsdWRlL25ldC94ZnJtLmg6MTgwNjppbnQgeGZybV9vdXRwdXRfcmVzdW1lKHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYiwgaW50IGVycik7XFxuaW5jbHVkZS9uZXQveGZybS5oOjE4MDc6aW50IHhmcm1fb3V0cHV0KHN0cnVjdCBzb2NrICpzaywgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuaW5jbHVkZS9uZXQveGZybS5oLTE4MDgtaW50IHhmcm00X3R1bm5lbF9jaGVja19zaXplKHN0cnVjdCBza19idWZmICpza2IpO1xcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy0yNi1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjI3OnN0YXRpYyBpbnQgeGZybV9vdXRwdXQyKHN0cnVjdCBuZXQgKm5ldCwgc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKTtcXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTI4LXN0YXRpYyBpbnQgeGZybV9pbm5lcl9leHRyYWN0X291dHB1dChzdHJ1Y3QgeGZybV9zdGF0ZSAqeCwgc3RydWN0IHNrX2J1ZmYgKnNrYik7XFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jPTQ5Nj1FWFBPUlRfU1lNQk9MX0dQTChwa3RnZW5feGZybV9vdXRlcl9tb2RlX291dHB1dCk7XFxuLS1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jLTQ5OC1cXG5uZXQveGZybS94ZnJtX291dHB1dC5jOjQ5OTpzdGF0aWMgaW50IHhmcm1fb3V0cHV0X29uZShzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTAwLXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTkyLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM6NTkzOmludCB4ZnJtX291dHB1dF9yZXN1bWUoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBpbnQgZXJyKVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNTk0LXtcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM9NjIyPXN0YXRpYyBpbnQgeGZybV9kZXZfZGlyZWN0X291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCB4ZnJtX3N0YXRlICp4LFxcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTMtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2NTQ6c3RhdGljIGludCB4ZnJtX291dHB1dDIoc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTUte1xcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NTgtXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYzo2NTk6c3RhdGljIGludCB4ZnJtX291dHB1dF9nc28oc3RydWN0IG5ldCAqbmV0LCBzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy02NjAte1xcbi0tXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYz02OTc9c3RhdGljIHZvaWQgeGZybV9nZXRfaW5uZXJfaXBwcm90byhzdHJ1Y3Qgc2tfYnVmZiAqc2tiLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeClcXG4tLVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmMtNzQ3LVxcbm5ldC94ZnJtL3hmcm1fb3V0cHV0LmM6NzQ4OmludCB4ZnJtX291dHB1dChzdHJ1Y3Qgc29jayAqc2ssIHN0cnVjdCBza19idWZmICpza2IpXFxubmV0L3hmcm0veGZybV9vdXRwdXQuYy03NDkte1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNjozNi42NzUxODE5NDJaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTE3NDgzODEzODUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTZWN1cml0eSBJbXBsaWNhdGlvbnMgb2YgVGhpcyBQYXRjaCBTZXJpZXMqKlxuXG5Pa2F5LCBzbyBJJ3ZlIGdvdCB0aGlzIHBhdGNoIHNlcmllcyBpbiBmcm9udCBvZiBtZSwgYW5kIG15IGltbWVkaWF0ZSBmb2N1cyBpcyBvbiBwb3RlbnRpYWwgc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzIHdpdGhpbiB0aGUgSVB2NiBhbmQgSVBzZWMvWEZSTSBuZXR3b3JraW5nIHN0YWNrLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpcyB0byBtZXRob2RpY2FsbHkgaWRlbnRpZnkgdGhlIGtleSBmdW5jdGlvbnMgdG91Y2hlZCBieSB0aGUgY2hhbmdlcy4gUmlnaHQgbm93LCBJJ20gdmVyaWZ5aW5nIHRoZSBmdW5jdGlvbiBuYW1lcywganVzdCB0byBiZSBzdXJlIEknbSB1c2luZyB0aGUgY29ycmVjdCBpZGVudGlmaWVycy4gKmB4ZnJtX291dHB1dGAqIGxvb2tzIHJpZ2h0LCBJIGNvbmZpcm0gKmBuYXRfa2VlcGFsaXZlX3dvcmtgKiBpcyB0aGUgY29ycmVjdCBuYW1lLi4uIGFuZCAqYHhmcm1fYWRkX3NhYCosICpgZXNwaW50Y3BfY2xvc2VgKiwgKmBlc3BpbnRjcF9yY3ZgKiwgKmB4ZnJtNl9pbnB1dF9hZGRyYCosICpgYWg2X2lucHV0YCogYW5kICpgYWg2X291dHB1dGAqIGFyZSBhbGwgdmVyaWZpZWQuXG5cblRoZSByZWFzb24gSSdtIGRvaW5nIHRoaXMgaXMgYmVjYXVzZSB0aGUgcGF0Y2ggZGVzY3JpcHRpb24gaW5kaWNhdGVzIGZ1bmN0aW9uYWwgY2hhbmdlcyB3aXRoaW4gdGhlIGNvcmUgb2YgdGhlIG5ldHdvcmsgc3RhY2suIFNwZWNpZmljYWxseSwgdGhlcmUncyBhIGZpeCBmb3IgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgLCB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIHJvdXRpbmcgc2VjdXJpdHkuIFRoZXJlIGlzIGFsc28gYSBkZXB0aCBjaGVjayBmaXggaW4gYHhmcm02X2lucHV0X2FkZHJgLiBBIG51bGwgcG9pbnRlciBjaGVjayBpcyBiZWluZyBhZGRlZCB0byBgc2tiLVx1MDAzZWRldmAgd2l0aGluIGBoYW5kbGVfZXNwYCwgd2hpY2ggaXMgYSBjb21tb24gc291cmNlIG9mIGV4cGxvaXRhYmxlIGVycm9ycyBpZiBtaXNoYW5kbGVkLiBSZXBsYWNpbmcgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAgaXMgd29ydGggaW52ZXN0aWdhdGluZyBmb3IgcG90ZW50aWFsIHJhY2UgY29uZGl0aW9ucy4gUmV3cml0aW5nIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCBpcyBzb21ldGhpbmcgdGhhdCBzaG91bGQgYmUgdGVzdGVkLCBhcyBpdCBjb3VsZCBoYXZlIHN1YnRsZSBlZmZlY3RzIG9uIHNlY3VyaXR5LiBJIGFsc28gc2VlIGEgZG91YmxlLWZyZWUgcmVtb3ZlZCBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIHdoaWNoIGlzIGFuIGV4cGxvaXRhYmxlIG1lbW9yeSBjb3JydXB0aW9uIGlzc3VlLCBhbmQgYSBmaXggaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YCBmb3IgYSBmaWVsZCBjaGVjay4gVGhlc2UgYXJlIGFsbCBjcml0aWNhbCBhcmVhcyBvZiB0aGUga2VybmVsLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGRlZmluaXRlbHkgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljIGFuZCB0aGVyZWZvcmUgaGlnaC12YWx1ZSB0YXJnZXRzIGZvciBmdXp6aW5nLlxuXG5NeSBwcmltYXJ5IGZvY3VzIGFyZWFzIGZvciBmdXp6aW5nIHdpbGwgYmU6XG5cbiogICBgYWg2X2lucHV0YFxuKiAgIGBhaDZfb3V0cHV0YFxuKiAgIGB4ZnJtNl9pbnB1dF9hZGRyYFxuKiAgIGBlc3BpbnRjcF9yY3ZgXG4qICAgYGVzcGludGNwX2Nsb3NlYFxuKiAgIGB4ZnJtX291dHB1dGBcbiogICBgeGZybV9hZGRfc2FgXG4qICAgYG5hdF9rZWVwYWxpdmVfd29ya2BcblxuSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWd1cmF0aW9ucyBlbmFibGVkLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIHRoZSBjb25maWdzIEkgbmVlZCBhcmU6IGBJTkVUNl9BSGAsIGBJTkVUX0VTUElOVENQYCwgYW5kIGBYRlJNX1VTRVJgLlxuXG5Pa2F5LCBJJ20gcmVhZHkgdG8gY2FsbCBgc2V0LXJlc3VsdHNgLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTc1NSwiT3V0cHV0VG9rZW5zIjoyOTQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0ODksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzY6NDguNDIzNTY3Mjg3WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQ3NDA3NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJJTkVUNl9BSFwiLFxuICAgIFwiSU5FVF9FU1BJTlRDUFwiLFxuICAgIFwiWEZSTV9VU0VSXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwiYWg2X2lucHV0XCIsXG4gICAgXCJhaDZfb3V0cHV0XCIsXG4gICAgXCJ4ZnJtNl9pbnB1dF9hZGRyXCIsXG4gICAgXCJlc3BpbnRjcF9yY3ZcIixcbiAgICBcImVzcGludGNwX2Nsb3NlXCIsXG4gICAgXCJ4ZnJtX291dHB1dFwiLFxuICAgIFwieGZybV9hZGRfc2FcIixcbiAgICBcIm5hdF9rZWVwYWxpdmVfd29ya1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIHNlcmllcyBjb250YWlucyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIElQdjYgYW5kIElQc2VjL1hGUk0gbmV0d29ya2luZyBzdGFjay4gSXQgZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBjaGVjayBpbiBgaXB2Nl9yZWFycmFuZ2VfcnRoZHJgIGFuZCBwcm9wYWdhdGVzIHRoZSBlcnJvciwgZml4ZXMgYSBkZXB0aCBjaGVjayBpbiBgeGZybTZfaW5wdXRfYWRkcmAsIGFkZHMgYSBOVUxMIHBvaW50ZXIgY2hlY2sgZm9yIGBza2ItXFx1MDAzZWRldmAgaW4gYGhhbmRsZV9lc3BgIChFU1AgaW4gVENQKSwgcmVwbGFjZXMgYGJhcnJpZXIoKWAgd2l0aCBgc3luY2hyb25pemVfcmN1KClgIGluIGBlc3BpbnRjcF9jbG9zZWAsIHJld3JpdGVzIHRoZSBOQVQga2VlcGFsaXZlIHdvcmtxdWV1ZSB0byB1c2UgYmF0Y2hpbmcgaW4gYHhmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgcmVtb3ZlcyBhIGRvdWJsZS1mcmVlIGluIGB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0YCwgYW5kIGZpeGVzIGEgZmllbGQgY2hlY2sgaW4gYHhmcm1fc3RhdGVfY29uc3RydWN0YC4gVGhlc2UgYXJlIGFsbCByZWFjaGFibGUgY29yZSBrZXJuZWwgbmV0d29ya2luZyBhbmQgSVBzZWMgbG9naWMsIHdoaWNoIGFyZSBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmcuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiSU5FVDZfQUhcIixcbiAgICBcIklORVRfRVNQSU5UQ1BcIixcbiAgICBcIlhGUk1fVVNFUlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImFoNl9pbnB1dFwiLFxuICAgIFwiYWg2X291dHB1dFwiLFxuICAgIFwieGZybTZfaW5wdXRfYWRkclwiLFxuICAgIFwiZXNwaW50Y3BfcmN2XCIsXG4gICAgXCJlc3BpbnRjcF9jbG9zZVwiLFxuICAgIFwieGZybV9vdXRwdXRcIixcbiAgICBcInhmcm1fYWRkX3NhXCIsXG4gICAgXCJuYXRfa2VlcGFsaXZlX3dvcmtcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29udGFpbnMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBJUHY2IGFuZCBJUHNlYy9YRlJNIG5ldHdvcmtpbmcgc3RhY2suIEl0IGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgY2hlY2sgaW4gYGlwdjZfcmVhcnJhbmdlX3J0aGRyYCBhbmQgcHJvcGFnYXRlcyB0aGUgZXJyb3IsIGZpeGVzIGEgZGVwdGggY2hlY2sgaW4gYHhmcm02X2lucHV0X2FkZHJgLCBhZGRzIGEgTlVMTCBwb2ludGVyIGNoZWNrIGZvciBgc2tiLVxcdTAwM2VkZXZgIGluIGBoYW5kbGVfZXNwYCAoRVNQIGluIFRDUCksIHJlcGxhY2VzIGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYCBpbiBgZXNwaW50Y3BfY2xvc2VgLCByZXdyaXRlcyB0aGUgTkFUIGtlZXBhbGl2ZSB3b3JrcXVldWUgdG8gdXNlIGJhdGNoaW5nIGluIGB4ZnJtX25hdF9rZWVwYWxpdmUuY2AsIHJlbW92ZXMgYSBkb3VibGUtZnJlZSBpbiBgeGZybV9kZXZfZGlyZWN0X291dHB1dGAsIGFuZCBmaXhlcyBhIGZpZWxkIGNoZWNrIGluIGB4ZnJtX3N0YXRlX2NvbnN0cnVjdGAuIFRoZXNlIGFyZSBhbGwgcmVhY2hhYmxlIGNvcmUga2VybmVsIG5ldHdvcmtpbmcgYW5kIElQc2VjIGxvZ2ljLCB3aGljaCBhcmUgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xOFQxMDozNjo0OC41NzA5ODIwMzlaIiwiU2VxIjo0NywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExNjUxODI5Nzk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMThUMTA6MzY6NDguNTcxNTEyNjM5WiIsIlNlcSI6NDgsIk5lc3RpbmciOjIsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjExNjUxMjkzNjg3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeVxuZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmRcbmRldGVybWluZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGp1c3RpZnkgc3Bhd25pbmcgYSBkZWRpY2F0ZWQgS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcilcbmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLlxuXG5DUklUSUNBTCBESVNUSU5DVElPTiBCRVRXRUVOIEtBU0FOIEFORCBLTVNBTjpcbi0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZVxuICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU5cbiAgKG91dC1vZi1ib3VuZHMgYWNjZXNzZXMsIHVzZS1hZnRlci1mcmVlLCBkb3VibGUgZnJlZSwgaW52YWxpZCBmcmVlKSwgTE9DS0RFUFxuICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLlxuLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCxcbiAgb3IgcGFnZSBhbGxvY2F0aW9ucykgYW5kIGtlcm5lbC10by11c2VyIG1lbW9yeSBpbmZvLWxlYWtzLlxuXG5SdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLFxuTE9DS0RFUCwgT1IgT1RIRVIgU1RBTkRBUkQgQlVHIERFVEVDVE9SUy5cbkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFlcbnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzXG50aGF0IGFyZSBkZXRlY3RlZCBPTkxZIGJ5IEtNU0FOLlxuXG5Mb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdFxudW5pbml0aWFsaXplZCBmaWVsZCBhY2Nlc3NlcyBvciBuZXcgYnVmZmVyIGFsbG9jYXRpb25zIGFyZSBhZGRlZCBpbiB0aGUgZGlmZiBpdHNlbGYsXG5hIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXNcbnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nXG51bmluaXRpYWxpemVkIHN0YWNrL2hlYXAgbWVtb3J5IHRvIGJlIHJlYWQsIGNvcGllZCB0byB1c2VyIHNwYWNlLCBvciB1c2VkIGluIGNvbnRyb2xcbmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSxcbmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6XG4xLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYlxuICAgYXR0cmlidXRlcywgaW9jdGwgb3V0cHV0IGFyZ3VtZW50cywgc29ja2V0IG9wdGlvbnMsIG9yIEJQRiBidWZmZXJzKSB3aGVyZSBmaWVsZHNcbiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuXG4yLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzXG4gICBvciBzdHJ1Y3QgZmllbGRzLlxuMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkc1xuICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy5cbjQuIEJvdW5kcyBjaGVja3MsIGxlbmd0aHMsIG9yIGxvZ2ljIGluIGEgd2F5IHRoYXQgYWxsb3dzIHN1cnJvdW5kaW5nIGNvZGUgdG8gYWNjZXNzXG4gICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuXG5cblNldCBOZWVkc0tNU0FOPWZhbHNlIElGOlxuLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlclxuICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHRcbiAgYnkgS0FTQU4sIExPQ0tERVAsIG9yIHN0YW5kYXJkIGJ1ZyBkZXRlY3RvcnMpLlxuLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZFxuICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuXG4tIFRoZSBwYXRjaCBkb2VzIG5vdCBpbnRyb2R1Y2UgYW55IHJpc2sgb2YgdW5pbml0aWFsaXplZCBtZW1vcnkgdXNhZ2Ugb3IgaW5mby1sZWFrcy5cblxuVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZVxuZGV0YWlsZWQgS01TQU5SZWFzb25pbmcgY29udHJhc3RpbmcgS0FTQU4gdnMgS01TQU4gYXBwbGljYWJpbGl0eSBmb3IgdGhpcyBwYXRjaC5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGE0MDYzZTJjYzBjMTkwZTUwYTFjOWQ1MzNjY2Q5OTAxOGE5Yzc2ZWRcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgVHVlIEF1ZyAxOCAxMDozNDowNiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL25ldC9pcHY2L2FoNi5jIGIvbmV0L2lwdjYvYWg2LmNcbmluZGV4IDc2ZjdhMmRlOTEwOGUuLmM5NmY3ZTBkMGE0ODEgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni9haDYuY1xuKysrIGIvbmV0L2lwdjYvYWg2LmNcbkBAIC0yMzIsMjYgKzIzMiwyOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9kZXN0b3B0KHN0cnVjdCBpcHY2aGRyICppcGgsIHN0cnVjdCBpcHY2X29wdF9oZHIgKmRlc1xuICAqXHRSZWFycmFuZ2UgdGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaW4gQGlwaCBhbmQgdGhlIGFkZHJlc3NlcyBpbiBAcnRoZHJcbiAgKlx0c28gdGhhdCB0aGV5IGFwcGVhciBpbiB0aGUgb3JkZXIgdGhleSB3aWxsIGF0IHRoZSBmaW5hbCBkZXN0aW5hdGlvbi5cbiAgKlx0U2VlIEFwcGVuZGl4IEEyIG9mIFJGQyAyNDAyIGZvciBkZXRhaWxzLlxuKyAqXG4rICogUmV0dXJuOiAwIG9uIHN1Y2Nlc3MsIC1FSU5WQUwgaWYgc2VnbWVudHNfbGVmdCBleGNlZWRzIHRoZSBudW1iZXIgb2ZcbisgKiBhZGRyZXNzZXMgZGVzY3JpYmVkIGJ5IGhkcmxlbi5cbiAgKi9cbi1zdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuK3N0YXRpYyBpbnQgaXB2Nl9yZWFycmFuZ2VfcnRoZHIoc3RydWN0IGlwdjZoZHIgKmlwaCwgc3RydWN0IGlwdjZfcnRfaGRyICpydGhkcilcbiB7XG4tXHRpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4rXHR1bnNpZ25lZCBpbnQgc2VnbWVudHMsIHNlZ21lbnRzX2xlZnQ7XG4gXHRzdHJ1Y3QgaW42X2FkZHIgKmFkZHJzO1xuIFx0c3RydWN0IGluNl9hZGRyIGZpbmFsX2FkZHI7XG4gXG4gXHRzZWdtZW50c19sZWZ0ID0gcnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdDtcbiBcdGlmIChzZWdtZW50c19sZWZ0ID09IDApXG4tXHRcdHJldHVybjtcbi1cdHJ0aGRyLVx1MDAzZXNlZ21lbnRzX2xlZnQgPSAwO1xuK1x0XHRyZXR1cm4gMDtcbiBcbi1cdC8qIFRoZSB2YWx1ZSBvZiBydGhkci1cdTAwM2VoZHJsZW4gaGFzIGJlZW4gdmVyaWZpZWQgZWl0aGVyIGJ5IHRoZSBzeXN0ZW1cbi1cdCAqIGNhbGwgaWYgaXQgaXMgbG9jYWxseSBnZW5lcmF0ZWQsIG9yIGJ5IGlwdjZfcnRoZHJfcmN2KCkgZm9yIGluY29taW5nXG4tXHQgKiBwYWNrZXRzLiAgU28gd2UgY2FuIGFzc3VtZSB0aGF0IGl0IGlzIGV2ZW4gYW5kIHRoYXQgc2VnbWVudHMgaXNcbi1cdCAqIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byBzZWdtZW50c19sZWZ0LlxuLVx0ICpcbi1cdCAqIEZvciB0aGUgc2FtZSByZWFzb24gd2UgY2FuIGFzc3VtZSB0aGF0IHRoaXMgb3B0aW9uIGlzIG9mIHR5cGUgMC5cbitcdC8qIFJhdyBsb2NhbGx5IGdlbmVyYXRlZCBwYWNrZXRzIGNhbiByZWFjaCBBSDYgd2l0aG91dCB0aGUgaW52YXJpYW50XG4rXHQgKiByZXF1aXJlZCBieSB0aGUgcnQwLXN0eWxlIGFkZHJlc3MgcmVhcnJhbmdlbWVudCBiZWxvdy5cbiBcdCAqL1xuIFx0c2VnbWVudHMgPSBydGhkci1cdTAwM2VoZHJsZW4gXHUwMDNlXHUwMDNlIDE7XG4rXHRpZiAoc2VnbWVudHNfbGVmdCBcdTAwM2Ugc2VnbWVudHMpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuK1x0cnRoZHItXHUwMDNlc2VnbWVudHNfbGVmdCA9IDA7XG4gXG4gXHRhZGRycyA9ICgoc3RydWN0IHJ0MF9oZHIgKilydGhkciktXHUwMDNlYWRkcjtcbiBcdGZpbmFsX2FkZHIgPSBhZGRyc1tzZWdtZW50cyAtIDFdO1xuQEAgLTI2MSw2ICsyNjMsOCBAQCBzdGF0aWMgdm9pZCBpcHY2X3JlYXJyYW5nZV9ydGhkcihzdHJ1Y3QgaXB2NmhkciAqaXBoLCBzdHJ1Y3QgaXB2Nl9ydF9oZHIgKnJ0aGRyKVxuIFxuIFx0YWRkcnNbMF0gPSBpcGgtXHUwMDNlZGFkZHI7XG4gXHRpcGgtXHUwMDNlZGFkZHIgPSBmaW5hbF9hZGRyO1xuK1xuK1x0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyBpbnQgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnMoc3RydWN0IGlwdjZoZHIgKmlwaCwgaW50IGxlbiwgaW50IGRpcilcbkBAIC0yNzMsNiArMjc3LDcgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuIFx0fSBleHRoZHIgPSB7IC5pcGggPSBpcGggfTtcbiBcdGNoYXIgKmVuZCA9IGV4dGhkci5yYXcgKyBsZW47XG4gXHRpbnQgbmV4dGhkciA9IGlwaC1cdTAwM2VuZXh0aGRyO1xuK1x0aW50IGVycjtcbiBcbiBcdGV4dGhkci5pcGgrKztcbiBcbkBAIC0yOTIsNyArMjk3LDkgQEAgc3RhdGljIGludCBpcHY2X2NsZWFyX211dGFibGVfb3B0aW9ucyhzdHJ1Y3QgaXB2NmhkciAqaXBoLCBpbnQgbGVuLCBpbnQgZGlyKVxuIFx0XHRcdGJyZWFrO1xuIFxuIFx0XHRjYXNlIE5FWFRIRFJfUk9VVElORzpcbi1cdFx0XHRpcHY2X3JlYXJyYW5nZV9ydGhkcihpcGgsIGV4dGhkci5ydGgpO1xuK1x0XHRcdGVyciA9IGlwdjZfcmVhcnJhbmdlX3J0aGRyKGlwaCwgZXh0aGRyLnJ0aCk7XG4rXHRcdFx0aWYgKGVycilcbitcdFx0XHRcdHJldHVybiBlcnI7XG4gXHRcdFx0YnJlYWs7XG4gXG4gXHRcdGRlZmF1bHQ6XG5kaWZmIC0tZ2l0IGEvbmV0L2lwdjYveGZybTZfaW5wdXQuYyBiL25ldC9pcHY2L3hmcm02X2lucHV0LmNcbmluZGV4IDg5ZDA0NDNiNTMwNzMuLjA3ZWRlZjI1ODk4NDQgMTAwNjQ0XG4tLS0gYS9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG4rKysgYi9uZXQvaXB2Ni94ZnJtNl9pbnB1dC5jXG5AQCAtMjQ3LDcgKzI0Nyw3IEBAIGludCB4ZnJtNl9pbnB1dF9hZGRyKHN0cnVjdCBza19idWZmICpza2IsIHhmcm1fYWRkcmVzc190ICpkYWRkcixcbiBcdFx0Z290byBkcm9wO1xuIFx0fVxuIFxuLVx0aWYgKDEgKyBzcC1cdTAwM2VsZW4gPT0gWEZSTV9NQVhfREVQVEgpIHtcbitcdGlmIChzcC1cdTAwM2VsZW4gXHUwMDNlPSBYRlJNX01BWF9ERVBUSCkge1xuIFx0XHRYRlJNX0lOQ19TVEFUUyhuZXQsIExJTlVYX01JQl9YRlJNSU5CVUZGRVJFUlJPUik7XG4gXHRcdGdvdG8gZHJvcDtcbiBcdH1cbmRpZmYgLS1naXQgYS9uZXQveGZybS9lc3BpbnRjcC5jIGIvbmV0L3hmcm0vZXNwaW50Y3AuY1xuaW5kZXggMzc0ZTFiOTY0NDM4My4uNjc0YWVkYzVhZjVhMiAxMDA2NDRcbi0tLSBhL25ldC94ZnJtL2VzcGludGNwLmNcbisrKyBiL25ldC94ZnJtL2VzcGludGNwLmNcbkBAIC0zNyw2ICszNywxMSBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcbiBcbiBcdHJjdV9yZWFkX2xvY2soKTtcbiBcdHNrYi1cdTAwM2VkZXYgPSBkZXZfZ2V0X2J5X2luZGV4X3JjdShzb2NrX25ldChzayksIHNrYi1cdTAwM2Vza2JfaWlmKTtcbitcdGlmICghc2tiLVx1MDAzZWRldikge1xuK1x0XHRYRlJNX0lOQ19TVEFUUyhzb2NrX25ldChzayksIExJTlVYX01JQl9YRlJNSU5FUlJPUik7XG4rXHRcdGtmcmVlX3NrYihza2IpO1xuK1x0XHRnb3RvIG91dDtcbitcdH1cbiBcdGxvY2FsX2JoX2Rpc2FibGUoKTtcbiAjaWYgSVNfRU5BQkxFRChDT05GSUdfSVBWNilcbiBcdGlmIChzay1cdTAwM2Vza19mYW1pbHkgPT0gQUZfSU5FVDYpXG5AQCAtNDUsNiArNTAsNyBAQCBzdGF0aWMgdm9pZCBoYW5kbGVfZXNwKHN0cnVjdCBza19idWZmICpza2IsIHN0cnVjdCBzb2NrICpzaylcbiAjZW5kaWZcbiBcdFx0eGZybTRfcmN2X2VuY2FwKHNrYiwgSVBQUk9UT19FU1AsIDAsIFRDUF9FTkNBUF9FU1BJTlRDUCk7XG4gXHRsb2NhbF9iaF9lbmFibGUoKTtcbitvdXQ6XG4gXHRyY3VfcmVhZF91bmxvY2soKTtcbiB9XG4gXG5AQCAtNTE1LDcgKzUyMSw4IEBAIHN0YXRpYyB2b2lkIGVzcGludGNwX2Nsb3NlKHN0cnVjdCBzb2NrICpzaywgbG9uZyB0aW1lb3V0KVxuIFx0c3RycF9zdG9wKFx1MDAyNmN0eC1cdTAwM2VzdHJwKTtcbiBcbiBcdHNrLVx1MDAzZXNrX3Byb3QgPSBcdTAwMjZ0Y3BfcHJvdDtcbi1cdGJhcnJpZXIoKTtcbitcbitcdHN5bmNocm9uaXplX3JjdSgpO1xuIFxuIFx0ZGlzYWJsZV93b3JrX3N5bmMoXHUwMDI2Y3R4LVx1MDAzZXdvcmspO1xuIFx0c3RycF9kb25lKFx1MDAyNmN0eC1cdTAwM2VzdHJwKTtcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuYyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5pbmRleCBlYjFiNmY2NzczOWUxLi41Y2Q2ZDQzMTY0ZGJjIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV9uYXRfa2VlcGFsaXZlLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jXG5AQCAtMTU1LDI1ICsxNTUsNTAgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV9zZW5kKHN0cnVjdCBuYXRfa2VlcGFsaXZlICprYSlcbiBcdH1cbiB9XG4gXG4rZW51bSB7XG4rXHROQVRfS0VFUEFMSVZFX0JBVENIX1NJWkUgPSAxNixcbitcdE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTCA9IDEsXG4rfTtcbitcbiBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCB7XG4rXHRzdHJ1Y3QgeGZybV9zdGF0ZSAqYmF0Y2hbTkFUX0tFRVBBTElWRV9CQVRDSF9TSVpFXTtcbitcdHVuc2lnbmVkIGludCBucjtcbiBcdHRpbWU2NF90IG5leHRfcnVuO1xuIFx0dGltZTY0X3Qgbm93O1xuIH07XG4gXG4tc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbitzdGF0aWMgaW50IG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0KHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiB7XG4gXHRzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4ID0gcHRyO1xuK1xuK1x0aWYgKCFSRUFEX09OQ0UoeC1cdTAwM2VuYXRfa2VlcGFsaXZlX2ludGVydmFsKSlcbitcdFx0cmV0dXJuIDA7XG4rXG4rXHRpZiAoY3R4LVx1MDAzZW5yID09IEFSUkFZX1NJWkUoY3R4LVx1MDAzZWJhdGNoKSlcbitcdFx0cmV0dXJuIE5BVF9LRUVQQUxJVkVfQkFUQ0hfRlVMTDtcbitcbitcdHhmcm1fc3RhdGVfaG9sZCh4KTtcbitcdGN0eC1cdTAwM2ViYXRjaFtjdHgtXHUwMDNlbnIrK10gPSB4O1xuK1x0cmV0dXJuIDA7XG4rfVxuK1xuK3N0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUoc3RydWN0IHhmcm1fc3RhdGUgKngsXG4rXHRcdFx0XHQgICAgICBzdHJ1Y3QgbmF0X2tlZXBhbGl2ZV93b3JrX2N0eCAqY3R4KVxuK3tcbiBcdGJvb2wgc2VuZF9rZWVwYWxpdmUgPSBmYWxzZTtcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlIGthO1xuLVx0dGltZTY0X3QgbmV4dF9ydW47XG4rXHR0aW1lNjRfdCBuZXh0X3J1biA9IDA7XG4gXHR1MzIgaW50ZXJ2YWw7XG4gXHRpbnQgZGVsdGE7XG4gXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitcbitcdGlmICh4LVx1MDAzZWttLnN0YXRlID09IFhGUk1fU1RBVEVfREVBRClcbitcdFx0Z290byBvdXQ7XG4rXG4gXHRpbnRlcnZhbCA9IHgtXHUwMDNlbmF0X2tlZXBhbGl2ZV9pbnRlcnZhbDtcbiBcdGlmICghaW50ZXJ2YWwpXG4tXHRcdHJldHVybiAwO1xuLVxuLVx0c3Bpbl9sb2NrKFx1MDAyNngtXHUwMDNlbG9jayk7XG4rXHRcdGdvdG8gb3V0O1xuIFxuIFx0ZGVsdGEgPSAoaW50KShjdHgtXHUwMDNlbm93IC0geC1cdTAwM2VsYXN0dXNlZCk7XG4gXHRpZiAoZGVsdGEgXHUwMDNjIGludGVydmFsKSB7XG5AQCAtMTg3LDE0ICsyMTIsMTQgQEAgc3RhdGljIGludCBuYXRfa2VlcGFsaXZlX3dvcmtfc2luZ2xlKHN0cnVjdCB4ZnJtX3N0YXRlICp4LCBpbnQgY291bnQsIHZvaWQgKnB0cilcbiBcdFx0c2VuZF9rZWVwYWxpdmUgPSB0cnVlO1xuIFx0fVxuIFxuLVx0c3Bpbl91bmxvY2soXHUwMDI2eC1cdTAwM2Vsb2NrKTtcbitvdXQ6XG4rXHRzcGluX3VubG9ja19iaChcdTAwMjZ4LVx1MDAzZWxvY2spO1xuIFxuIFx0aWYgKHNlbmRfa2VlcGFsaXZlKVxuIFx0XHRuYXRfa2VlcGFsaXZlX3NlbmQoXHUwMDI2a2EpO1xuIFxuLVx0aWYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bilcbitcdGlmIChuZXh0X3J1biBcdTAwMjZcdTAwMjYgKCFjdHgtXHUwMDNlbmV4dF9ydW4gfHwgbmV4dF9ydW4gXHUwMDNjIGN0eC1cdTAwM2VuZXh0X3J1bikpXG4gXHRcdGN0eC1cdTAwM2VuZXh0X3J1biA9IG5leHRfcnVuO1xuLVx0cmV0dXJuIDA7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIG5hdF9rZWVwYWxpdmVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG5AQCAtMjAyLDEzICsyMjcsMjMgQEAgc3RhdGljIHZvaWQgbmF0X2tlZXBhbGl2ZV93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbiBcdHN0cnVjdCBuYXRfa2VlcGFsaXZlX3dvcmtfY3R4IGN0eDtcbiBcdHN0cnVjdCB4ZnJtX3N0YXRlX3dhbGsgd2FsaztcbiBcdHN0cnVjdCBuZXQgKm5ldDtcbitcdGludCBlcnIsIGk7XG4gXG4gXHRjdHgubmV4dF9ydW4gPSAwO1xuIFx0Y3R4Lm5vdyA9IGt0aW1lX2dldF9yZWFsX3NlY29uZHMoKTtcbiBcbiBcdG5ldCA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgbmV0LCB4ZnJtLm5hdF9rZWVwYWxpdmVfd29yay53b3JrKTtcbiBcdHhmcm1fc3RhdGVfd2Fsa19pbml0KFx1MDAyNndhbGssIElQUFJPVE9fRVNQLCBOVUxMKTtcbi1cdHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19zaW5nbGUsIFx1MDAyNmN0eCk7XG4rXHRkbyB7XG4rXHRcdGN0eC5uciA9IDA7XG4rXHRcdGVyciA9IHhmcm1fc3RhdGVfd2FsayhuZXQsIFx1MDAyNndhbGssIG5hdF9rZWVwYWxpdmVfd29ya19jb2xsZWN0LCBcdTAwMjZjdHgpO1xuK1x0XHRsb2NhbF9iaF9kaXNhYmxlKCk7XG4rXHRcdGZvciAoaSA9IDA7IGkgXHUwMDNjIGN0eC5ucjsgaSsrKSB7XG4rXHRcdFx0bmF0X2tlZXBhbGl2ZV93b3JrX3NpbmdsZShjdHguYmF0Y2hbaV0sIFx1MDAyNmN0eCk7XG4rXHRcdFx0eGZybV9zdGF0ZV9wdXQoY3R4LmJhdGNoW2ldKTtcbitcdFx0fVxuK1x0XHRsb2NhbF9iaF9lbmFibGUoKTtcbitcdH0gd2hpbGUgKGVyciA9PSBOQVRfS0VFUEFMSVZFX0JBVENIX0ZVTEwpO1xuIFx0eGZybV9zdGF0ZV93YWxrX2RvbmUoXHUwMDI2d2FsaywgbmV0KTtcbiBcdGlmIChjdHgubmV4dF9ydW4pXG4gXHRcdHNjaGVkdWxlX2RlbGF5ZWRfd29yayhcdTAwMjZuZXQtXHUwMDNleGZybS5uYXRfa2VlcGFsaXZlX3dvcmssXG5kaWZmIC0tZ2l0IGEvbmV0L3hmcm0veGZybV9vdXRwdXQuYyBiL25ldC94ZnJtL3hmcm1fb3V0cHV0LmNcbmluZGV4IGNjMzVjMmZjYmJlMDkuLmUzMDViYTMyZTM1NmIgMTAwNjQ0XG4tLS0gYS9uZXQveGZybS94ZnJtX291dHB1dC5jXG4rKysgYi9uZXQveGZybS94ZnJtX291dHB1dC5jXG5AQCAtNjM2LDEwICs2MzYsOCBAQCBzdGF0aWMgaW50IHhmcm1fZGV2X2RpcmVjdF9vdXRwdXQoc3RydWN0IHNvY2sgKnNrLCBzdHJ1Y3QgeGZybV9zdGF0ZSAqeCxcbiBcdG5mX3Jlc2V0X2N0KHNrYik7XG4gXG4gXHRlcnIgPSBza2JfZHN0KHNrYiktXHUwMDNlb3BzLVx1MDAzZWxvY2FsX291dChuZXQsIHNrLCBza2IpO1xuLVx0aWYgKHVubGlrZWx5KGVyciAhPSAxKSkge1xuLVx0XHRrZnJlZV9za2Ioc2tiKTtcbitcdGlmICh1bmxpa2VseShlcnIgIT0gMSkpXG4gXHRcdHJldHVybiBlcnI7XG4tXHR9XG4gXG4gXHQvKiBJbiB0cmFuc3BvcnQgbW9kZSwgbmV0d29yayBkZXN0aW5hdGlvbiBpc1xuIFx0ICogZGlyZWN0bHkgcmVhY2hhYmxlLCB3aGlsZSBpbiB0dW5uZWwgbW9kZSxcbmRpZmYgLS1naXQgYS9uZXQveGZybS94ZnJtX3VzZXIuYyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5pbmRleCBkNmRiNjMzMDRiYTZiLi42MjY2YTkyY2YzMDIwIDEwMDY0NFxuLS0tIGEvbmV0L3hmcm0veGZybV91c2VyLmNcbisrKyBiL25ldC94ZnJtL3hmcm1fdXNlci5jXG5AQCAtOTQwLDcgKzk0MCw3IEBAIHN0YXRpYyBzdHJ1Y3QgeGZybV9zdGF0ZSAqeGZybV9zdGF0ZV9jb25zdHJ1Y3Qoc3RydWN0IG5ldCAqbmV0LFxuIFx0aWYgKChlcnIgPSBhdHRhY2hfYXV0aF90cnVuYyhcdTAwMjZ4LVx1MDAzZWFhbGcsIFx1MDAyNngtXHUwMDNlcHJvcHMuYWFsZ28sXG4gXHRcdFx0XHQgICAgIGF0dHJzW1hGUk1BX0FMR19BVVRIX1RSVU5DXSwgZXh0YWNrKSkpXG4gXHRcdGdvdG8gZXJyb3I7XG4tXHRpZiAoIXgtXHUwMDNlcHJvcHMuYWFsZ28pIHtcbitcdGlmICgheC1cdTAwM2VhYWxnKSB7XG4gXHRcdGlmICgoZXJyID0gYXR0YWNoX2F1dGgoXHUwMDI2eC1cdTAwM2VhYWxnLCBcdTAwMjZ4LVx1MDAzZXByb3BzLmFhbGdvLFxuIFx0XHRcdFx0ICAgICAgIGF0dHJzW1hGUk1BX0FMR19BVVRIXSwgZXh0YWNrKSkpXG4gXHRcdFx0Z290byBlcnJvcjtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM2OjQ4LjU3MTUxMzUwOVoiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMTY1MTI2MjI3NywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLTVNBTiBGdXp6aW5nIFNlc3Npb24gQXNzZXNzbWVudCoqXG5cbk9rYXksIGxldCdzIGFzc2VzcyB0aGlzIHBhdGNoIHNlcmllcy4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIGRldGVybWluZSBpZiB0aGVzZSBjaGFuZ2VzIHdhcnJhbnQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uLCBzaW5jZSBLTVNBTiBpcyBzcGVjaWZpY2FsbHkgZGVzaWduZWQgdG8gY2F0Y2ggdXNlcyBvZiB1bmluaXRpYWxpemVkIG1lbW9yeS4gTGV0J3MgZGlnIGluLlxuXG5UaGUgZmlyc3QgcGF0Y2ggdG91Y2hlcyBgbmV0L2lwdjYvYWg2LmNgLiBJdCBsb29rcyBsaWtlIGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgZ290IGEgYm91bmRzIGNoZWNrIGFkZGVkIHRvIGl0LiBCYXNpY2FsbHksIGl0J3MgYSB2YWxpZGF0aW9uIGZpeCBwcmV2ZW50aW5nIG91dC1vZi1ib3VuZHMgcmVhZHMsIHdoaWNoIGlzIGdvb2QsIGJ1dCBpdCBkb2Vzbid0IHNjcmVhbSBcInVuaW5pdGlhbGl6ZWQgbWVtb3J5IGxlYWtcIiB0byBtZS4gTW92aW5nIG9uLCBgaXB2Nl9jbGVhcl9tdXRhYmxlX29wdGlvbnNgIGp1c3QgaGFuZGxlcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoYXQgZnVuY3Rpb24uXG5cbk5leHQsIHdlIGhhdmUgYG5ldC9pcHY2L3hmcm02X2lucHV0LmNgLCB3aGljaCBpcyBhbHNvIGEgYm91bmRzIGNoZWNrLiBJdCdzIHRpZ2h0ZW5pbmcgdXAgYSBjb25kaXRpb24gdG8gcHJldmVudCBpc3N1ZXMsIGJ1dCBzdGlsbCBkb2Vzbid0IGFwcGVhciB0byBiZSBhIEtNU0FOIHRhcmdldC5cblxuVGhlIHRoaXJkIHBhdGNoLCBgbmV0L3hmcm0vZXNwaW50Y3AuY2AsIGZpeGVzIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGFuZCBhZGRyZXNzZXMgc29tZSB1c2UtYWZ0ZXItZnJlZSBhbmQgY29uY3VycmVuY3kgaXNzdWVzLiBTcGVjaWZpY2FsbHksIGl0IGFkZHMgYSBjaGVjayBmb3IgYCFza2ItXHUwMDNlZGV2YCBhbmQgc3dhcHMgb3V0IGBiYXJyaWVyKClgIHdpdGggYHN5bmNocm9uaXplX3JjdSgpYC4gSW1wb3J0YW50IGZpeGVzLCBidXQgbm90IHJlbGF0ZWQgdG8gdW5pbml0aWFsaXplZCBtZW1vcnkuXG5cblRoZW4sIHRoZXJlJ3MgYG5ldC94ZnJtL3hmcm1fbmF0X2tlZXBhbGl2ZS5jYCwgd2hpY2ggc2VlbXMgdG8gYmUgYWxsIGFib3V0IGNvbmN1cnJlbmN5LCBsb2NraW5nLCBhbmQgdXNlLWFmdGVyLWZyZWUgc2NlbmFyaW9zLiBJdCByZXN0cnVjdHVyZXMgd29yayBwcm9jZXNzaW5nIHVzaW5nIGEgYGJhdGNoYCBhcnJheSwgcmVwbGFjZXMgYHNwaW5fbG9ja2Agd2l0aCBgc3Bpbl9sb2NrX2JoYCwgYW5kIGFkZHMgYHhmcm1fc3RhdGVfaG9sZGAgYW5kIGB4ZnJtX3N0YXRlX3B1dGAuIFRoaXMgaXMgc29saWQsIGJ1dCBhZ2FpbiwgZG9lc24ndCBzZWVtIHRvIGJlIGEgS01TQU4gaXNzdWUgc3BlY2lmaWNhbGx5LlxuXG5JbiBgbmV0L3hmcm0veGZybV9vdXRwdXQuY2AsIHRoZXJlJ3MgYSBmaXggZm9yIGRvdWJsZSBmcmVlcyBvciBtZW1vcnkgbGVha3MuIFRoZSBwYXRjaCByZW1vdmVzIGEgYGtmcmVlX3NrYihza2IpYCBjYWxsIHVuZGVyIGNlcnRhaW4gZXJyb3IgY29uZGl0aW9ucy4gVGhpcyBpcyBnb29kIHNhbml0YXRpb24sIGJ1dCBub3QgYSBLTVNBTiBmbGFnLlxuXG5MYXN0bHksIGBuZXQveGZybS94ZnJtX3VzZXIuY2AgaGFzIGEgc2ltcGxlIGxvZ2ljIGJ1ZyBmaXguIEl0IGNoYW5nZXMgYSBjb25kaXRpb25hbCBjaGVjaywgYnV0IHRoaXMgYWdhaW4gaGFzIG5vdGhpbmcgdG8gZG8gd2l0aCB1bmluaXRpYWxpemVkIG1lbW9yeS5cblxuU28sIHNjYW5uaW5nIHRoZXNlIGNoYW5nZXMsIEkgZG9uJ3Qgc2VlIGFueSBvYnZpb3VzIEtNU0FOIGZsYWdzLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgYmVpbmcgc2VudCB0byB1c2VyIHNwYWNlLCBubyBuZXcgYWxsb2NhdGlvbnMgb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aG91dCBpbml0aWFsaXphdGlvbiwgYW5kIG5vIGNvbmRpdGlvbmFsIGxvZ2ljIHRoYXQgZGVwZW5kcyBvbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlcy4gV2UncmUgbWFpbmx5IHNlZWluZyBmaXhlcyBmb3Igb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcywgdXNlLWFmdGVyLWZyZWUgaXNzdWVzLCBsb2NraW5nIGJ1Z3MsIGFuZCBsb2dpYyBlcnJvcnMuIFRoZXNlIGFyZSB0aGUga2luZHMgb2YgaXNzdWVzIHRoYXQgS0FTQU4sIExPQ0tERVAsIGFuZCB0aGUgdXN1YWwgc3VzcGVjdHMgYXJlIGRlc2lnbmVkIHRvIGNhdGNoLlxuXG5MZXQncyBkbyBhIHF1aWNrIGRvdWJsZS1jaGVjayBvbiBgbmV0L2lwdjYvYWg2LmNgLiBUaGF0IGBpcHY2X3JlYXJyYW5nZV9ydGhkcmAgZnVuY3Rpb24gd2l0aCB0aGUgYm91bmRzIGNoZWNrLi4uIGBzZWdtZW50c19sZWZ0IFx1MDAzZSBzZWdtZW50c2AuLi4gdGhhdCBjbGVhcmx5IHByZXZlbnRzIHJlYWRpbmcgb3V0c2lkZSB0aGUgYGFkZHJzYCBhcnJheS4gIEEgS0FTQU4gd291bGQgZGVmaW5pdGVseSBzZWUgdGhhdC5cblxuQW5kIHRoYXQgYG5hdF9rZWVwYWxpdmVfd29ya19jdHhgIGluIGBuZXQveGZybS94ZnJtX25hdF9rZWVwYWxpdmUuY2Agd2l0aCBpdHMgYGJhdGNoYCBhcnJheS4uLiB0aGUgYXJyYXkgaXRzZWxmIGlzIHBvcHVsYXRlZCBhbmQgdXNlZCBjb3JyZWN0bHkuIFRoZXJlJ3Mgbm8gbHVya2luZyB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSB0aGVyZS5cblxuQ29uY2x1c2lvbjogTm8sIHdlICpkb24ndCogbmVlZCBhIGRlZGljYXRlZCBLTVNBTiBzZXNzaW9uIGZvciB0aGlzLiBUaGVzZSBwYXRjaGVzIGFkZHJlc3MgdnVsbmVyYWJpbGl0aWVzIHRoYXQgYXJlIHdlbGwtY292ZXJlZCBieSBleGlzdGluZyB0b29scy4gTXkgcmVhc29uaW5nIGlzIHNvbGlkLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTQ2LCJPdXRwdXRUb2tlbnMiOjE2MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjk0MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTE4VDEwOjM3OjAwLjIyMjc4MDE5NloiLCJTZXEiOjUwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI0MTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggc2VyaWVzIGNvbnNpc3RzIG9mIGZpeGVzIGZvciBvdXQtb2YtYm91bmRzIGFjY2Vzc2VzIChpbiBpcHY2X3JlYXJyYW5nZV9ydGhkciBhbmQgeGZybTZfaW5wdXRfYWRkciksIE5VTEwgcG9pbnRlciBkZXJlZmVyZW5jZXMgKGluIGhhbmRsZV9lc3ApLCB1c2UtYWZ0ZXItZnJlZS9jb25jdXJyZW5jeSBpc3N1ZXMgKGluIGVzcGludGNwX2Nsb3NlIGFuZCB4ZnJtX25hdF9rZWVwYWxpdmUpLCBkb3VibGUgZnJlZSAoaW4geGZybV9kZXZfZGlyZWN0X291dHB1dCksIGFuZCBsb2dpYyBlcnJvcnMgKGluIHhmcm1fc3RhdGVfY29uc3RydWN0KS4gTm8gbmV3IHN0cnVjdHVyZXMgYXJlIHNlbnQgdG8gdXNlciBzcGFjZSwgYW5kIG5vIG5ldyB1bmluaXRpYWxpemVkIG1lbW9yeSByaXNrcyBvciBpbmZvLWxlYWtzIGFyZSBpbnRyb2R1Y2VkLiBTdGFuZGFyZCBLQVNBTiwgTE9DS0RFUCwgYW5kIG90aGVyIGJ1ZyBkZXRlY3RvcnMgYXJlIGZ1bGx5IHN1ZmZpY2llbnQgdG8gY292ZXIgdGhlc2UgY2hhbmdlcy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBzZXJpZXMgY29uc2lzdHMgb2YgZml4ZXMgZm9yIG91dC1vZi1ib3VuZHMgYWNjZXNzZXMgKGluIGlwdjZfcmVhcnJhbmdlX3J0aGRyIGFuZCB4ZnJtNl9pbnB1dF9hZGRyKSwgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlcyAoaW4gaGFuZGxlX2VzcCksIHVzZS1hZnRlci1mcmVlL2NvbmN1cnJlbmN5IGlzc3VlcyAoaW4gZXNwaW50Y3BfY2xvc2UgYW5kIHhmcm1fbmF0X2tlZXBhbGl2ZSksIGRvdWJsZSBmcmVlIChpbiB4ZnJtX2Rldl9kaXJlY3Rfb3V0cHV0KSwgYW5kIGxvZ2ljIGVycm9ycyAoaW4geGZybV9zdGF0ZV9jb25zdHJ1Y3QpLiBObyBuZXcgc3RydWN0dXJlcyBhcmUgc2VudCB0byB1c2VyIHNwYWNlLCBhbmQgbm8gbmV3IHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHJpc2tzIG9yIGluZm8tbGVha3MgYXJlIGludHJvZHVjZWQuIFN0YW5kYXJkIEtBU0FOLCBMT0NLREVQLCBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycyBhcmUgZnVsbHkgc3VmZmljaWVudCB0byBjb3ZlciB0aGVzZSBjaGFuZ2VzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[1] Phase: Succeeded StartedAt: 2026-08-18 10:37:11 +0000 UTC FinishedAt: 2026-08-18 10:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-18 10:37:11 +0000 UTC FinishedAt: 2026-08-18 10:37:11 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2] Phase: Succeeded StartedAt: 2026-08-18 10:37:11 +0000 UTC FinishedAt: 2026-08-18 14:20:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-18 10:37:11 +0000 UTC FinishedAt: 2026-08-18 14:20:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-18 10:37:11 +0000 UTC FinishedAt: 2026-08-18 10:37:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-18 10:37:11 +0000 UTC FinishedAt: 2026-08-18 10:37:15 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownlgqw/series-workflownlgqw-convert-artifact-3351678988/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-18 10:37:21 +0000 UTC FinishedAt: 2026-08-18 10:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-18 10:37:21 +0000 UTC FinishedAt: 2026-08-18 10:53:42 +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:*61fec29b-c3eb-4d3a-be3e-cb6bd1ad2cf3,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-workflownlgqw/series-workflownlgqw-convert-artifact-3351678988/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": "b31452e1-8e8f-460e-b743-6c8701f64f8a", "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-workflownlgqw/series-workflownlgqw-build-action-3731183162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-18 10:37:21 +0000 UTC FinishedAt: 2026-08-18 10:53:32 +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:*61fec29b-c3eb-4d3a-be3e-cb6bd1ad2cf3,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-workflownlgqw/series-workflownlgqw-convert-artifact-3351678988/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": "b31452e1-8e8f-460e-b743-6c8701f64f8a", "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-workflownlgqw/series-workflownlgqw-build-action-3731183162/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-18 10:53:42 +0000 UTC FinishedAt: 2026-08-18 10:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-18 10:53:42 +0000 UTC FinishedAt: 2026-08-18 10:53:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-18 10:53:42 +0000 UTC FinishedAt: 2026-08-18 10:53:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-18 10:53:42 +0000 UTC FinishedAt: 2026-08-18 10:53:49 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflownlgqw/series-workflownlgqw-convert-artifact-2282620747/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-18 10:53:52 +0000 UTC FinishedAt: 2026-08-18 10:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-18 10:53:52 +0000 UTC FinishedAt: 2026-08-18 10:55:45 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b31452e1-8e8f-460e-b743-6c8701f64f8a,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-workflownlgqw/series-workflownlgqw-build-action-3731183162/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-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-18 10:55:54 +0000 UTC FinishedAt: 2026-08-18 10:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-18 10:55:54 +0000 UTC FinishedAt: 2026-08-18 10:55:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-18 10:55:54 +0000 UTC FinishedAt: 2026-08-18 11:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-18 10:55:54 +0000 UTC FinishedAt: 2026-08-18 11:15:02 +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:*61fec29b-c3eb-4d3a-be3e-cb6bd1ad2cf3,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-workflownlgqw/series-workflownlgqw-convert-artifact-2282620747/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": "1d09cfcc-4d4e-4aad-9e81-2788973a82ea", "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-workflownlgqw/series-workflownlgqw-build-action-864824303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-18 10:55:54 +0000 UTC FinishedAt: 2026-08-18 11:14:52 +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:*61fec29b-c3eb-4d3a-be3e-cb6bd1ad2cf3,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-workflownlgqw/series-workflownlgqw-convert-artifact-2282620747/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": "1d09cfcc-4d4e-4aad-9e81-2788973a82ea", "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-workflownlgqw/series-workflownlgqw-build-action-864824303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-18 11:15:02 +0000 UTC FinishedAt: 2026-08-18 11:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-18 11:15:02 +0000 UTC FinishedAt: 2026-08-18 11:15:02 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-18 11:15:02 +0000 UTC FinishedAt: 2026-08-18 11:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-18 11:15:02 +0000 UTC FinishedAt: 2026-08-18 11:16:56 +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:*1d09cfcc-4d4e-4aad-9e81-2788973a82ea,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-workflownlgqw/series-workflownlgqw-build-action-864824303/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-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 14:20:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 14:20:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"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:*b31452e1-8e8f-460e-b743-6c8701f64f8a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1d09cfcc-4d4e-4aad-9e81-2788973a82ea,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-workflownlgqw/series-workflownlgqw-build-action-3731183162/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-workflownlgqw/series-workflownlgqw-build-action-864824303/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 11:17:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 11:17:12 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"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-workflownlgqw/series-workflownlgqw-convert-artifact-1419837412/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 11:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 11:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-18 11:17:06 +0000 UTC FinishedAt: 2026-08-18 11:17:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-18 11:17:17 +0000 UTC FinishedAt: 2026-08-18 14:20:52 +0000 UTC Input: nil Output: nil --------- Name: series-workflownlgqw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["ah6_input","ah6_output","xfrm6_input_addr","espintcp_rcv","espintcp_close","xfrm_output","xfrm_add_sa","nat_keepalive_work"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"3aa1dcaa4f6f5ae08936491e08bd456f331f2d40","config_name":"upstream-apparmor-kasan.config","enable_configs":["INET6_AH","INET_ESPINTCP","XFRM_USER"],"series_id":"1356536f-d75c-4668-aaa8-2262a2ec1354","tree_name":"net-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netdev/net-next.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-18 11:17:17 +0000 UTC FinishedAt: 2026-08-18 14:20:43 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*b31452e1-8e8f-460e-b743-6c8701f64f8a,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*1d09cfcc-4d4e-4aad-9e81-2788973a82ea,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-workflownlgqw/series-workflownlgqw-build-action-3731183162/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-workflownlgqw/series-workflownlgqw-build-action-864824303/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-workflownlgqw/series-workflownlgqw-convert-artifact-1419837412/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,}